共2条
1/1 1 跳转至页
IAP,ISP,IAP IAP的实际意义何在?如果能远程ISP,是否比IAP好?
问
本人没做过IAP,请教有IAP经验高手,谢谢!
1、需IAP的嵌入式系统,程序的架构应该怎样规划?
2、是否每个函数的存储空间及最大代码量都有要求?
3、如果要增加任务,而不是简单地修改某个函数时,IAP能实现吗?怎样实现
4、如果可以远程ISP,是否比IAP要好,并可取代之?
5、Windows(含WinCE)或Linux等操作系统中,在安装软件的时候,也可以说是IAP?但我们的嵌入式系统功能有限,不能跟他们比的
6、在几十K到几百K代码的嵌入式系统中,IAP有实际意义吗?请举例...
本人认为第3点是最有实际意义的,容易实现吗?暂且这么多,请指教,谢谢! 答 1: 注:这里说的IAP是指代码升级... 而不是简单地把Flash当数据存储空间用... 答 2: 好象有不少系统有IAP的功能例如一台DVD机,如果代码升级的话,买一张升级用的光盘,塞进去,然后启动某个操作,就可以升级里面的固件了。
这样就方便了代码的升级,而不用拿回原厂,特别是发现有bug,要招回时,更能体现出其优势。 答 3: 应该给有优缺点,我用IAP准备写数据 答 4: 是的,用IAP写数据很方便,特别象2138这种大容量的 答 5: re关于您的第三点,其实很容易实现的
您在我们公司的网站上搜索 "IAP"
您会找到很多的文章,选几篇看一下,估计您肯定就明白了!
IAP的本质就是MCU在运行的过程中,可以自由地修改FLASH code区中的任意数据.
您可以将您的程序增加到某个code位置,然后跳转到那里执行即可! 答 6: 对啊.........就好象PC装软件一样
不过希望在LPC2XXX上面,可以看到一些具体的成功方案 答 7: 第三点能多次可靠实现?如果这样的话,是否就没必要把系统的一些初始化设置信息存到片外的EEPROM里了?直接让程序改写FLASH,程序开始时再去上次改写的FLASH区里读取? 答 8: 就想让FLASH"变成"EEPROM 答 9: 可以。不过要注意数据完整性。flash是块擦除。 答 10: 实际上第3点的实现并非容易 说的没错,IAP的本质就是MCU在运行的过程中,可以自由地修改FLASH code区中的任意数据. 把Flash当EEPROM用是很容易。
第3点的实现,并不是简单地添加一个任务。任务的启动,信号量,事件标志,参数传递......等等或多或少与其它任务相关连的。也是说,IAP增加一个任务的时候,还要修改其它已经存在的任务。而修改其它已存在的任务,比增加一个任务麻烦些...
实际上,要想用IAP升级代码,工作量非常大的(当然,做好工具和架构后,一劳永逸)
1、程序架构的规划
在方案阶段就要有一篇好的程序架构文档及IAP规划文档
2、IAP代码的编写
这个容易,有现成的API调用
3、上位机软件的支持
不知是否有现成的好软件?没有的话,要自己设计。当然也可用串口通来实现
4、目标代码的处理,
需把每个函数的目标代码分离,每个函数有固定的存储首址
5、修改已存在的任务时必须有足够大的空间
该任务原来分配空间不够的话,可通过调用函数的方式实现
OK,做好这些,IAP也应该很容易了...
答 11: 我用IAP做BOOTLOADER...PC对产品升级. 答 12: 对于Flash块擦除的LPC21xx IAP升级代码是很痛苦的。LPC22xx还好,可以扩展外部RAM 答 13: 主要是块分得太大了,升级是困难.主要是块分得太大了,升级操作困难.
这个是LPC2000系列的一大缺陷
如果像AVR系列就分256一个块就好了.
1、需IAP的嵌入式系统,程序的架构应该怎样规划?
2、是否每个函数的存储空间及最大代码量都有要求?
3、如果要增加任务,而不是简单地修改某个函数时,IAP能实现吗?怎样实现
4、如果可以远程ISP,是否比IAP要好,并可取代之?
5、Windows(含WinCE)或Linux等操作系统中,在安装软件的时候,也可以说是IAP?但我们的嵌入式系统功能有限,不能跟他们比的
6、在几十K到几百K代码的嵌入式系统中,IAP有实际意义吗?请举例...
本人认为第3点是最有实际意义的,容易实现吗?暂且这么多,请指教,谢谢! 答 1: 注:这里说的IAP是指代码升级... 而不是简单地把Flash当数据存储空间用... 答 2: 好象有不少系统有IAP的功能例如一台DVD机,如果代码升级的话,买一张升级用的光盘,塞进去,然后启动某个操作,就可以升级里面的固件了。
这样就方便了代码的升级,而不用拿回原厂,特别是发现有bug,要招回时,更能体现出其优势。 答 3: 应该给有优缺点,我用IAP准备写数据 答 4: 是的,用IAP写数据很方便,特别象2138这种大容量的 答 5: re关于您的第三点,其实很容易实现的
您在我们公司的网站上搜索 "IAP"
您会找到很多的文章,选几篇看一下,估计您肯定就明白了!
IAP的本质就是MCU在运行的过程中,可以自由地修改FLASH code区中的任意数据.
您可以将您的程序增加到某个code位置,然后跳转到那里执行即可! 答 6: 对啊.........就好象PC装软件一样
不过希望在LPC2XXX上面,可以看到一些具体的成功方案 答 7: 第三点能多次可靠实现?如果这样的话,是否就没必要把系统的一些初始化设置信息存到片外的EEPROM里了?直接让程序改写FLASH,程序开始时再去上次改写的FLASH区里读取? 答 8: 就想让FLASH"变成"EEPROM 答 9: 可以。不过要注意数据完整性。flash是块擦除。 答 10: 实际上第3点的实现并非容易 说的没错,IAP的本质就是MCU在运行的过程中,可以自由地修改FLASH code区中的任意数据. 把Flash当EEPROM用是很容易。
第3点的实现,并不是简单地添加一个任务。任务的启动,信号量,事件标志,参数传递......等等或多或少与其它任务相关连的。也是说,IAP增加一个任务的时候,还要修改其它已经存在的任务。而修改其它已存在的任务,比增加一个任务麻烦些...
实际上,要想用IAP升级代码,工作量非常大的(当然,做好工具和架构后,一劳永逸)
1、程序架构的规划
在方案阶段就要有一篇好的程序架构文档及IAP规划文档
2、IAP代码的编写
这个容易,有现成的API调用
3、上位机软件的支持
不知是否有现成的好软件?没有的话,要自己设计。当然也可用串口通来实现
4、目标代码的处理,
需把每个函数的目标代码分离,每个函数有固定的存储首址
5、修改已存在的任务时必须有足够大的空间
该任务原来分配空间不够的话,可通过调用函数的方式实现
OK,做好这些,IAP也应该很容易了...
答 11: 我用IAP做BOOTLOADER...PC对产品升级. 答 12: 对于Flash块擦除的LPC21xx IAP升级代码是很痛苦的。LPC22xx还好,可以扩展外部RAM 答 13: 主要是块分得太大了,升级是困难.主要是块分得太大了,升级操作困难.
这个是LPC2000系列的一大缺陷
如果像AVR系列就分256一个块就好了.
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |