ARM嵌入式系统课程设计——MMCSD卡驱动程序设计_第1页
ARM嵌入式系统课程设计——MMCSD卡驱动程序设计_第2页
ARM嵌入式系统课程设计——MMCSD卡驱动程序设计_第3页
ARM嵌入式系统课程设计——MMCSD卡驱动程序设计_第4页
ARM嵌入式系统课程设计——MMCSD卡驱动程序设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM嵌入式系统课程设计-MMC/SD卡驱动程序设计班级:通信学号:姓名:指导老师:曹清华 江苏大学目录第一章 引言11.1 课程设计目的11.2 课程设计要求1第二章 课程设计平台构建与流程12.1 嵌入式系统开发平台构建12.2 课程设计硬件结构与工作原理1第三章 BOOTLOADER移植与下载43.1 Bootloader解压43.2 Bootloader编译43.3 Bootloader下载4第四章 LINUX内核移植与下载54.1 Linux内核总流程54.2 Linux源代码安装64.3 Linux源代码安装分析64.4 Linux内核配置、编译、烧写6第五章 根文件系统建立与文件

2、系统下载115.1Linux文件系统的类型115.2文件系统的制作125.3文件系统的下载125.4功能模块运行和调制14第六章 思考题15第七章 课设中遇到的问题及解决方法17第八章 总结与体会18第一章 引言1.1 课程设计目的1) 了解PXA27X微处理器GPIO的功能2) 了解MMC卡驱动程序的架构及编程方法3) 掌握MMC卡的使用方法1.2 课程设计要求1) 理解基于Linux的嵌入式系统交叉开发环境,对嵌入式系统的开发流程有详细的了解;2) 掌握开发工具链的构建方法,能独立进行系统开发操作;3) 掌握Linux的常用命令,在linux系统下能熟练的使用这些常用命令;4) 熟悉lin

3、ux内核的知识以及原理,掌握定制Linux内核的方法;5) 基于Linux操作系统,以及XSBase270ARM实验开发平台一套,把MMC存储卡挂载目标板上并进行文件的复制操作。第二章 课程设计平台构建与流程2.1 嵌入式系统开发平台构建1) 装有Linux操作系统的PC机一台;2) XSBase270 ARM实验开发平台一套3) MMC存储卡一块2.2 课程设计硬件结构与工作原理2.2.1 目标板的MMC卡硬件接口目标板的MMC/SD卡的硬件接口如图1.1所示,根据PXA27x的MMC/SD/SDIO控制器的信号功能以及PXA27x的GPIO的功能分配,命令控制线MMCMD与GPIO112相

4、连,此时引脚GPIO112必须配置成转换功能1(Alternate Function 1)的输入或输出方式(具体参考PXA27X开发手册),时钟端MMCLK利用了通用IO口GPIO32转换功能1输出方式,4位总线MMDAT0到MMDAT3分别与GPIO111、GPIO110、GPIO109和GPIO92相连,都时使用了通用IO口的转换功能1的输入或输出方式。图1.2为MMC/SD卡的供电电路图。图1.1 目标板的MMC/SD卡的硬件接口图1.2 MMC/SD卡的供电电路图2.2.2 PXA270的MMC/SD/SDIO控制器PXA270的MMC/SD/SDIO控制器在访问PXA270处理器的软

5、件与MMC存储堆和支持MMC、SD及SDIO通信协议之间充当联结作用。PXA27x的MMC控制器协议规范遵守多媒体卡系统规范V3.2(MultiMediaCard System Specification Version 3.2);SD控制器支持一个基于SD存储卡规范V1.01(SD Memory Card Specification Version 1.01)SD卡或基于SDIO卡规范V1.0( SDIO Card pecification Version 1.0)。MMC/SD/SDIO控制器采用标准的MMC传输协议或串行通信接口SPI协议模式。访问PXA270的软件使用MMC传输协议或S

