anobodykey 发表于 2016-4-29 16:07:47

STM32 IAP

近日在学习IAP时遇到一个问题,在检测APP程序所处地址是否已经编写了应用代码时使用的是以下语句/* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
          if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)即检测栈地址是否合法处于0x2000_0000 ~ 0x2002_0000之间,但这个区间只有128KB,而STM32系列芯片有很多还有SRAM高达384KB的,即大小为0x60000,那如果栈地址设置的比较高的话,这个检测不就失效了吗?

nipenghao 发表于 2016-4-29 16:33:07

那可以改成 ((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFA0000 ) ,反正你用什么芯片你都知道的,根据大小相应改下好了。

anobodykey 发表于 2016-4-29 17:29:31

nipenghao 发表于 2016-4-29 16:33
那可以改成 ((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFA0000 ) ,反正你用什么芯片你都知道的,根据 ...

嗯,你说的有道理。

积木工 发表于 2016-5-2 10:39:12

这个好:loveliness:
页: [1]
查看完整版本: STM32 IAP