MMCSD卡驱动程序设计
更新时间:2023-07-25 03:02:01 阅读量: 实用文档 文档下载
- 猫咪猝死的原因推荐度:
- 相关推荐
目录
第一章 引言 ........................................................................................................................................ 1
1.1 课程设计目的 ....................................................................................................................... 1 1.2 课程设计任务与要求...........................................................................................................1 第二章 课程设计平台构建与流程 .................................................................................................... 2
2.1 嵌入式系统开发平台构建 ................................................................................................... 2 2.2 课程设计流程 ....................................................................................................................... 2 2.3 课程设计硬件结构与工作原理 ........................................................................................... 2 第三章 Bootloader移植与下载 ......................................................................................................... 4
3.1 源代码安装 ........................................................................................................................... 4 3.2 源代码分析移植与编译 ....................................................................................................... 4 3.3 下载 ....................................................................................................................................... 4 第四章 Linux内核移植与下载 ......................................................................................................... 7
4.1 Linux内核源代码安装 ......................................................................................................... 7 4.2 Linux内核源代码分析与移植 ............................................................................................. 7 4.3 Linux内核编译与下载 ......................................................................................................... 8 第五章 根文件系统建立与文件系统下载 ...................................................................................... 14
5.1 根文件系统分析 ................................................................................................................. 14 5.2 文件系统映像文件生成 ..................................................................................................... 15 5.3 文件系统下载 ..................................................................................................................... 16 5.4 功能模块运行与调试 ......................................................................................................... 17 第六章 完成课堂上布置的三个思考题 .......................................................................................... 18 第七章 课程设计总结与体会 .......................................................................................................... 23
7.1 课程设计中遇到的问题以及解决方法 ............................................................................. 23 7.2 总结和体会 ......................................................................................................................... 23
第一章 引言
1.1 课程设计目的
1) 了解PXA27X微处理器GPIO的功能 2) 了解MMC卡驱动程序的架构及编程方法 3) 掌握MMC卡的使用方法
1.2 课程设计任务与要求
1) 理解基于Linux的嵌入式系统交叉开发环境,对嵌入式系统的开发流程有详细的了解; 2) 掌握开发工具链的构建方法,能独立进行系统开发操作;
3) 掌握Linux的常用命令,在linux系统下能熟练的使用这些常用命令; 4) 熟悉linux内核的知识以及原理,掌握定制Linux内核的方法;
5) 基于Linux操作系统,以及XSBase270ARM实验开发平台一套,把MMC存储卡挂载目标板上并进行文件的复制操作。
第二章 课程设计平台构建与流程
2.1 嵌入式系统开发平台构建
1) 装有Linux操作系统的PC机一台; 2) XSBase270 ARM实验开发平台一套 3) MMC存储卡一块
2.2 课程设计流程
1)Bootloader移植与下载 2)Linux内核移植与下载 3) 功能模块程序设计与交叉编译 4)根文件系统建立与文件系统下载
2.3 课程设计硬件结构与工作原理
1)目标板的MMC卡硬件接口
目标板的MMC/SD卡的硬件接口如图1.1所示,根据PXA27x的MMC/SD/SDIO控制器的信号功能以及PXA27x的GPIO的功能分配,命令控制线MMCMD与GPIO112相连,此时引脚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) PXA270的MMC/SD/SDIO控制器
PXA270的MMC/SD/SDIO控制器在访问PXA270处理器的软件与MMC存储堆和支持MMC、SD及SDIO通信协议之间充当联结作用。PXA27x的MMC控制器协议规范遵守多媒体卡系统规范V3.2(MultiMediaCard System Specification Version 3.2);MMC/SD/SDIO控制器采用标准的MMC传输协议或串行通信接口SPI协议模式。访问PXA270的软件使用MMC传输协议或SPI模式作为与MMC控制器通信的协议。目标板的SD驱动程序采用了MMC通信传输协议。 3)MMC卡的通信协议
主机与MMC卡的所有通信都是由主机发起,主机发出广播和点对点两种类型通信命令,在广播通信命令中,主机发出的命令被所有的卡接受,只有部分命令需要响应;而在点对点通信命令中,命令被发送到具体地址的卡中,并由该卡对所接受的命令做出响应。
第三章 Bootloader移植与下载
3.1 源代码安装
先将D:\emdor\EELiod_V4_SDK目录下的Linux-2.4复制到虚拟机里root的主文件夹中,然后用如下指令进行解压:
利用上述命令解压后,bootloader源代码解压到当前目录中Boot-XSBase270文件夹中。
3.2 源代码分析移植与编译
在解压的目录里进行make 编译。
root@localhost BootLoader# cd Boot-XSBase270 root@ubuntu:Boot-XSBase270# make clean
root@localhost Boot-XSBase270# make
编译完成后, 在当前目录下会生成bootloader 映象文件boot。
3.3 下载
1)设置完成后,打开开发板电源,启动桌面的DaemonU,会自动搜索目标板,如果成功,DaemonU将出现如下图:
2)烧写boot到flash中 启动桌面上的FlashWrite 点击Initialize:
上图为连接正常的弹出窗口,确认连接正常,点击Detect
如正常,应能自动搜索到板载的norFlash芯片,然后点击program按钮,按图中设置:
目标文件位于D盘项目文件中,烧写起始地址为0,烧写选项按上图设置,然后点击Start按钮,开始烧写。烧写结束。
第四章 Linux内核移植与下载
4.1 Linux内核源代码安装
内核解压
4.2 Linux内核源代码分析与移植
Linux提供三个不同的命令进行Linux的配置,效果完全一样: make config 控制台命令行方式配置命令 make menuconfig 文本菜单方式配置命令 make xconfig X窗口图形界面方式配置命令
其他部分命令:
Make mrproper 命令清除所有的旧的配置和旧的编译目标文件等。
Make dep 命令搜索Linux编译输出与源代码之间的依赖关系、并生成依赖文件。
Make clean 清除以前构造内核时生成的所有目标文件、模块文件和临时文件。 Make zImage 编译Linux内核,生成压缩的内核映像文件。
4.3 Linux内核编译与下载
1)内核解压
2)内核配置
Linux针对MMC/SD内核配置的步骤:
(1) 在主菜单下选择Loadable module support --->[*] Enable Loadable moduLe Support 利用模块可将不常用的设备驱动或功能作为模块放在内核外部,必要时动态地调用。操作结束后从内存中删除,这样可以有效地使用内存,同时也可减小了内核的大小。模块可以自行编译并具有独立的功能,即使需要改变模块的功能,也不用对整个内核进行修改。文件系统,设备驱动,二进制格式等很多功能都支持模块。一定要选择[*]。
[ ] Set version information on all Symbols for modules
利用这个功能能够让内核使用其它内核版本模块或没有包含在此 kernel 的特殊的模块。一般选择[N]。
[*] Kernel module Loader
这个设置使kernel 对模块处于常备状态。在不使用Insmod 或rmmod 命令情况下,kernel 程序自动将需要
执行的模块调用到内存中,一定时间内不使用该模块时自动将其从内存删除,一般要选择[*]。
(2) 再回到主菜单下选择General setup ―――>选择“Support for hot-pluggable
devices” , 出现“MMC/SD device drivers”:
点击“MMC/SD device drivers”,进入下一页选择:
用向下的箭头,选择 Load an Alternae Configuration File 选项,
输入配置文件名 arch\arm\def‐configs\xsbase270,退出并保存。 3)配置完成后,重新编译内核,需要输入以下指令:
生成的zImage存放路径为:
将zImage拷贝到tftpboot文件夹下:
4)内核烧写
重新打开一个终端,输入命令: root@ubuntu:~# minicom
然后重启开发板电源,
看到 Boot 启动信息后按任意键启动Boot 的 Operation Menu,我们需要用这个boot 内嵌工具下载内核。
然后再提示信息 Please enter your selection 后面输入2,获取本地IP 地址:
可以看到Operation Menu 菜单上方显示:
My ip address is 192.168.0.50,则表示板载Linux 与Ubuntu 服务器连接成功。 输入 3,下载内核文件 ZImage(在Ubuntu 的文件系统的/tftpboot/目录中)下载成功后选择4,烧写内核。
第五章 根文件系统建立与文件系统下载
5.1 根文件系统分析
1)EXT文件系统
Ext2fs是Linux的标准文件系统,它已经取代了扩展文件系统(或 Extfs)。扩展文件系统Extfs支持的文件大小最大为2 GB,支持的最大文件名称大小为255个字符,而且它不支持索引节点(包括数据修改时间标记)。 2)NFS文件系统
NFS是一个RPC service ,它是由SUN公司开发,并于1984年推出。NFS文件系统能够使文件实现共享,它的设计是为了在不同的系统之间使用,所以NFS文件系统的通信协议设计与作业系统无关。当使用者想使用远端文件时只要用“mount”命令就可以把远端文件系统挂载在自己的文件系统上,使远端的文件在使用上和本地机器的文件没有区别。NFS的具体配置可参考实验一的网络文件系统nfs的配置。 3)JFFS2文件系统
JFFS文件系统是瑞典Axis通信公司开发的一种基于Flash的日志文件系统,它在设计时充分考虑了Flash的读写特性和电池供电的嵌入式系统的特点,在这类系统中必需确保在读取文件时,如果系统突然掉电,其文件的可靠性不受到影响。 对Red Hat的Davie Woodhouse进行改进后,形成了JFFS2。主要改善了存取策略以提高FLASH的抗疲劳性,同时也优化了碎片整理性能,增加了数据压缩功能。需要注意的是,当文件系统已满或接近满时,JFFS2会大大放慢运行速度。这是因为垃圾收集的问题。相对于EXT2fs而言,JFFS2在嵌入式设备中更受欢迎。
5.2 文件系统映像文件生成
1)文件系统安装与busybox 的编译
将 D:\emdor\EELiod_V4_SDK\Linux-2.4\Filesystem 中的内容复制E:\share 中,再Ubuntu 中从共享目录中复制到/tmp/中,然后将文件系统压缩包解压:可以建立一个小的应用程序,将其复制到文件系统的某个目录中。 2)制作JFFS2 文件映像
确认已将光盘的 filesystem 下的mkfs.jffs2 和mkrootfs.sh 拷贝到文件系统根目录下,在根目录下(例如上面的Filesystem),运行命令
# ./mkfs.jffs2 -o rootfs270.img -e 0x40000 -r _install -p –
l
生成映像文件rootfs270.img,拷贝到/tftpboot中烧写到flash中,启动后运行结果。 或者运行# ./mkrootfs.sh 也可生成文件系统的映像文件rootfs.img。
或者运行# ./mkrootfs.sh 也可生成文件系统的映像文件。
5.3 文件系统下载
回到 Operation Menu,下载文件系统
烧写文件系统
启动进入
minicom
5.4 功能模块运行与调试
可以按照以下步骤对MMC卡的驱动程序进行测试:
重新打开一个终端,输入minicom,开发板启动后,将MMC存储卡插入MMC/SD卡插槽中,输入下面的指令:
首先在根目录下创建一个名为“dq”的文件夹,然后进入dev文件夹
再利用mount命令挂载MMC卡,现在就可以看到MMC卡里面的内容了:
可以对MMC卡里的内容进行读、写、复制等操作:
第六章 完成课堂上布置的三个思考题
1)根据MMC/SD卡的认证模式命令流程图,结合目标板源码提供的MMC/SD驱动程序,画出认证过程的流程图;
2)根据MMC/SD卡的传输模式命令流程图,结合目标板源码提供的MMC/SD驱动程序,画出数据传输过程的流程图;
3)从网上下载MMC/SD卡的协议标准(SD Memory Card Specification Version 1.01),结合驱动程序,分析各命令的功能。 GO_IDLE_STATE
这是使card初始化到Idle状态的指令.CS信号设在Low的状态时,接到本指令后,card 将转换到SPI模式. SEND_OP_COND
接到本指令后,card将做R3回应(含有OCR 数据).根据OCR值,可以得知card能工作电压范围.OCR数据最高值位的1bit是用来确认card内部处理是否结束(Ready/Busy轮询). ALL_SEND_CID
接到本指令后, 处于Ready状态的card将传送CID数据.在MMC模式下,数据被送到CMD信号,
在CID数据的每1bit传送后,CMD信号状态将与该card内部状态相比较,如果不一致,將中止数据传送,card返回到Ready状态.如果相一致,该card 将认为已被选中,然后转换到Identification 状态. SET_RELATIVE_ADDR
本指令会为已转换到Identification状态的card分配一个相对card地址(RCA).当RCA分配后,card将转换到Stand-by 状态,对以后的CMD2和CMD3不回应. NOP
这是用来设定DSR(DriveState寄存器)的指令,但是本car不支持DSR. SELECT/DESELECT_CARD
本指令是用来选择一张card,让它在Stand-by状态和Transfer状态之间转换的指令.如果给card设定已分配到的RCA地址,card将从Stand-by状态转换到Transfer状态,并将回应以后的读取指令及其他指令.如果给card设定RCA以外的地址,card将转换到Stand-by状态。当RCA=0000h时,card将无条件地转换到Stand-by状态. SEND_CSD
接到本指令后,将传送CSD数据. SEND_CID
接到本指令后,将传送CID数据. READ_DAT_UNTIL_STOP
接到本指令后,将从设定的地址传送P2ROM数据,直到接到指令CMD12为止. STOP _TRANSMISSION
本指令强行终止CMD11和CMD18的处理 SEND_STATUS
接到本指令后, 将传送状态寄存器的信息. GO_INACTIVE _STATE
接到本指令后,将转换到休止(inactive)状态. SET_BLOCKLEN
本指令用来设定Block长度.对象是以后的指令CMD17和CMD18. READ_SINGLE _BLOCK
接到本指令后,将从自变量设定的地址传送1个block 长度的数据.(block长度由指令CMD16设定).
READ_MULTIPLE _BLOCK
正在阅读:
MMCSD卡驱动程序设计07-25
研究生学术英语课后习题答案03-08
易经64卦读音12-13
白银市事业单位拟聘人员名单03-08
初中英语语法定语从句讲解&练习03-20
初一地理上册教案05-09
初中化学教学中的德育渗透06-04
生物科学专业排名02-07
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 卡驱动
- 程序设计
- MMCSD
- 公司股权收购合同尽调清单
- 山东省沂源县燕崖中学中考语法复习素材:数词用法知多少
- 阴离子间隙与新生儿缺氧缺血性脑病严重程度的相关性分析
- 小学数学低段教研组计划
- 商业银行经济责任审计存在的问题及对策
- 廉洁诚信教育课教案
- 拟行路难教学设计
- 00312《政治学概论》最全复习资料+历年真题
- 粗心大意的我作文350字(5篇)
- 周利华 护理查房与疑难病例讨论.pdx
- 初中物理电学试题
- 小户型怎么布局 布局应注意三大禁忌
- 三年级奥数 第三十五讲 巧求周长(一)
- 暑假社会实践报告:三农问题和新农村建设
- Chapter 8b The Role of Consciousness in Second Language Learning
- 教育的本体性功能:提升人的灵性
- 论我国中式连锁餐饮企业的用工及对策
- 曲线梁桥计算理论与设计实践问题探讨
- 继续教育低碳经济答案
- 住院医师规范化培训实施方案