ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:729.48KB ,
资源ID:16474492      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16474492.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式课设说明书Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式课设说明书Word文档格式.docx

1、1.1.1 ARM技术 ARM体系结构是业界领先的微处理器体系结构,为系统和软件工程师提供了开发低能耗、高性能消费类和工业产品的硅验证解决方案。这些终端产品涵盖了从汽车和工业监视器到家庭娱乐和移动设备的各个领域。ARM 完整产品线包括微控制器、微处理器、图形处理器、实现软件、单元库、嵌入式内存、高速连接产品、外设以及开发工具。借助于完善的设计服务、培训、支持和维护以及公司的庞大合作伙伴社区,我们提供了一个全面的系统解决方案,为主要电子设备公司提供一条快速可靠的途径将产品推向市场。ARM 是32位嵌入式微处理器的行业领先提供商,已推出各种各样基于通用体系结构的处理器,这些处理器具有高性能和行业领

2、先的功效,而且系统成本也有所降低。1.1.2 s3c2410处理器介绍 S3C2410微处理器是一款由Samsung公司为手持设备设计的低功耗、高度集成的基于ARM920T核的微处理器。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:16KB指令Cache、16KB数据Cache、MMU、外部存储器控制器、LCD控制器(STN和TFT)、NAND Flash控制器、4个DMA通道、3个UART通道、1个I2C总线控制器、1个I2S总线控制器,以及4个PWM定时器和一个内部定时器、通用I/O口、实时时钟、8通道10位ADC和触摸屏接口、USB主、USB从、SD/MMC卡接口等。现在

3、它广泛应用于PDA(Personal Digital Assistant,个人数码助理,一般指掌上电脑)、移动通讯、路由器、工业控制等领域,其内部结构如图1-1所示。为了提高系统运行速度,减少能量损失,ARM920T核微处理器把片上器件按器件工作频率,使用频度分成三个模块,各个模块通过各自总线连接,模块之间采用一种叫总线桥的结构过度。S3C2410中内置的LCD 控制器提供了下列外部接口信号(CPU引脚):VFRAME: LCD 控制器和LCD 驱动器之间的帧同步信号。它通知LCD屏开始显示新的一帧,LCD 控制器在一个完整帧的显示后发出VFRAME 信号。VLINE: LCD 控制器和LCD

4、 驱动器间的同步脉冲信号,LCD 驱动器通过它来将水平移位寄存器中的内容显示到LCD 屏上。LCD 控制器在一整行数据全部传输到LCD 驱动器后发出VLINE 信号。VCLK: LCD 控制器和LCD 驱动器之间的象素时钟信号,LCD 控制器在VCLK的上升沿发送数据,LCD 驱动器在VCLK 的下降沿采样数据。VM: LCD 驱动器所使用的交流信号。LCD 驱动器使用VM 信号改变用于打开或关闭象素的行和列电压的极性。VM 信号在每一帧触发,也可通过编程在一定数量的VLINE 信号后触发。LCD_PWREN:LCD面板电源使能控制信号。VD23:0: LCD 象素数据输出端口。LCD 控制器

5、包含REGBANK, LCDCDMA, VIDPRCS, TIMEGEN和LPC3600。REGBANK 具有17 个可编程寄存器,用于配置LCD 控制器。LCDCDMA为专用的DMA,它可以自动地将显示数据从帧内存中传送到LCD 驱动器中。通过专用DMA,可以实现在不需要CPU 介入的情况下显示数据。VIDPRCS 从LCDCDMA 接收数据,将相应格式(比如48 位单扫描和4 位双扫描显示模式)的数据通过VD23:0发送到LCD的驱动器上。TIMEGEN 包含可编程的逻辑,以支持常见的LCD 驱动器所需要的不同接口时间和速率的要求。TIMEGEN 部分产生VFRAME,VLINE, VCL

6、K, VM 等信号。图1-1 控制器 该图揭示了LCD彩色图像数据在LCD的显示缓存中的存放结构,以及彩色图像数据在LCD液晶屏上是如何显示的规则。320x240像素的8位数据的256彩色LCD屏,显示一屏所需的显示缓存为320x240x8bit,即76800字节,在显示缓存中每个字节,如最右面的图所示,都对应着屏上的一个象素点,因此,8位256彩色显示的显示缓存与LCD屏上的象素点是字节对应的。每个字节中又有RGB格式的区分,既有332的RGB,又有233的RGB格式,这因硬件而定。在彩色图像显示时,首先要给显示缓存区一个首地址,这个地址要在4字节对齐的边界上,而且,需要在SDRAM的4MB

