旅游网站做模板素材,wordpress怎么解决后台编辑器卡顿,加强官方网站建设,网络营销与推广方法最近在调LPC177X芯片IAP升级时发现#xff0c;同一套代码#xff0c;稍微加了点东西就导致写入失败#xff0c;确认写入flash接口无误后
#define SRC_ADDR_NOT_MAPPED 4通过写入失败返回值#xff0c;上网查阅资料 我在这里勾选了IRAM2区#xff0c;也就是默认是可以使用…最近在调LPC177X芯片IAP升级时发现同一套代码稍微加了点东西就导致写入失败确认写入flash接口无误后
#define SRC_ADDR_NOT_MAPPED 4通过写入失败返回值上网查阅资料 我在这里勾选了IRAM2区也就是默认是可以使用IRAM2区的 但其实这是不推荐我们使用的因为如果USB有数据存在这里就会起冲突。 正常情况下如果存储空间足够编译器编译时会自动分配变量到IRAM1的存储空间中不需要用到IRAM2。由此可见我的程序变量定义超过了IRAM1的空间大小。 事实也是如此我在程序里定义了一个buffer[1984]的数组用来存放USB发送过来的bin文件所以导致某些变量只能被映射到IRAM2中存储。而我猜测IAPCopyRAMToFlash这个函数读取的源地址应该只是在IRAM1这个范围因此才会出现返回SRC_ADDR_NOT_MAPPED这个错误代码。 推测可能是修改后程序bin文件增加了1kb导致运行过程中侵占了RAM空间所以RAM写入FLASH失败。基于此同时比较ROM大小配置和JLINK读取芯片实际占用空间但发现boot程序的ROM区域是有空余的而且如果不足的话应该会编译失败但还是通过加大rom区域大小来试验最后还是会写入失败然后裁剪工程也无果。
最后思考还有什么会用到ram空间最后想到了可能FreeRtos会占用RAM百度查找资料发现确实会占用很多RAM空间然后通过减少FreeRTOSConfig.h文件里的configTOTAL_HEAP_SIZE大小最终测试写入成功。
感言 Boot程序还是怎么简单怎么来加入RTOS占用了太多空间而且后续还有其他一些问题资料少极难解决。