使用 W800 SDK 时, 尤其使用 W802 芯片外置 flash 时, 经常会涉及到修改 flash 的空间分配, 本文主要讲述如何修改固件在 flash 的运行地址.
主要涉及如下几个文件.
1, ld/w800/gcc_csky. ld
上图中 0x080d0400 代表的是运行固件在 flash 中的起始地址, 0x120000 表示运行固件的最大长度, 这些需要根据自己的实际使用情况来修改. 注意这里 0x080d0400 是固件的起始地址, 不是固件 header 的地址.
2, tools/w800/. config
如果使用的 make 命令方式编译则需要修改这个配置文件, CONFIG_W800_IMAGE_HEADER 为运行固件的 header 的起始地址. CONFIG_W800_RUN_ADDRESS 为运行固件的起始地址, 与上面 ld 文件中的地址一致.
3, tools/w800/utilities/aft_build_project. sh
如果用的不是 make 命令方式, 而是用的 CDK 编译方式, 则需要修改这个文件, run_img_header 是运行固件的 header 在 flash 中的地址. run_img_pos 是运行固件在 flash 中的地址, 与 ld 文件中的地址一致. . config 文件和 aft_build_project. sh 文件根据自己的编译方式选择对应的文件修改即可, 两个都修改也可以.
4, include/driver/wm_flash_map. h
CODE_RUN_START_ADDR 指的是运行固件 header 的地址. USER_ADDR_START 指的是用户自己的应用参数保存位置地址, 根据 "WM_W800_QFLASH 布局说明" 文档里的划分空间, 该位置在运行固件之后, 所以在运行固件位置移动的情况下, 用户区起始地址也要对应的向后移动, 以保证 CODE_RUN_START_ADDR 的地址大于固件运行地址加与固件最大长度之和.