W801 的 FLASH 布局如上图, 留给应用程序的 FLASH 只有 1M 左右, DEMO 多打开几个就超过了, 编译会报错误, 咨询几个问题:
1, 这个布局图里各个部分都是固定吗? 在不影响正常使用的时候哪些部分肯定不能动, 哪些部分有可能可以修改?
2, User Area 区域如果没有使用能设小吗? 能不能为 0? 如果可以如何设置?
3, 如果不远程更新程序, 使用不到 Image OTA Area, 这个区域可以设小或设为 0 吗? 如何设置?
编译报错的话要具体情况具体分析, 这个不一定是程序空间不够, 当然也不能直接否认, 需要看具体报错内容.
1, Flash 布局各个部分的不是严格固定的, 是可以修改的, 像 RF SYSTEM PARAM 这些最好不要改动的
2, User Area 区域如果你的整个系统中确实没有要写入的东西是, 可以变小的, 将空间全部用于存放程序代码都是可以的 只需要找到 gcc_csky. ld 链接文件, 修改 I-SRAM 的长度就可以, 注意需要你计算 ORIGIN + LENGTH 的结果不要超过 SYSTEM PARAM 的其实地址就可以.
3, 如果远程功能确实是用不上的话也是可以将其直接划分为程序空间的 程序中 OTA 升级的代码就不要使用了, 如果有需要的话需要修改对应的宏定义 , 做法基本和上一步一致, 所不同的是, 要修改 ORIGIN 和 LENGTH , 需要注意的是 程序的 ORIGIN 要保持 0x400 地址对齐, 至于原因的话手册上讲的很清楚, 当然通过内核手册也可以知道原因; 这里就不再赘述了; Run Image Header 地址可以紧挨着 SecBootImage Area 的结束地址, 然后 LENGTH 需要加上对应的长度即可, 修改好后找到 aft_build_project. sh 脚本文件, 将其中的 run_img_header 和 run_img_pos 改成你定义的地址就可以了, 重新编译代码就可以了
非常感谢, 经测试已经解决问题!