嵌入式技术论坛
直播中

h1654155275.5741

7年用户 1012经验值
私信 关注
[问答]

请教nuc980如何实现在线升级

请教,nuc980 如何实现在线升级,是通过u-boot升级吗,应该怎么配置u-boot,升级包要放在哪里?第一次用nuc980,不会linux

回帖(3)

杨平

2022-10-28 10:16:32
我用的是Nor Flash,用RT自己写了一个程序做Bootloader,下载到FLASH的0x00000位置。
应用程序下载到FLASH的0x10000位置。应用程序用了RT的OTA软件包,获取到升级程序包存放到Fal的download分区。
上电的时候bootloader从download取出升级包,刷入到FLASH的0x10000位置,然后再从FLASH的0x10000位置读程序文件到内存,关中断,再把读取到内存中的APP复制到内从0x000位置,然后跳转到
go_app = (iapfun)*(__IO uint32_t *)(0+32);这个位置
go_app();执行应用程序。

其中需要注意的是从FLASH的0x10000位置读程序文件到内存,这个内存需要避开从0x000位置到给应用程序留出的空间;再把读取到内存中的APP复制到内从0x000位置,实现这个功能的代码也需要避开从0x000位置到给应用程序留出的空间;升级包需要自己封装一下,我是做了加密、压缩、添加了个文件头用于指出升级包版保证只更新一次。

可能方法比较笨,但是可以用。
1 举报
  • 1416207424: 老哥,我也是用这个方法。你中断向量重定向怎么做

张超

2022-10-28 10:16:43
上几天刚用过980 ,RTT 带的 uboot 里面有个命令update 直接通过ymode协议 超级终端传输 完成后自动放入文件系统并从新启动。 也可以setenv 给Uboot 设置自定义命令组合,用的时候run 一下

就可以自动进行 放入ram 运行也可以的。有Uboot 这么方便别浪费了。
举报

h1654155275.5741

2022-10-28 10:16:57
感谢大佬指点,我是通过OTA的方式从云上下载固件包,STM32有QBOOT,把升级包放在指定分区就可以了,nuc980应该把升级包放在哪里,uboot应该怎么设置?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分