因为项目需要,要把boot代码里的flash驱动程序放到ram里,而且不能再flash里保存,之前没用过瑞萨的芯片,找了一大堆的参考文件看,后来发现还没有看它的说明文档好使。
把cc-rl用户手册看了一下。想到一个简单的方法,先把flash的驱动配置到ram中,在按照map文件中的地址,将bin文件中的二进制文件取出来,然后再软件里定义一个数组,地址指定在ram中的固定位置。这样是不是可以实现,接收驱动bin档后放到数组中,在程序里执行烧写命令。
先把想法记录下来,等有时间试一下。
隔了几天,总算把另一个项目整完了。今天实验一下,我之前的想法是否可以。
首先把flash驱动放到ram里。配置如图
打开map文件,可以看到flash放的位置
数据有726个字节,也挺大的了。不知道为什么弄这么大干啥,浪费资源。等有空试试自己写一个,是不是会小点。
跑题了,回来继续,打开编译后的hex文件,找到flash放置地址如图
把这段数据从hex文件里拷出来,单独放到一个hex文件中,可以通过can总线下发给设备。
为了验证数据是否正确,我把这段数据放到一个数组里,然后在代码里,把ram里放置flash驱动的段落清零,再把数组赋值到段落上。
在板子上跑了一遍,程序可以正常运行,可以把app段的flash擦掉。
这样的话,证明我的思路是正确的。等can总线调完了,再验证一下,能不能升级程序。先这样。