新闻中心

EEPW首页>嵌入式系统>设计应用> LZW压缩算法在终端程序远程更新中的应用

LZW压缩算法在终端程序远程更新中的应用

作者: 时间:2010-06-26 来源:网络 收藏


定义IAP的入口地址:
# define IAP_ENTER_ADR 0x7ffffff1
定义函数类型指针:
Typedef void(* IAP)(uint32[ ],uint32[ ])
IAP iap_entry;
设置函数指针:
Iap_entry=(IAP) IAP_ENTER_ADR;
使用下面的语句来调用IAP:
Iap_entry(command,result);

IAP功能主要通过调用iap_entry()函数来实现。IAP命令和定义的函数如表2所列。



在进行片内Flash修改时,首先需要读取器件的ID和Boot代码命令版本;确认无误后,选择准备编程的扇区;然后擦除扇区并执行扇区查空,将RAM内容复制到Flash中;最后进行RAM内容与Flash的比较,检查是否复制成功。

2的实现

2.1分区

软件开发采用ADS1.2集成开放环境。ADS全称为ARM Developer Suite,是ARM公司推出的ARM集成开发工具。在ADS链接选项ARM Linker中选择Scattered方式后,通过修改.scf文件可以将编译成程序和程序两部分。其中,程序占用0~21扇区,用于实现的功能;程序占用22~27扇区,在出厂后不再进行修改。当进行程序更新时,利用IAP功能对程序部分进行擦除改写,以实现应用程序的更新。链接用的.scf文件定义如下:



在.scf文件中,RO表示程序代码数据内容,RW和ZI表示该程序部分中定义的通用数据变量和需进行零初始化的数据变量。ROM_MAIN部分主要包括应用程序部分和其定义的数据。ROM_EXEC是应用程序的代码区域,位于片内Flash,地址从0开始。IRAM中是程序运行的堆栈,位于片内RAM中。ERAM是应用程序定义的数据变量,位于片外RAM中。LOADER部分是更新程序的代码区域,位于片内Flash,地址从0x78000开始。程序编译、链接完成后,ADS会生成两个名为ROM_MAIN和LOADER的十六进制文件。在需要程序更新时,主站将完成二进制提取的ROM_MAIN文件通过有线或无线的方式发送给终端,终端全部收到后调用更新程序进行程序更新。但由于提取完的二进制文件仍然比较大,需要对其进行,以降低通信费用。


评论


相关推荐

技术专区

关闭