学号2013052108论文题目:基于S3C2410处理器的A/D转换驱动程序设计课程:ARM嵌入式Linux系统开发与设计学院:信息工程学院专业:计算机科学与技术班级:2013级专升本班作者姓名:张清芸1目录摘要:.............................................................21.绪论.............................................................21.1设计目的....................................................21.2设计要求....................................................22.系统总体方案....................................................32.1开发系统平台构建............................................32.2系统开发流程................................................52.3应用程序流程................................................52.4Linux操作系统及其常用命令...................................63.嵌入式操作系统A/D转换及工作原理................................73.1A/D转换的实现及工作原理.....................................73.2实现程序的主要函数..........................................84.vivi、Linux内核、cramfs文件系统的烧写..........................104.1vivi的烧写.................................................104.3烧写cramfs文件系统.........................................115.交叉编译.......................................................125.1Makefile文件编写...........................................125.2交叉编译的过程.............................................126.程序源代码设计与调试............................................126.1程序源代码设计.............................................126.2运行调试...................................................137.总结...........................................................13附录一:..........................................................14参考文献.......................................................272基于S3C2410处理器的A/D转换驱动程序设计张清芸(信息工程学院13级专升本班2013052108)摘要:本文基于S3C2410处理器的开发板上,嵌入式Linux系统环境下,设计A/D转换器,实现模拟信号向数字信号的转化。对vivi、Linux内核、cramfs文件系统的烧写,交叉编译的一系列过程。分辨率反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。具有很高的应用价值。关键字:S3C2410处理器;cramfs;交叉编译1.绪论1.1设计目的(1)了解PC机模拟Linux环境下,嵌入式系统开发方法和流程。(2)熟悉Linux平台使用技巧以及Linux环境操作命令。(3)通过设计掌握Linux嵌入式系统A\D转换器实验,以及相关程序代码的编写。1.2设计要求在Samsung公司S3C2410处理器的开发板上,嵌入式Linux系统环境下,设计A/D转换器,实现模拟信号向数字信号的转化。在转化过程中需要的指标如下:(1)分辨率分辨率反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n位A/D能反应1/2n满量程的模拟输入电平。由于分辨率直接与转换器的位数有关,所以一般也可简单地用数字量的位数来表示分辨率,即n位二进制数,最低位所具有的权值,就是它的分辨率。值得注意的是,分辨率与精度是两个不同的概念,不要把两者相混淆。即使分辨率很高,也可能由于温度漂移、线性度等原因,而使其精度不够高。(2)精度精度有绝对精度(AbsoluteAccuracy)和相对精度(RelativeAccuracy)两种表示方法。①绝对误差:在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。我们把它们之间的差的最大值,定义为“绝对误差”。通常以数字3量的最小有效位(LSB)的分数值来表示绝对误差,例如:±1LSB等。绝对误差包括量化误差和其它所有误差。②相对误差:是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。例如,满量程为10V,10位A/D芯片,若其绝对精度为±1/2LSB,则其最小有效位的量化单位:9.77mV,其绝对精度为=4.88mV,其相对精度为0.048%。③转换时间:转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。转换时间的倒数称为转换速率。例如AD570的转换时间为25us,其转换速率为40KHz。④电源灵敏度:电源灵敏度是指A/D转换芯片的供电电源的电压发生变化时,产生的转换误差。一般用电源电压变化1%时相当的模拟量变化的百分数来表示。⑤量程:量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。例如,单极性量程为0~+5V,0~+10V,0~+20V;双极性量程为-5~+5V,-10~+10V。⑥输出逻辑电平:多数A/D转换器的输出逻辑电平与TTL电平兼容。在考虑数字量输出与微处理的数据总线接口时,应注意是否要三态逻辑输出,是否要对数据进行锁存等。⑦工作温度范围:由于温度会对比较器、运算放大器、电阻网络等产生影响,故只在一定的温度范围内才能保证额定精度指标。一般A/D转换器的工作温度范围为(0~700C),军用品的工作温度范围为(-55~+1250C)设计过程中要求考虑以上因素。2.系统总体方案2.1开发系统平台构建2.1.1开发平台硬件组成4①UP-NETARM2410-S核心模块资源*基于ARM9架构的嵌入式芯片S3C2410,主频202MHz*64MBSDRAM*64MBFLASH②UP-NETARM2410-S主板资源*8寸640*480TFT真彩LCD*触摸屏*4个主USB口、1个从USB口*2个JTAG接口*一个100M网卡,预留一个100M网卡*两个串口、一个485接口*CAN总线接口*红外通信收发器*8通道10位AD转换模块*2通道10位DA转换模块*PCMCIA接口*SD/MMC接口*IDE硬盘接口*笔记本硬盘接口*CF卡接口*IC卡接口*直流电机、步进电机*8个用户自定义LED数码管*17键键盘*PS2鼠标、键盘接口*高性能立体声音频模块,支持放音、录音*麦克风接入*一个168Pin的扩展插座,硬件可无限扩展2.1.2软件系统组成*提供完整的Linux、WinCE、μC/OS-II操作系统移植5*bootloader:vivi*操作系统:linux2.4.x*驱动程序:提供所有板级设备的驱动程序2.2系统开发流程图2-2系统开发流程图2.3应用程序流程图2-3应用程序流程图62.4Linux操作系统及其常用命令在所有的操作系统中,Linux是一个发展最快、应用最为广泛的操作系统。Linux本身的种种特性使其成为嵌入式开发中的首选。在进入市场的头两年中,嵌入式Linux设计通过广泛应用获得了巨大的成功。随着嵌入式Linux的成熟,提供更小的尺寸和更多类型的处理器支持。很多嵌入式Linux还改造了原来的Linux版本。如:RTLinux通过改造内核实现了实时的Linux;RTAI、Kurt和Linux/RK也提供实时能力;还有uCLinux去掉了Linux的MMU(内存管理单元),能够支持没有MMU的处理器等。Linux常用命令:基本命令:ls以默认方式显示当前目录文件列表ls-a显示所有文件包括隐藏文件ls-l显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行cd〈目录〉切换到当前目录下的子目录cd/切换到根目录cd..切换到到上一级目录rm〈file〉删除某一个文件rm-rfdir删除当前目录下叫dir的整个目录(包括下面的文件)cp〈source〉〈target〉将文件source复制为targetcp/root/source.将/root下的文件source复制到当前目录mv〈source〉〈target〉将文件source更名为targetcat〈file〉显示文件的内容,和DOS的type相同find/path-name〈file〉在/path目录下查找看是否有文件filevi〈file〉编辑文件filemanls读取关于ls命令的帮助startx运行Linux图形有环境shutdown-hnow关闭计算机reboot重新启动计算机扩展命令tar压缩、解压文件7解压文件tar文件:tarxfxxx.targz文件:tarxzvfxxx.tar.gzbz2文件:tarxjvfxxx.tar.bz2压缩文件tar文件:tarcfxxx.tar/pathgz文件:tarczvfxxx.tar.gz/pathbz2文件:tarcjvfxxx.tar.bz2/pathmount-text2/dev/hda1/mnt把/dev/hda1装载到/mntmount-tiso9660/dev/cdrom/mnt/cdrom将光驱加载到/mnt/cdrommount-tnfs192.168.1.1:/sharedir/mnt将nfs服务的共享目录sharedir加载到/mnt/nfsumount/dev/hda1将/dev/hda1设备卸载,设备必须处于空闲状态ifconfigeth0192.168.1.1netmask255.255.255.0设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0ping163.com测试与163.com的连接ping202.96.128.68测试与IP:202.96.128.68的连接3.嵌入式操作系统A/D转换及工作原理3.1A/D转换的实现及工作原理逐次逼近型的A/D转换器。逐次逼近型(也称逐位比较式)的A/D转换器,应用比积分型更为广泛,其原理框图如图所示,主要由逐次逼近寄存器SAR、D/A转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR寄存器中的数字量经D/A转换后得到电压Vc与待转换模拟电压V。进行比较。比较时,先从SAR的最高位开始,逐次确定各位的数码应是“1”还是“0”,其工作过程如下:转换前,先将SAR寄存器各位清零。转换开始时,控制逻辑电路先设定SAR寄存器的最高位为“1”,其余位为“0”,此试探值经