7、字节空间之内。它是通过配置相应的寄存器来实现的。之后,接下来的76800字节,就为显示缓存区,这里的数据会直接显示到LCD屏上去。屏上图像的变化是由于该显示缓存区内数据的变化而产生的。 在了解了8位彩色LCD显示原理之后,通过正确配置S3C2410的LCD控制器相应的寄存器,就能正确启动LCD的显示。请仔细阅读各寄存器的配置项。表1-1 LCD的控制寄存器1的的配置LINECNT:(只读) 这些位反映行计数值27:18 CLKVAL: 确定VCLK的频率17:8 STN:VCLK = HCLK / (CLKVAL x 2) ( CLKVAL2 ) TFT:VCLK = HCLK / (CLKV

8、AL + 1) x 2 ( CLKVAL0 )MMODE: 确定VM的改变速度. 7 0 = 每一帧, 1 = 由 MVAL 定义PNRMODE: 选择显示模式 6:5 00 = 4位双扫描显示模式(STN) 01 = 4位单扫描显示模式(STN) 10 = 8位单扫描显示模式(STN) 11 = TFT显示器 BPPMODE:选择BPP(Bits Per Pixel)模式4:1 0011:STN8位彩色模式 0100:STN12位彩色模式ENVID:LCD视频输出和逻辑的允许与否 0 0 = 不允许,LCD FIFO 清除 1 = 允许 表1-2 LCD的控制寄存器2的的配置VBPD: 31

9、:24 在STNLCD上面应该置0 LINEVAL: 23:14 确定LCD屏的垂直尺寸 VFPD: 13: 6 在STNLCD上面应该置0 VSPW: 5: 0 在STNLCD上面应该置0 WDLY:确定VLINE和VCLK之间的延时 25:19 00 = 16HCLK, 01 = 32 HCLK, 10 = 48 HCLK, 11 = 64 HCLK 确定LCD屏的水平尺寸,HOZVAL值的确定必须满足一行总的字节数是4的倍数。如120点的LCD 的水平尺寸X=120不支持,因为一行包含15个字节,而X=128可以被支持(16个字节),额外的8点将被LCD驱动器放弃. LINEBLANK:

10、31:21 确定行扫描的空闲时间。 LINEBLANK的单位是HCLK X 8。表1-3 LCD的控制寄存器3的的配置表1-4 LCD的控制寄存器4的的配置说明 MVAL 15:8 如果MMODE=1,这两位定义VM信号以什么速度变化 VM Rate = VLINE Rate / ( 2 * MVAL) WLH:7:0 确定VLINE高电平的宽度 2 保留1:0 00 = 16HCLK, 01 = 32 HCLK, 对于STNLCD,需要设置下面几个位: INVVCLK 10 STN/TFT:这个位设置VCLK活动边缘的极性0 = 在VCLK下降沿视频数据被取走1 =在VCLK上升沿视频数据被

11、取走INVVLINE 9 STN/TFT: 这个位设置行脉冲的极性0 = Normal表1-5 LCD的控制寄存器5的的配置 1 = Inverted INVVFRAME 8 STN/TFT: 这个位设置VFRAME脉冲的极性1 = Inverted INVVD 7 STN/TFT: 这个位设置VD (video data)脉冲的极性1 = VD is inverted. INVPWREN 5 STN/TFT: 这个位设置PWREN信号的极性 BSWP 1 STN/TFT: 字节交换控制位0 = Swap Disable1 = Swap Enable HWSWP 0 STN/TFT: 半字交换

12、控制位表1-6 LCD的帧缓冲区开始地址寄存器1的配置LCDBANK: 29:21 指示视频缓冲区在系统存储器的段地址A30:22 LCDBANK在视点移动时不能变化, LCD 帧缓冲区应当与4M区域对齐。LCDBASEU:20:0 指示帧缓冲区。LCDBASEL 20:0 指示在使用双扫描LCD时的低帧存储区的开始地址A21:1 公式如下: LCDBASEL =LCDBASEU + (PAGEWIDTH + OFFSIZE) x (LINEVAL +1) 注:用户通过改变LCDBASEU 和LCDBASEL的值来滚动屏幕,但在帧结束时,不能改变LCDBASEU 和LCDBASEL的值,因为预