6、PI模式作为与MMC控制器通信的协议。目标板的SD驱动程序采用了MMC通信传输协议。1)MMC/SD/SDIO控制器特性:. 在MMC、1位SD/SDIO和SPI模式中,数据传输速率高达19.5Mbps;. 对于4位SD/SDIO的数据传输速率高达78Mbps;. 具有两个接受和发送FIFO数据缓冲区;. 具有MMC/SD/SDIO和SPI两种操作模式;MMC/SD/SDIO模式支持MMC、SD和SDIO的通信协议,SPI模式支持SPI通信协议;. 在SD和SDIO通信协议中,支持1位和4位数据传输;. 控制器可根据FIFO数据缓冲区的状态关闭和启动时钟信号,防止数据溢出;. 支持所有有效的M

7、MC和SD/SDIO数据传输协议;. 基于中断的应用接口控制软件交互操作;. 在数据流的写操作中,允许10字节大小的数据或更大的数据流;. 使用MMC通信协议,支持多个MMC卡;. 使用SD或SDIO通信协议,只支持一个SD卡或SDIO卡;. 使用SPI通信协议;可支持两个MMC卡或SD/SDIO卡,也可支持两者的混合使用;2)MMC/SD/SDIO控制器的信号功能与对应引脚:信号MMC和SD/SDIOSPI模式功能对应引脚MMCLK输出输出MMC和SD/SDIO总线时钟GPIO32MMCDM双向输出MMC和SD/SDIO:命令和响应标志双向IO口SPI模式:命令和写数据输出口GPIO112M

8、MDAT<0>双向输入MMC和SD/SDIO:读写数据双向IO口SPI模式:读数据和响应标志输入线GPIO111MMDAT<1>双向输入MMC和SD/SDIO:SD/SDIO的4位数据传输线和信号SDIO到控制器的中断信号SPI模式:信号SDIO到控制器的中断信号GPIO110MMDAT<2>/MDCCS<0>双向输出SD/SDIO:4位数据传输线SPI模式:CS0片选信号GPIO109MMDAT<3>/MDCCS<1>双向输出SD/SDIO:4位数据传输线SPI模式:CS1片选信号GPIO922.2.3 MMC卡的通信协

9、议主机与MMC卡的所有通信都是由主机发起,主机发出广播和点对点两种类型通信命令,在广播通信命令中,主机发出的命令被所有的卡接受,只有部分命令需要响应;而在点对点通信命令中,命令被发送到具体地址的卡中,并由该卡对所接受的命令做出响应。第三章 Bootloader移植与下载3.1 Bootloader解压先将D:emdorEELiod_V4_SDK目录下的Linux-2.4复制到虚拟机里root的主文件夹中,然后用如下指令进行解压:利用上述命令解压后,bootloader源代码解压到当前目录中Boot-XSBase270文件夹中。3.2 Bootloader编译在解压的目录里进行make 编译。r

10、ootubuntu:Bootloader # cd Boot-XSBase270rootubuntu: Boot-XSBase270 # make cleanrootubuntu: Boot-XSBase270 # make编译完成后, 在当前目录下会生成bootloader 映象文件boot,将此boot拷贝到share共享文件夹下。3.3 Bootloader下载打开实验台电源,启动H-JTAG 和H-Flasher,在H-Flasher 中装载配置文件pxa270.hfc(Load菜单,选中C:driversH-JTAG中pxa270.hfc文件),点击Programming中的Chec

11、k,Scr File 选择E:share中的boot(或者是D:emdorEELiod_V4_SDK Linux-2.4images中的boot 文件),点击Program,烧写成功后点击 Verify 校验。第四章 Linux内核移植与下载4.1 Linux内核总流程4.2 Linux源代码安装参照以前做过的实验五、七BootLoader实验。内核解压:4.3 Linux源代码安装分析Linux提供三个不同的命令进行Linux的配置,效果完全一样:make config 控制台命令行方式配置命令make menuconfig 文本菜单方式配置命令make xconfig X窗口图形界面方式配

