跟着信息化,智能化,网络化的开展,嵌入式体系技能也将取得宽广的开展空间。嵌入式技能全面打开,现在已成为通讯和消费类产品的一同开展方向。在通讯范畴,数字技能正在全面替代模仿技能。在播送电视范畴,美国已开端由模仿电视向数字电视改动,欧洲的DVB(数字电视播送)技能已在全球大多数国家推行。数字音频播送(DAB)也已进入商品化试播阶段。而软件、集成电路和新式元器件在工业开展中的效果日益重要。一切上述产品中,都离不开嵌入式体系技能。象出路无可计量的维纳斯计划出产机顶盒,中心技能便是选用32位以上芯片级的嵌入式技能。在个人范畴中,嵌入式产品将首要是个人商用,作为个人移动的数据处理和通讯软件。本文提出了运用LPC2148的SD卡完结嵌入式体系晋级的规划计划。
2、整体体系晋级计划规划
厂家出产出产品后,用户购买回去运用,当设备呈现了体系漏洞或许用户不满足现有功用而提出更多需求时,就要对体系晋级或许保护体系功用。厂家只需将SD卡取回,把更新后的程序放入SD卡中,然后发放给用户,用户只需把SD卡刺进终端设备。即可到达体系晋级的意图。图1给出厂商与用户之间的沟通流程图。图2给出整个体系规划流程图。
按图1所示,厂商与用户沟通进程如下:
(1)厂商将一个相似Boot loader的程序经过ISP办法,将其下载到Flash中,如图2所示的方位。
(2)将晋级程序放入SD卡中,随产品一同出厂。
(3)用户拿到SD卡后,将其刺进SD卡槽,终端设备开端作业。
(4)用户运用一段时刻后,若呈现问题或许需求晋级、保护时.只需将SD卡回来厂家即可。
(5)厂家将晋级后的程序放入回来的SD卡中,再回来给用户.或许厂家直接再发放SD卡给用户,而无需用户回来SD卡。
(6)用户拿到SD卡后,将其直接刺进终端设备卡后,则可到达晋级的意图。
出厂前,经过ISP编程办法烧入一个相似于Boot loader的程序。该程序的完结大致分为3个过程:
(1)SPI方法下的SD卡底层驱动;
(2)读出SD卡中的体系程序,并放入指定的Flash地址段中:
(3)跳转到指定的Flash地址段,履行晋级后的体系。
在用户刺进SD卡前,程序不断判别SD卡是否刺进。用户刺进SD卡后,程序首要驱动SD卡,使其能正常作业,然后读取SD卡中的晋级程序,并将其放入指定的Flash地址段中。最终,跳转到指定段,开端作业。厂家可依据需求,恣意组织晋级程序放置的方位。
3、体系硬件规划
中心处理器选用PHILIPS公司的LPC2148。它是一个支撑实时仿真和嵌入式盯梢的32位ARM7微操控器。带有32KB和512 KB嵌入的高速Flash存储器。128位宽度的存储器接口和共同的加快结构,使32位代码能够在最大时钟速率下运转,并带有SPI总线。选用该处理器首要考虑其内部资源丰富,无需扩展存储器和SPI总线,且功用优异,抗干扰能力强,价格低廉,具有极高的性价比。
该规划仅仅产品电路中的一部分。其硬件电路如图3所示。LPC2148具有同步、全双工串行接口(SPI),其最大数据位频率为输入时钟频率的1/8,能够设置为主机或从机作业办法。SD卡是经过SPI总线协议驱动的,数据传输中。主机总是向从机发送一个字节数据,而从机也总是向主机发送一个字节数据。图3中左面为LPC2148,右边为SD卡插槽。SCKl为串行时钟,用于LPC2148与SD卡之间的数据传输时钟信号:MISOl是一个单向信号,用于将数据从SD卡传输至LPC2148;MOSll也是一个单向信号。用于将数据从LPC2148传输至SD卡;SSEL1为选通讯号,用于选中SD卡。图3中的引脚3和引脚6别离接地,引脚4接电源,引脚8用于检测SD卡是否刺进,并可依据实践要求选定。SD卡与LPC2148之间经过SPI协议和SD文件体系的组织方法.才干和谐通讯。
4、体系软件规划
体系软件部分首要经过SPI协议对SD卡初始化,然后依据SD卡的FAF32文件体系组织方法读取SD卡中的数据,将读取数据经过IAP办法将其写入Flash中,最终用一个跳转程序跳转到该段,以到达晋级的意图。
4.1 SD卡的初始化
SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种依据半导体快闪回忆器的新一代回忆设备,它被广泛地于便携式设备上运用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月一同开发研发。巨细犹如一张邮票的SD回忆卡,分量只要2克,但却具有高回忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。
用户运用程序通常以文件的方法拜访SD卡,并以文件的方法存取数据;文件体系层是经过调用SD卡物理层的有关函数来完结的,所以要想以文件体系的方法拜访SD卡,则必须先驱动SD。SD卡的读写操作都是依据指令的,经过向SD卡发送相应的指令并读取相应的呼应操控SD卡。在对SD卡读写前,首要要进行初始化操作。这是保证SD卡能在SPI方法下正常读写数据的条件。SD卡上电复位后,默许是SD方法。为了使SD卡进入SPI方法,必须将CS置低(至少推迟74个时钟)并经过SPI总线发送CMDn,使SD卡复位,一起激活,并进行内部初始化处理,使SD卡退出闲暇状况。
SD卡初始化流程图如图4所示。
SD卡中SPI模块的读操作包含读单块和读多块两种。该体系仅完结了读单块功用。初始化的长度为512字节。函数的完结分为4个过程:①LPC2148向SD卡发送读单块指令(CMD17),SD卡呼应(Rl格局);②等候SD卡发送读开端令牌;③判别收到的令牌是否为0xFE;④从SD卡中读取数据。
4.2 SD卡文件体系
SD卡完结底层驱动后,可依照FAT32文件体系格局对SD卡上的数据进行操作,进而在SD卡上完结读写文件等操作。FAT32文件体系是微软FAT类文件体系中的最高版别.是如今Windows下最常用的硬盘文件体系。
当读取SD卡中的文件时,首要要依据文件名查找该文件的信息结构体。依据文件信息结构体中的开端簇号即可找到数据区第1簇的内容,也可在FAT表中找到第2个簇号。依据第2个簇号又能找到第2簇的内容和FAT表中的第3个簇号,直至遇到文件完毕标志。这样,就可依据FAT表中的簇号读取到悉数文件数据。以图5为例,阐明读取SD卡文件的具体过程:
(1)先在目录项表中找到与文件名匹配的,如“Mvfile”,从“Myfile”所对应的目录项中能够读到该文件的首簇号0004:
(2)依据首簇号0004拜访FAT表,读出首簇号对应的FAT表项内容0005,即第2个簇号。依据第2个簇号再拜访FAT表,读出其对应的FAT表内容,即第3个簇号0006…等。顺次做下去,直到最终一个表项内容为FFFF停止;
(3)由第(2)步可知,“Myfile“这个文件占用了4个簇,这4个簇号构成一个簇链000dH一0005H一0006H一0008H,依据这些簇号所构成的簇链拜访这4个簇号对应的4个数据存储区域.文件“Myfile”就分红4个部别离离寄存在这4个存储区域中161。
4.3 IAP功用的完结
IAP:In Application Programming 是指在运用编程,即在程序运转中编程,便是片子供给一系列的机制(硬件/软件上的)当片子在运转程序的时分能够供给一种改动flash数据的办法。浅显点讲,也便是说程序自己能够往程序存储器里写数据或修正程序。这种办法的典型运用便是用一小段代码来完结程序的下载,实践上单片机的ISP功用便是经过IAP技能来完结的,即片子在出厂前就现已有一段小的boot程序在里面,片子上电后,开端运转这段程序,当检测到上位机有下载要求时,便和上位机通讯,然后下载数据到存储区。
LPC2148支撑多种办法对Flash进行编程,用来写入用户代码或数据。第一种办法是经过内置的串行JTAG接口进行编程:第二种办法是经过UART0进行在体系编程(ISP);第三种办法是经过在运用编程(IAP)。IAP程序是thumb代码,地址为0x7FFFFFF0。在运用IAP擦除、编程操作进程中,片内Flash存储器不行拜访。当用户运转运用程序时,用户Flash区域的中止向量有用.所以在调用Flash擦除、写IAP之前,用户应当制止中止,保证用户中止向量在RAM中有用和中止处理程序坐落RAM中。IAP代码不运用或制止中止。可将SD卡读出的数据用C代码烧入指定的Flash段中:
4.4 程序完结跳转到恣意行代码段履行
现以下例来阐明这段程序,假如程序跳转到肯定地址为0xFFFF0履行,代码如下:
typedef void(*run)();//界说一个无参数,无回来类型的函数指针类型
run address=(run)0xFFFFO;//界说一个函数指针,指向跳转的方位
address()://调用函数
在上述运用程序中,底子没有看到任何一个函数实体,可是却履行了函数调用;实践上它起到了”软重肩“的效果,跳转到CPU发动后第一条要履行的指令方位,即完结了程序的跳转。
5、结语
该规划计划以LPC2148为中心,经过SD卡驱动、FAT32文件体系、IAP功用和程序跳转完结了体系晋级的模块规划,并用于实践开发中。该规划增强了体系保护,缩短了产品的开发周期。节省了很多的人力、财力,添加了与用户的沟通力度。与传统规划比较。在开发时刻、本钱和灵活性等方面都占有优势性。该规划现已调试成功,并作为一个功用模块用于某电子产品上,在产品需求添加新功用和保护体系安稳方面起到了巨大的效果。要注意的是,该程序规划是在Keil下编译经过的,生成的HEX文件不能直接放入SD卡中,由于该文件与经过ISP烧写Flash的文件不一样,要作必定的修正。别的,该计划不只能用于体系晋级,也能用于为程序补丁和写入数据等,也可用于ARM9.因而该规划计划具有广泛的运用远景。
责任编辑:gt