一,前言
之前已经完成了windows及单片机的自定义bootloader联调,现在只要修改下变成标准协议即可,对于单片机我手里有很多代码可以移植。所以先搞定单片机端。那么需要制作一个外部flash的代码。以前我仅用过flash代码为数组中的值。等于别人给的lib库。自己没有动手制作过外部flash驱动代码。
二,设计
看懂了别人做的外部flash驱动需要的必备项。其实就是将函数都打包到结构体数组中,类似与linux的驱动,属于c原因的面向对象设计法。然后将数组放入固定地址。那么我也自己动手做一个,区别就是芯片不同,那么驱动代码不同而已,框架及设计思路是一样的。
如下需要特别注意
1.option使能c99。
2.s文件要删除。否则报错没有main函数。
3.主要是散转链接表要自定义下。特别是first来定义结构体放首段,且结构体要加const修饰符。
LR_IROM1 0x08007000 0x1000 { ; load region size_region
ER_IROM1 0x08007000 0x1000 { ; load address = execution address
*.o (.flashVar, +First)
.ANY (.flashFunction)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00020000 { ; RW data
.ANY (+RW +ZI)
}
}
三,总结
检查map文件,确认定义的结构体数组对象就放在了首地址。单片机的代码设计已完成,接下来就是找个周末先对单片机进行单独联调了。
网友评论