12、置命令其他部分命令:Make mrproper 命令清除所有的旧的配置和旧的编译目标文件等。Make dep 命令搜索Linux编译输出与源代码之间的依赖关系、并生成依赖文件。Make clean 清除以前构造内核时生成的所有目标文件、模块文件和临时文件。Make zImage 编译Linux内核,生成压缩的内核映像文件4.4 Linux内核配置、编译、烧写4.4.1 Linux内核配置进入内核源代码目录,执行make mrproper:删除所有以前在构核过程所产生的所有文件,执行make menuconfig,对内核进行配置。Linux针对MMC/SD内核配置的步骤:1)在主菜单下选择Loa

13、dable module support ->* Enable Loadable moduLe Support利用模块可将不常用的设备驱动或功能作为模块放在内核外部,必要时动态地调用。操作结束后从内存中删除,这样可以有效地使用内存,同时也可减小了内核的大小。模块可以自行编译并具有独立的功能,即使需要改变模块的功能,也不用对整个内核进行修改。文件系统,设备驱动,二进制格式等很多功能都支持模块。一定要选择*。 Set version information on all Symbols for modules利用这个功能能够让内核使用其它内核版本模块或没有包含在此 kernel 的特殊的模块

14、。一般选择N。* Kernel module Loader这个设置使kernel 对模块处于常备状态。在不使用Insmod 或rmmod 命令情况下,kernel 程序自动将需要执行的模块调用到内存中,一定时间内不使用该模块时自动将其从内存删除,一般要选择*。2)再回到主菜单下选择General setup >选择“Support for hot-pluggable devices” , 出现“MMC/SD device drivers”:点击“MMC/SD device drivers”,进入下一页选择:4.4.2 Linux内核编译配置完成后,重新编译内核,需要输入以下指令:生成的z

15、Image存放路径为:将zImage拷贝到tftpboot文件夹下:4.4.3 Linux内核烧写重新打开一个终端,输入命令:rootubuntu:# minicom,然后重启开发板电源。看到 Boot 启动信息后按任意键启动Boot 的 Operation Menu,我们需要用这个boot 内嵌工具下载内核。然后再提示信息 Please enter your selection 后面输入2,获取本地IP 地址:可以看到Operation Menu 菜单上方显示:,则表示板载Linux 与Ubuntu 服务器连接成功。如果看不到 My ip,则需要去修改/etc 中bootptab 文件最后一

16、行,将其修改为与本机的my mac address 相同,本例图中显示的是 my mac address is 00:08:0C:81:1D: 90。重新打开一个终端,进入/etc 目录,输入:#gedit bootptab输入 3,下载内核文件 ZImage(在Ubuntu 的文件系统的/tftpboot/目录中)下载成功后选择4,烧写内核。第五章 根文件系统建立与文件系统下载5.1Linux文件系统的类型5.1.1 EXT文件系统Ext2fs是Linux的标准文件系统,它已经取代了扩展文件系统(或 Extfs)。扩展文件系统Extfs支持的文件大小最大为2 GB,支持的最大文件名称大小为2

17、55个字符,而且它不支持索引节点(包括数据修改时间标记)。5.1.2 NFS文件系统NFS是一个RPC service ,它是由SUN公司开发,并于1984年推出。NFS文件系统能够使文件实现共享,它的设计是为了在不同的系统之间使用,所以NFS文件系统的通信协议设计与作业系统无关。当使用者想使用远端文件时只要用“mount”命令就可以把远端文件系统挂载在自己的文件系统上,使远端的文件在使用上和本地机器的文件没有区别。NFS的具体配置可参考实验一的网络文件系统nfs的配置。5.1.3 JFFS2文件系统JFFS文件系统是瑞典Axis通信公司开发的一种基于Flash的日志文件系统,它在设计时充分考

