射频卡数据采集系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
射频卡数据采集系统设计
一、课题要求分析:
射频卡简介
射频卡(简称RF卡)是一种以无线方式传送数据的集成电路卡片,它具有数据处理及安全认证功能等特有的优点:
●RF卡在读写时是处于非接触操作状态,避免了由于接触不良所造成的读写错误等
误操作,同时避免了灰尘、油污等外部恶劣环境对读写卡的影响。
读写错误等误操
作,同时避免了灰尘、油污等外部恶劣环境对读写卡的影响。
●操作简单、快捷-RF卡采取无线通迅方式,使用时无方向要求,所以使用起来十
分方便。
●防冲突-RF卡中存有快速防冲突机制,能防止卡片之间出现数据干扰,因此终端
可以同时处理多张卡片。
●便于一卡多用:RF卡中有多个分区,每个分区又各自有自己的密码,所以可以将
不同的分区用于不同的应用,实现一卡多用。
与接触式IC卡相比较,射频卡具有以下优点:
●可靠性高-卡与读写器之间无机械接触,避免了由于接触读写而产生的各种故障。
例如:由于粗暴插卡、非卡外物插入、灰尘、油污导致接触不良等原因造成的故
障;
●卡表面无裸露的芯片,无须担心芯片脱落、静电击穿,弯曲损坏等问题;
●操作方便、快捷-由于非接触通讯,读写器在1cm-10cm范围内就可以对卡片操作,
所以不必象IC卡那样进行插拔工作;非接触卡使用时没有方向性,卡片可以任意
方向掠过读写器表面,可大大提高每次使用的速度;
●防冲突-射频卡中有快速防冲突机制,能防止卡片之间出现数据干扰,因此读写器
可以“同时”处理多张非接触式射频卡;
●应用范围广-射频卡的存储器结构特点使它一卡多用;可应用于不同的系统,用户
根据不同的应用设定不同的密码和访问条件;
●加密性能好-射频卡的序列号是唯一的,制造厂家在产品出厂前已将此序列号固
化,不可再更改;
射频卡与读写器之间采用双向验证机制,即读写器验证射频卡的合法性,同时射频卡也验证读写器的合法性;处理前,卡要与读写器进行三次相互认证,而且在通讯过程中所有
的数据都加密。
此外,卡中各个扇区都有自己的操作密码和访问条件。
设计采用串口的方式外接的射频IC 卡读写器,提供射频识别及IC 卡读写功能,供研究移动物流智能终端设备使用,来完成无线射频技术与移动物流智能终
端的集成开发任务。
文章在硬件电路设计中深入探讨了射频识别系统的关键技术-射频天线,并设计出完善实用的系统射频天线。
随后给出了读写器通用Demo 硬件电路的应用开发方案。
文章接着分析了系统的软件实现方案和射频卡读写原理,架构了实现对IC 卡的读数据、写数据、控
制等完备操作的编程指令并说明了系统设计的程序流程。
其后设计了具体的系统验证测试方案,利用测试系统进行功能验证测试,具体描述了系统各个功能模块的详细实现过程和测试过程,给出了信号收发的测试实例。
最后,对课题中所作的工作进行了总结,对系统扩展性、可应用的环境及电路
上可以继续研究的部分进行了探讨和展望。
二、嵌入式处理器选择:
ARM7TDMI核的SEP32O3MCU芯片
ARM处理器核因其卓越的性能和显著优点,已成为高性能、低功耗、低成本嵌入式处理器核的代名词,得到了众多半导体厂家和整机厂商的大力支持。
ARM处理器已经占据了绝大部分32位、64位高端嵌入式处理器的市场,形成了移动通信、手持计算、多媒体数字消费等嵌入式解决方案事实上的标准。
ARM处理器是基于精简指令集计算机(R工sc,ReduCed工nstruetionsetcomputer)体系结构的计算机系统,采用3级一7级流水线,低工作电压,大量采用最新的体系结构和实现技术,这些使处理器的内核小巧、结构简单、功耗大大降低。
现在,ARM处理器的应用已相当广泛,这主要表现在:
(1)工业控制领域。
作为32位的R工sc架构,基于ARM核的微控制器芯片不但占据了高端微控
制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、
高性价比,向传统的8位/16位微控制器提出了挑战。
(2)无线通讯领域。
目前己有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。
(3)网络应用。
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。
(4)消费类电子产品。
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
(5)成像和安全产品。
现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。
ARM微处理器的特点:
(1)体积小、低功耗、低成本、高性能。
(2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件。
(3)大量使用寄存器,指令执行速度更快。
(4)大多数数据操作都在寄存器中完成。
(5)寻址方式灵活简单,执行效率高。
(6)指令长度固定。
ARM微处理器目前包括下面凡个系列:ARM7系列、ARM9系列、ARM9E系列、 ARMIOE系列、SeeurCore系列、inter的xSCale、intel的s、rongARM,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。
其中,ARM7,ARM9,ARM9E和ARMlo为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。
SecurCore系列专门为安全要求较高的应用而设计。
三、系统存储器选择:
SDRAM HY57V561620AT-H
SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步是指Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。
SDRAM从发展到现在已经经历了四代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.(显卡上的DDR已经发展到DDR5) 第一代SDRAM采用单端(Single-Ended)时钟信号,第二代、第三代与第四代由于工作频率比较快,所以采用可降低干扰的差分时钟信号作为同步时钟。
SDR SDRAM的时钟频率就是数据存储的频率,第一代内存用时钟频率命名,如pc100,pc133则表明时钟信号为100或133MHz,数据读写速率也为100或133MHz。
之后的第二,三,四代DDR(Double Data Rate)内存则采用数据读写速率作为命名标准,并且在前面加上表示其DDR代数的符号,PC-即DDR,PC2=DDR2,PC3=DDR3。
如PC2700是DDR333,其工作频率是333/2=166MHz,2700表示带宽为2.7G。
DDR的读写频率从DDR200到DDR400,DDR2从DDR2-400到DDR2-800,DDR3从DDR3-800到DDR3-1600。
SDR不等于SDRAM。
Pin:模组或芯片与外部电路电路连接用的金属引脚,而模组的pin就是常说的“金手指”。
SIMM:Single In-line Memory Module,单列内存模组。
内存模组就是我们常说的内存条,所谓单列是指模组电路板与主板插槽的接口只有一列引脚(虽然两侧都有金手指)。
DIMM:Double In-line Memory Module,双列内存模组。
是我们常见的模组类型,所谓双列是指模组电路板与主板插槽的接口有两列引脚,模组电路板两侧的金手指对应一列引脚。
RIMM:registered DIMM,带寄存器的双线内存模块,这种内存槽只能插DDR或Rambus 内存。
SDRAM内存条的金手指通常是168线,而DDR SDRAM内存条的金手指通常是184线的。
几代产品金手指的缺口数及缺口位置也不同有效防止反插与错插,SDRAM有两个缺口,DDR只有一个缺口。
影响性能的主要时序参数:
所谓的影响性能是并不是指SDRAM的带宽,频率与位宽固定后,带宽也就不可更改了。
但这是理想的情况,在内存的工作周期内,不可能总处于数据传输的状态,因为要有命令、寻址等必要的过程。
但这些操作占用的时间越短,内存工作的效率越高,性能也就越好。
非数据传输时间的主要组成部分就是各种延迟与潜伏期。
通过上文的讲述,大家应该很明显看出有三个参数对内存的性能影响至关重要,它们是tRCD、CL和tRP。
每条正规的内存模组都会在标识上注明这三个参数值,可见它们对性能的敏感性。
以内存最主要的操作——读取为例。
tRCD决定了行寻址(有效)至列寻址(读/写命令)之间的间隔,CL决定了列寻址到数据进行真正被读取所花费的时间,tRP则决定了相同
L-Bank中不同工作行转换的速度。
现在可以想象一下读取时可能遇到的几种情况(分析写入操作时不用考虑CL即可):
1、要寻址的行与L-Bank是空闲的。
也就是说该L-Bank的所有行是关闭的,此时可直接发送行有效命令,数据读取前的总耗时为tRCD+CL,这种情况我们称之为页命中(PH,Page Hit)。
2、要寻址的行正好是前一个操作的工作行,也就是说要寻址的行已经处于选通有效状态,此时可直接发送列寻址命令,数据读取前的总耗时仅为CL,这就是所谓的背靠背(Back to Back)寻址,我们称之为页快速命中(PFH,Page Fast Hit)或页直接命中(PDH,Page Direct Hit)。
3、要寻址的行所在的L-Bank中已经有一个行处于活动状态(未关闭),这种现象就被称作寻址冲突,此时就必须要进行预充电来关闭工作行,再对新行发送行有效命令。
结果,总耗时就是tRP+tRCD+CL,这种情况我们称之为页错失(PM,Page Miss)。
显然,PFH是最理想的寻址情况,PM则是最糟糕的寻址情况。
上述三种情况发生的机率各自简称为PHR——PH Rate、PFDR——PFH Rate、PMR——PM Rate。
因此,系统设计人员(包括内存与北桥芯片)都尽量想提高PHR与PFHR,同时减少PMR,以达到提高内存工作效率的目的。
四、系统硬件设计:
1. 设计思路
射频卡读写器是射频卡应用的核心也是射频卡应用设计过程中最为重要的环节之一,当前射频卡读写器设计方法主要有两种:一是完全自主设计读写电路,这个设计、调试过程比较复杂,对于研发实力不是很强的公司、科研机构难以做到。
二是读写电路的设计围绕读写基站芯片进行,对于硬件电路的设计只需要添加较少的外围电路就可以满足要求,剩下的主要工作主要集中于软件的设计。
这是当前射频卡应用设计的主要方法。
对于围绕基站芯片进行的应用设计,只需要添加较少的器件就可以构成满足要求的外围电路,但在设计时要从系统稳定性、能耗以及对读写距离的要求等方面进行考虑。
1. 射频卡的数据传输方式决定了射频卡应用系统的稳定性是首要考虑的问题,在设计时要采用多种措施进行抗干扰设计:CPU 与非接触读写部分尽可能的远,无线部分应与系统部分保持一定的距离;在天线附近不应有金属物;对于经过升、降压处理的电源要进行隔离以防止电源干扰;布线杜绝电源与地间构成大回路;采用硬件Watchdog 技术以防止程序“飞逸”。
2. 射频卡相对于接触式IC 卡的能耗较大,对于一些嵌入式的系统,例如:预收费水表,由于不能经常性的更换电源并且要求维持系统正常工作的时间很长,这就对能耗的要求较为苛刻。
在进行硬件设计可以采用如下措施:在CPU 选型要采用能耗小的且具有“休眠”功能的产品,同时外围元器件的选择也要尽量采用MOS 器件;射频发射的能量消耗是系统的主要能耗,理想的工作模式应是平时系统进入Standby 状态,当有射频卡进入工作区域时唤醒系统进行工作。
实际中可以采用红外监测或者周期性的开关射频读写装置;对于需要进行升、降压处理进行供电的系统,选择电压转换芯片要选择损耗小的芯片。
3. 射频卡系统工作距离也是应用设计的一个重要参数,当前一般低频射频卡的工作距离低于10cm,可以采用一些措施改善读写距离:射频卡的读写距离与射频发射场强有关流
入感应天线的电流直接决定了发射场强的大小,所以可以通过适当增强天线的驱动能力改善感应距离;射频卡的能量获得是通过谐振的方式获得的,调节谐振电路的谐振点,减小频率误差也可以改善读写距离;射频卡的工作范围也与天线的半径有关,在兼顾天线电感量的基础上增加天线的尺寸也可以增加读写距离。
要在射频IC卡中实现射频技术需要解决许多的技术难题,所需考虑的有:
1. 安全机制问题:因为射频技术的特点,导致射频IC 卡中数据在通信过程中被截取的可能性很大,如何防止保密信息的泄漏是一大问题。
作为安全性的解决办法之一,射频信号传输的是通过加密处理的数据,必须有同样的解密算法才能破解其中的信息,并且在实现通讯之前必须先进行读卡机具和卡的相互认证才可继续进行通讯。
这就保证了射频信号不会被中途截取并破解,保证了系统的安全性。
2. 防冲突机制:如果在操作过程中同时出现多张卡,如何防止卡之间的数据干扰,保证读/写卡操作的正确完成。
非接触卡在出现多卡进入读卡机具作用范围时,通过基于BIT 冲突检测协议(TypeA),或者则是字节、帧及命令(Type B)完成防冲突。
3. 电源及电源功耗的设计:由于射频IC 卡的工作能源是通过射频收发电路由空间电磁波提供的。
由此可见,电磁波能量的大小决定了卡上IC 的功耗,也决定了IC芯片的功能。
所以其在功耗参数上则要求尽量的小,这样射频信号的能量才能满足射频IC 卡的工作要求。
要克服这个问题只有从两个方面来解决:首先是在芯片的制作材料上进行技术革新,降低芯片的功耗。
另一个方法就是提高射频能量,从射频耦中获取足够的电能保证卡上IC 芯片正常工作。
4. 通讯的调制解调方式:为了实现IC 卡与终端之间的正确的通讯,必须为其数据的传输制定相应的协议,才能在IC 卡和终端之间进行正确的交流。
而作为将模拟信号转换为数字信号进行传送的调制解调方式对通讯的完成是非常的关键的,采用什么样的调制解调方式直接影响到通讯的可靠性和安全性。
射频IC 通过两种方式进行调制解调,这也是TypeA 和Pype B型卡的区别之一。
2系统架构
射频IC 卡的工作原理及过程简要分析如下:射频IC 卡与读写器之间通过无线电波来完成读写操作,二者之间的通讯频率一般为13.56MHz。
射频IC 卡本身是无源卡,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成:一部分是电源信号,该信号由卡接收后,与本身的LC 电路产生一个瞬间能量来供给芯片工作;另一部分则是指令和数据信号,指挥芯片完成数据的读取、修改、储存等,并返回信号给读写器。
读写器则一般由单片机,专用智能模块和天线组成,并配有与PC 的通讯接口,打印口,I/O 口等,以便应用于不同的领域。
见图1 射频IC 卡读写系统框图。
图1射频IC卡读写系统框图
读写器设计
1读写器的组成
图2 读写器组成示意图
读写器的基本任务就是启动射频IC 卡,与这个数据载体建立通信并且在应用软件和一个非接触的数据载体之间传送数据。
所有的读写器都可简化为三个基本的组成部分:控制单元、由发送器/接收器组成的高频接口以及天线。
如图 2 读写器
组成示意图所示。
控制单元担负着以下任务:
与MCU(中央微处理机单元)通信,并执行MCU发出的命令
控制与射频IC卡的通信过程(主-从原则)
信号的编码解码
执行反碰撞算法
对射频IC卡与读写器之间传递的数据进行加密和解密
进行射频IC卡与读写器之间的身份验证
高频接口担负以下任务:
产生高频的发射功率,以启动射频IC卡,并为其提供能量
对发射信号进行调制,用于将数据传送给射频IC卡
接收并解调来自应答器的高频信号
五、系统软件设计:
1主程序设计
读卡器上电后先对系统进行初始化,然后读取本机的1P地址和物理地址,把这两个参数以广播报的方式向网络服务器发送,以使网络服务器方得到本机的1P地址和MAC(物理)地址。
然后服务器即可向各终端发送数据报,终端在接收到数据报的同时,也得到了服务器的1P地址和MAc地址。
双方都得到了对方的1P地址和MAC地址之后,即可进行正常通信。
若读卡器操作范围内有射频1C卡存在,则调用射频1C卡读子程序,并在LCD上显示该射频1C卡信息,然后读卡器读取用户输入的键盘数据,分析键盘数据格式是否正确,若正确,则分析键盘数据所要实现的操作并显示,依据键盘数据和命令对射频1C卡进行读/写操作,之后验证数据操作是否正确,若正确操作,则将修改后的数据通过1P网送到服务器处理,若服务器正确接收数据,则向读卡器发送“正确接”返回指令,本次操作结束,若服务器未能正确接收数据,则进行出错处理。
主程序流程图如图3所示
图3 主程序流程图
2键盘中断处理程序设计
硬件设计上,键盘使用工NT_ExT15中断。
在主程序中,系统初始化时,调用中断申请函数reques、_irq(KEY_工RQ_NuM,hand一e_key_irq,o,“keyboard’’,NuLL向uc 一inux申请中断。
当有按键按下时,系统响应键盘中断,执行中断处理程序。
键盘中断处理程序的主要功能是完成按键识别,其软件流程图如图4所示
图4 键盘中断处理程序流程图
主要功能函数如下所示:
(l)键盘初始化函数
/*初始化键盘接口芯片ucB1400*/
voidInitAC97(void)
*(RP)AC97ENABLE=Oxl //初始化AC97
*(RP)AC97CONR=Ox13:
wueb(Oxse,oxlf):// 配置ucB的工/0口功能,o一3为数据输出,5一8为中断输入wueb(Oxsa,OxleO)
wueb(Ox6O,OxleO)
//配置UCB的工/0口初始数据值
/*初始化SEP32O3PH3端口*/
voidint15init(void)
{
*(RP)PoRTH_D工R一oxs;
*(RP)PoRTH_sEL一oxs;
*(RP)PoRTH_工NTRcTL一oxso;
*(RP)PoRTH_工NcTL一oxs;
*(RP)PORTHINTRCLR2Ox3f:
}
//配置PH3口为中断输入口
//中断清除,初始化
(2)键盘中断处理函数
/*键盘中断入口函数*/
voidkeyhandler(void) //键盘中断处理函数
{
mask_irq(INT_EXT15): //屏蔽键盘中断
findkey(): //查找哪个键被按下
unmask_irq(INT_EXT15) //打开键盘中断
}
/*查找按键函数*/
voidfindkey(void)
{
U3=intstatus=O
U3=i=O;
U16)=O:
U16k=O;
U161=O;
U16m=O;
U16n=O;
U3=datareg=O;
U16key=O:
char*s:
datareg=rueb(Oxsa): //记录下数据寄存器原始值,用于判断列地址intstatus=rueb(Ox6=) //记录下中断状态值,用于判断行地址
if(intstatuS!=O)
{
for(j=O:j<4:j十十) //确定列位置(j)
{
k=(OxOS>>j) datareg; //依次写入1000010000100001
LcD显示子程序设计
图5 LcD显示子程序流程图
主要功能函数如下所示:
(1)LCDC初始化函数
intledeinit(void)
{
U32i=4;
U32k=O;
*(RP)LECR=Ox0000000O://禁用LCDC
*(RP)PoRTEsEL=oxl<<11://选择LCD背光灯
*(RP)PORTEDA TA=(OXI<<11):
*(RP)ssA一vs_BAsE://LcD数据帧起始地址
*(RP)SIZE=OxOOFOO14O://屏幕尺寸设定为240*320
*(RP)PcR=ox22os0009;//LcD被动模式,单色显示,4bit总线宽度,Zbpp,
//象素极性高有效,小印第安格式,最后刷新率配置必须写奇数这里是9,
//十分之一的AMBA频率
*(RP)HCR=Oxe800O8b4://HJAIT_1=10,HJAIT_2=10
*(RP)VCR=Ox1400O3O4://、少AIT_1=4,、少AIT_1=4
*(RP)PwMR一0x00000113;/选取象素时钟,关对比度,最后7位设置输出脉冲数目*(RP)DMAcR=oxsoo700o3;//burst牡设置DMA高标志7和低标志3,对于固定长
//度的burst,每次请求burst长度为高标志减一,这里是7一1一6。
//当buffer中的字数小于低标志时触发DMA请求
*(RP)LcD工cR一ox00000000;//中断在加载帧的最后一个或第一个数据时设置,//到LCD之间会有一个延时
#ifdefgrey4
{
*(RP)LGPMR=Ox0000000O://灰度寄存器组的使用应根据PCR中bpp的选定,
//这里PcR设定为Zbpp,即四级灰度。
*(RP)(LGPMR十1*i)=Ox00000004:
*(RP)(LGPMR十2*i)=Ox0000000a:
*(RP)(LGPMR十3*i)=Ox0000000f:
}
#else
for(i=O:i<16:i十十)
*(RP)(LGPMR十4*i)=i:
#endif
*(RP)LECR=Ox00000OI://使能LCDC
while(k十十<4800)
*(RP)(VS_BASE十(卜1)*4)=Ox000Offff;//初始化LCDpanel屏,且可以根据//PCR的设定相应的修改t每四个字节赋一次值
returnEOK:
1llt
{
}
5.4
(2)LcD清屏函数
ledeelear(void)
U32t=O;
for(t=O:t<2400*2:t十十)*(RP)(VSBASE十t*4)=Ox0000000O:
returnE-OK:
射频IC卡数据读/写子程序设计
图6射频1C卡数据读/写子程序流程图
主要功能函数如下所示:
i一mifs_configo;/模块初始化
whi一e(mifs_reques、(工DLE,、、)!一M工_oK):/脸查读卡器范围内是否有卡
if(mifs_ge、_info(Card_snr)!一M工_oK)Con、inue:/肤取卡序列号信息
if(mifs_an、iCo一(o,Card_Snr)!二M工_oK)Continue:/片防碰撞
if(mifs_Se一eC、(Card_Snr,&Size)卜M工_oK)Continue://选择卡片
if(mifs_au、hKey(KEY A,5,Nkey_b)!二。
)eon、inue:/片密钥验证
if(mifs_read(21,da、abuf)!一。
)Continue://卡数据读
if(mifswri、e(21,da、abuf)!二。
)Continue://卡数据写
六、Bootloader分析:
BootLoader移植uClinux在启动时可以分为两个过程:运行操作系统引导程序(bootloader)和运行uClinux操作系统内核。
BootLoader相当于普通PC机的B工05,是在系统复位后执行的第一段代码。
由于sRAM、sDRAM等存储设备属于挥发性的存储器,掉电以后其中的内容就会全部丢失,所以必须把操作系统的内核镜像存放在Flash等不挥发性存储介质上。
但是操作系统在运行时,需要动态地创建一些如数据段、堆栈、页表(针对使用虚拟地址的操作系统)等内容,所以需要在RAM中运行操作系统。
因此,就需要一个引导程序把操作系统的内核镜像从Flash存储器拷贝到RAM中,然后再从RAM中执行操作系统的内核。
Bootloader就是可以完成这样一种功能的程序。
由于Bootloader上电启动后即开始运行,此时,语言的运行环境还没有建立,这部分代码需要用汇编语言编写,而且此段代码还与存储控制器的实现方法密切相关,所以在移植时需要重新编写。
从本质上来讲,Bootloader不属于操作系统内核,因为它仅仅起到一个创立初始化环境和引导内核的作用。
Bootloader在系统启动时主要完成以下凡项工作:
(1)禁止所有中断。
Bootloader设计中不需要中断,当程序跳到操作系统以后,将由操作系统接管全部中断向量。
(2)设置处理器时钟和运行速度。
(3)初始化存储区。
初始化存储区相关寄存器,设置Flash和SRAM的地址、访问宽度和访问速度及DRAM的地址和刷新速度等。
(4)将操作系统内核从Flash中拷贝到SDRAM中,如果是压缩格式的内核,还要将之解压缩。
(5)改写系统的memorymap原先Flash起始地址映射为O,这时需要将RAM的起始地址映射为O。
(6)设置堆栈指针,设置堆栈指针并将bSS段清零,建立C语言的运行环境。
(7)软件初始化。
(8)改变Pc值,使得cPu开始从sDRAM中执行真正的操作系统内核。
Bootload的汇编代码在系统启动时最先被执行,在移植时按照上述步骤编写和修改代码即可。
第(5)步中改变memorymaP,可通过修改memorycontrol中的控制寄存器即可实现。
本课题Bootloader源代码如下所示:
AREABOOTLOADER,CODE,READONLY
ENTRY:Markfirstinstruetiontoexeeute
:配置16位CSANorFlash
ldrrl,=oxll000004 :EM工_CSGBAB地址
ldrr=,=Ox=400=00O
strr=,[rl]
ldrrl,=Oxll000008 ;EMICSGBCD地址
ldrr=,=Ox=eOO=800
strr=,[rl]
ldrrl,=Oxll00000e ;EMICSGBEF地址
ldrr=,=Ox3400300O
strr=,[rl]
ldrrl,=Oxll00000O ;EMIADDRSMCONF地址ldrr=,=OxOg0001ff
strr=,[rl]
ldrrl,=Oxll000O14 ;EMIADDRSMCONFI地址ldrr=,=OxOlloaO77
strr=,[rl]
ldrrl,=Oxll000O18 ;EMIADDRSMCONF=地址ldrr=,=Ox80000500
strr=,[rl]
;配置工作频率为60MH=
ldrrl,=Ox100OIOOe
ldrr=,=Ox17fff
Strr=,[rl]
ldrrl,=Ox100OIO14
ldrr=,=Oxl
Strr=,[rl]
ldrrl,=Ox100OI000
ldrr=,=OxO1800Oed
Strr=,[rl]
ldrrl,=Ox100OIOO4
ldrr=,=OX=3O
Strr=,[rl]
ldrrl,=Ox100OIOO4
ldrr=,=OX1=3O
Strr=,[rl]
;拷贝kernel代码到Sdram
ldrr3,=Ox0000000O
ldrrl,=Ox300O=000 :SDRAM地址
ldrr=,=Ox=000100O :NorFlash地址
LOOP
ldrbr4,[r=],#1
strbr4,[rl],#1
addr3,r3,#1
emPr3,#Oxlf000O
bneLOOP
;remap操作
ldrPe
movro,ro
movro,ro
movro,ro
movro,ro
=Ox=00000ae
REMAP
ldrrl,=Oxll000OIO
ldrr=,=Ox0000000b
strr=,[rl]
:sDRAM地址重印射
;重新设定PC,开始操作系统启动
ldrPe,=Ox300O=000
END
七、调试结果:
射频IC 卡及其读写器系统软、硬件设计完成后,需经系统验证测试,要能正确读写射频IC 卡,达到设计要求。
本章对IC 卡模块设计了可行的测试方案,以达到尽可能真实、完全测试IC卡模块的各项功能的目的。
1、系统测试方案设计:系统测试方案见图7集成测试步骤。
图7 集成测试步骤
本系统测试方案的目的是确保系统中所有的模块集成后能够正常的工作。
为了找到系统中不稳定的模块,测试中才用叠加法,将各个模块分别依次加入到系统中。
在测试中一旦发现错误,测试将终止,同时对模块进行修改。
在修改过后,再重复被终止的测试步骤,继续进行测试。
测试中,有可能出现错误回溯的情况,就是说一个模块在系统测试中没有问题,但是在接下来的测试中添加某些模块,导致系统无法正常运行,并且确定是由该模块引起的。
那么在测试中,应该回溯到该模块,重新进行系统测试,才能保证系统功能的完整性和正确性。
2、测试软硬件环境。