1、引言
随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的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.因此该设计方案具有广泛的应用前景。
中国移动2020年智能硬件质量报告
2023年数据中心12大趋势
玩赚区块链手游——“聚游公社”
访谈捷通华声灵云 展望中国人工智能产业
小米年货节最后一天还不开买,还在等什么呢?
一种嵌入式系统升级的设计和实现
华为重磅发布未来铁路移动通信系统白皮书
创芯引领 共创未来|华润微电子参加2023集成电路(无锡)创新发展大会
IBM:拥抱物联网,开启“感知建筑”新纪元
如何衡量工业交换机的延迟?
透明LED玻璃屏在智能餐厅有何应用优势
孵化出我们自己的台积电 江苏省将筹建集成电路工艺技术研究所
蚀刻的原理
世界级设计大奖加冕,BPFS2斩获德国IF设计奖
一文知道LED灯珠型号白发绿和绿发绿的区别
小米6最新消息:果销量走下神坛,小米6落井下石,5月9日天猫现货开售?
爱好无人机航拍 几个技术小窍门不容错过
搞什么鬼?特斯拉再度推迟Model 3交付,为期1个月
轨道车辆门系统研发生产企业康尼机电发布2022第一季度报告
采用双摄的三星 Galaxy S9+ 内部长什么样?