18、虑了Flash的读写特性和电池供电的嵌入式系统的特点,在这类系统中必需确保在读取文件时,如果系统突然掉电,其文件的可靠性不受到影响。 对Red Hat的Davie Woodhouse进行改进后,形成了JFFS2。主要改善了存取策略以提高FLASH的抗疲劳性,同时也优化了碎片整理性能,增加了数据压缩功能。需要注意的是,当文件系统已满或接近满时,JFFS2会大大放慢运行速度。这是因为垃圾收集的问题。相对于EXT2fs而言,JFFS2在嵌入式设备中更受欢迎。5.2文件系统的制作文件系统解压将 D:emdorEELiod_V4_SDKLinux-2.4Filesystem 中的内容复制E:share

19、中,再Ubuntu 中从共享目录中复制到/tmp/中,形成Filesystem文件夹,然后将文件系统压缩包解压,形成rootfs270文件系统文件夹。可以建立一个小的应用程序,将其复制到文件系统的某个目录中。5.2.2制作JFFS2文件映像确认已将将光盘的 Filesystem 下的mkfs.jffs2 和mkrootfs.sh 拷贝到文件系统根目录下,在根目录下(例如上面的Filesystem),运行命令(先将Filesystem文件夹复制到根目录下)生成映像文件rootfs270.img,拷贝到/tftpboot中烧写到flash中,启动后运行结果。或者运行# ./mkrootfs.sh

20、也可生成文件系统的映像文件rootfs.img。5.3文件系统的下载参照嵌入式系统实验五,重新打开一个终端,输入命令:rootubuntu:# minicom然后重启开发板电源。看到 Boot 启动信息后按任意键启动Boot 的 Operation Menu,我们需要用这个boot 内嵌工具下载内核。然后再提示信息 Please enter your selection 后面输入2,获取本地IP 地址:可以看到Operation Menu 菜单上方显示:,则表示板载Linux 与Ubuntu 服务器连接成功。如果看不到 My ip,则需要去修改/etc 中bootptab 文件最后一行,将其修

21、改为与本机的my mac address 相同,本例图中显示的是 my mac address is 00:08:0C:81:1D: 90。重新打开一个终端,进入/etc 目录,输入:#gedit bootptab输入5,下载文件系统rootfs.img(在Ubuntu的文件系统/tftpboot目录中)下载成功后选择6,烧写文件系统内核和系统文件烧写结束,选择7启动Linux系统,使用root用户登录,进入载板linux系统,启动后位于/root文件夹中5.4功能模块运行和调制可以按照以下步骤对MMC卡的驱动程序进行测试:重新打开一个终端,输入minicom,开发板启动后,将MMC存储卡插入

22、MMC/SD卡插槽中,输入下面的指令:如果有显示的内容,表示sd卡已经检测到。如果没有内容,说明sd卡没有检测到。首先在根目录下创建一个名为“sd”的文件夹:(请大家以自己的名字首写字母命名此文件夹):然后进入dev文件夹,红框标注的为需要用的文件:再利用mount命令挂载MMC卡:进入到sd文件夹下,用ls查看,就可以看到MMC卡里面的内容了:可以对MMC卡里的内容进行读、写、复制等操作:第六章 思考题1. 嵌入式系统开发的软件有哪些? 答:VMware Player、H-JTAG。 VMware Player用于启动Ubuntu虚拟机环境。H-JTAG用于搜索目标板。2. 嵌入式系统开发硬件设备有哪些? 答:装有Linux操作系统的PC机一台、 XSBase270 ARM实验开发平台一套、MMC/SD存储卡一块3. 软件的界面表示进入哪一个环境? 答:(1)虚拟机环境下:(2)Linux内核配置环境下: (3)boot内嵌工具的环境下:(4)51Board板的环境下:第7章 课设中遇到的问题及解决方法1、 问题: Linux内核烧写时,重新打开一个终端,输入命令:rootubuntu:# minicom,然 后重启开发板电源,结果启动失败。 解决:先重新进行Bootloader下载,再烧写内核。2、 问题:Linux内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论