打印
[技术问答]

想請問 Cortex-M4 NUC442 IAP功能的实现(OTA下載)

[复制链接]
293|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位前辈好,

目前功能需要透过NB-IoT通信来远距升级MCU软件,

MCU用的是Cortex-M4 NUC442,

如图一原本的代码是放在0x00000000~0x00030000的APROM中(Old Application),

开始升级MCU软件时,

用NB-IoT通讯接收Data,

并用UART传到MCU中,

接着从0x00030000开始烧写新的代码(New Application)

最后使用NUC442内建的Function FMC_SetVectorPageAddr(0x00030000)来改变程式起始位址

但是在下面这两行代码却会当机无法运行,
__set_SP(*(uint32_t *)USER_AP_NEW);
func();

1. 想请问各位这是为什么呢?
还希望有前辈能帮我解释下iap.c的代码


2. 另外还有个问题,
想知道我将新代码写烧写入0x00030000的方式是否有误,
以下是烧写完后,我从0x00030000读取出来的值

0x00030000 = 0x0C
0x00030001 = 0x51
0x00030002 = 0x00
0x00030003 = 0x01
0x00030004 = 0x93
0x00030005 = 0xC0
...

3. 我看到网上有前辈用的是如下图二的方式,
他的代码分为Boot、App1、App2三段,
想问是某一定得有个"BooT"代码才能使用IAP升级呢?

因为我才刚接触这块板子,
上面的流程或观念如果有错还请各位指教,
谢谢!
(图一)
(图二)


使用特权

评论回复
沙发
wanduzi| | 2022-2-27 10:49 | 只看该作者
可以参考厂家的例子做。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

342

主题

2337

帖子

4

粉丝