|
发表于 2017-12-23 17:12:07
|
显示全部楼层
本帖最后由 tanek 于 2017-12-23 17:19 编辑
其实就是MDK通过仿真器将程序写入到RAM里面,这个程序有些是MDK自己做的,有些是芯片厂商提供的。
这个程序完成的功能就是编程flash。厂商一般都是参看这个模板ARM\Flash\_Template实现。
你去看这个模板,就发现你仅仅需要实现几个API和更新一个结构体。
具体API就是这几个
- int Init (unsigned long adr, unsigned long clk, unsigned long fnc);
- int UnInit (unsigned long fnc);
- int EraseChip (void);
- int EraseSector (unsigned long adr);
- int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf);
复制代码
然后再更新一个结构体变量的数值:- struct FlashDevice const FlashDevice
复制代码 你就可以自己完成一个flash算法了。
然后编译器编程生成FLM文件。你可以自己用逆向软件打开这个文件,就发现其实和axf/elf差不多的。
编译器在加载FLM文件的时候,通过分析文件,就可以足够的变量和函数的各种信息,完成加载工作。
IAR也有类似套路,具体在哪个文件不记得了,MDK和IAR也有具体文档说明这些,感兴趣的自己去找吧。
|
|