13、取下一帧的数据优先于改变帧,如果这时改变帧, 预取的数据将无效和将显示不正确.为了检查LINECNT,中断应当被屏蔽,否则如果在读LINECNT后,任意中断刚好执行,因为ISR的执行,LINECNT的值可能是旧的。LCD的帧缓冲区开始地址寄存器3的的配置说明,它主要是进行虚拟屏幕地址设置。表1-7 LCD的帧缓冲区开始地址寄存器2的配置OFFSIZE:21:11 虚拟屏幕偏移量(半字的数量),该值定义前一显示行的最后的半字和新的显示一行首先的半字之间的距离。PAGEWIDTH:10:0 虚拟屏幕宽度(半字的数量),该值定义帧的观察区域的宽度。 PAGEWIDTH 和OFFSIZE必须在ENVI

14、D = 0时变。LCD的RGB查找表寄存器3的的配置说明。在这三个寄存器中,我们要设定使用的8种红色,8种绿色,4种蓝色。其实,不同红色的差异,是通过时间抖动的算法及帧率控制的方法来实现的。对于绿、蓝也同样。因此,还要设置一下有关抖动模式寄存器。详细请看下面关于初始化S3C2410的LCD控制器的程序。表1-8 LCD的帧缓冲区开始地址寄存器3的配置2 Linux的实验环境的搭建2.1正确安装Redhat9.0操作系统 当安装完linux操作系统后,接下来要安装交叉编译器。启动主机,必须以root用户名登录,在主机的根目录/下,创建linuette目录,如: mkdir /linuette。在

15、/mnt/cdrom目录下找到光盘,将光盘中/实验软件syrj/tools/目录下的RPMS文件夹拷贝到/linuette目录下,打开系统工具下的终端,此时,系统将弹出终端框,在里面改变目录到/linuette/RPMS下,输入如下命令:图2-1 页面显示等待系统安装,如果所有的RPMS内的文件全部正确安装,将会在根目录下的/opt文件夹内生成一个host文件夹,我们所需的交叉编译库就在该目录下。所以,所需的交叉编译环境就搭建好了。由于linux系统在编译驱动程序时,可以用模块的形式来动态加载,这样给实验、调试带来极大的便利,通常的做法是:把编译好的动态模块和应用程序放在主机上的一个共享文件夹

16、内,启动主机的nfs网络文件系统服务,关闭系统的防火墙服务(如果系统安装了该项),用交叉以太网线把主机和实验系统连接。在终端下启动minicom,在实验系统起来之后,利用ifconfig eth0 xxx.xxx.xxx.xxx命令改变实验系统的IP地址,让该地址的前三段和主机的前三段一致,最后的一段,可以选择和主机不重复的小于255的任意值。之后把主机上的共享文件夹挂载到实验系统上的一个目录上。通过相应的命令进行实验或调试。2.2配置NFS网络文件系统首先在LINUX 主机的终端上执行setup,弹出菜单界面后,选中:Firewall configuration,回车,进入系统服务选项菜单,

17、选择NO FIREWALL关闭防火墙(如果安装了防火墙)。然后退出。但是,setup里面会照样显示防火墙设置是HIGH的,这个可以不必理会。之后选中: System services,回车,进入系统服务选项菜单,在其中选中 *nfs ,然后按F12键退出,再选择方向键,退出setup界面,返回到命令提示符下。如下图2-2系统服务显示所示。图2-2系统服务显示利用编辑器打开 /etc/exports文件,将这个默认的空文件修改为只有如下一行内容:(注意中间有空格)/ (rw)然后,保存退出,之后改变目录到/etc/rc.d/init.d/下,执行如下命令:./nfs start终端内输出:Sta

18、rting NFS services: 确定 Starting NFS quotas: 确定Starting NFS daemon:Starting NFS mountd:这样就一切OK了!主机linux下的NFS启动起来。2.3用交叉网线把主机和实验系统连接在终端下输入minicom -s,配置minicom为波特率为115200,无奇偶校验,8bit。之后,在minicom下,给系统上电,系统正常起来后,利用ifconfig eth0 xxx.xxx.xxx.xxx来改变实验系统的IP地址,让该地址的前三段和主机的前三段一致,最后的一段,可以选择和主机不重复的小于255的任意值。例如,主机

19、是192.168.0.100,则实验系统配置为ifconfig eth0 192.168.0.5,之后,利用ping命令,在实验系统上ping 192.168.0.1,看看实验系统能否和主机连上。当连通后,利用mount命令,挂载主机的nfs系统下的共享目录。要mount成功,首先,利用命令chmod 777 /home/nfs 改变/home/nfs文件夹的属性,让其变为可读可写,如果/home目录下没有nfs文件夹,建议创建此文件夹,以后需要挂载的用于调试的驱动模块以及应用程序均放在该文件夹内。之后,在终端中,输入mount o nolock 192.168.0.1:/home/nfs /

20、mnt/yaffs回车,即可完成把主机上的/home/nfs下的文件挂载到实验系统的/mnt/yaffs目录下。图2-3 本地连接IP地址图2-4 更改IP地址的程序界面2.3.1编译内核当选择采用驱动模块和应用程序利用nfs网络文件系统异地调试时,则不需要重新编译内核,仅需要使用交叉编译器编译驱动模块和应用程序,之后利用mount命令把它们所在的文件目录加载到文件系统中。然后使用相关命令进行对驱动模块的安装,调试或卸载。当需要把驱动模块编译进内核,则应在终端的内核目录下输入make menuconfig配置命令,通过选中新加入的驱动模块,保存配置,退出,第一次需要编译,需要键入make de

21、p命令,而后,输入make clean ,最后,输入make zImage命令,编译内核。步骤如下,在系统工具的终端下,切换目录到kernel目录下,然后输入命令:make dep (该命令用于寻找各文件的依存关系)make clean (该命令用于清除以前构造内核时生成的所有目标文件、模块文件和临时文件)make zImage (编译内核中的文件,生成内核)若编译通过则在/arch/arm/boot/目录下生成内核文件zImage。如下图所示。至此,在LINUX 操作系统下,对linux的编译过程应有一个大概的了解。图2-5 驱动命令显示界面(一)2.3.2实验说明1.关于linux-2.4

22、.18.-rm7-pxa1linux-2.4.18.-rm7-pxa1是linux移植到三星S3C2410处理器上的操作系统内核代码。一般在每个目录下,都有一个.depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。 Makefile 重构Linux内核可执行代码的make文件 Documention 有关Linux内核的文档 arch 是内核中与具体CPU和系统结构相关的代码,具体的CPU对应具

23、体的文件夹下的文件。相关的.h文件分别放在include/asm中。在每个CPU的子目录中,又进一步分为boot、mm、kernel、lib等子目录,分别包含与系统引导、内存管理、系统调用等相关的代码。 Drivers 设备的驱动程序。放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如/block 下为块设备驱动程序,比如ide(ide.c)。 Fs文件系统,每个子目录分别支持一个特定的文件系统,例如fat和 ext2。还有一些共同的源程序则用于虚拟文件系统。 Include包含了所有的.h文件。和arch子目录一样,其下都有相应CPU的子目录,而通用的子目录asm则根据系统的配置

24、 “符号连接”到具体的CPU的专用子目录上。与平台无关的头文件在include/linux子目录下,与ARM处理器相关的头文件在include/asm-arm子目录下,除此之外,还有通用的子目录linux,net等。 Init Linux内核的这个目录包含核心的初始化代码(注意:不是系统的引导代码),包含两个文件main.c和Version.c。 Ipc Linux内核的进程间的通信管理 Kernel Linux内核的进程管理和进程调度。主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件是sched.c;同样,和体系结构相关的代码在arch/*/kernel中

25、; Lib此目录为通用的程序库。 Mm Linux内核的内存管理。这个目录包括所有独立于处理器体系结构的内存管理代码,如页式存储管理内存的分配和释放等。Net 包含了各种不同网卡和网络的驱动程序。Scripts 此目录包含用于配置核心的脚本文件。 2.关于RPMS交叉编译器包 RPMS是一个用于Linux-2.4.18-rmk7-pxa1内核的交叉编译器包,它其中包括交叉编译、汇编、链接、二进制文件转换工具、所需要的库函数等等。所谓交叉编译器就是一种在Redhat Linux操作系统 + X86的体系结构下,编译经过移植的linux操作系统,生成内核,该内核能够在另外一种软硬件环境下运行的编译工具,如linux操作系统 + ARM的体系结构。交叉编译其实就是在一个平台上生成能够在另一个平台上运行的代码。注意这里的平台,实际上包含两个概念:体系结构(Architecture)和操作系统(Operati

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1