操作步骤:
1、选中芯片型号
2、外部晶振8M,打钩“Use MicroLIB”,
microlib 中的函数负责:
-
创建一个可在其中执行 C 程序的环境。 这包括:
-
创建一个堆栈
-
创建一个堆(如果需要)
-
初始化程序所用的库的部分组成内容。
-
-
调用
main()
以开始执行程序,常用于pritf函数的映射。
3、生成hex文件,即烧录文件。
是在keil中编写程序并编译连接成可以下载到开发板的 .hex 文件,然后用jlink仿真器下载;2,是在uboot APP中编写编译代码,生成的是 .bin 文件,可以用uboot 下载。
4、用于生成bin文件,如果不需要则可以略过这一步。
C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o E:\bootloader_030test\OBJ\bootloader_030.bin E:\bootloader_030test\OBJ\bootloader_030.axf
格式:CMD命令 fromelf.exe --bin --output a.bin a.axf
5、
#ifdef USE_STDPERIPH_DRIVER
#include "stm32f0xx_conf.h"
#endif
stm32f0xx_conf.h包含了对库函数头文件的包含。一般情况下要输入:USE_STDPERIPH_DRIVER;
为了保证你的代码在优化后能正确运行,一定要注意在不能被优化的变量前加上:volatile。
选项One
ELF Section per Function的主要功能是对冗余函数的优化。通过这个选项,可以在最后生成的二进制文件中将冗余函数排除掉(虽然其所在的文件已经参与了编译链接),以便最大程度地优化最后生成的二进制代码。
而该选项实现的机制是将每一个函数作为一个优化的单元,而并非整个文件作为参与优化的单元。
选项One ELF Section per Function所具有的这种优化功能特别重要,尤其是在对于生成的二进制文件大小有严格要求的场合。人们习惯将一系列接口函数放在一个文件里,然后将其整个包含在工程中,即使这个文件将只有一个函数被用到。这样,最后生成的二进制文件中就有可能包含众多的冗余函数,造成了宝贵存储空间的浪费。
选项One ELF Section per Function对于一个大工程的优化效果尤其突出,有时候甚至可以达到减半的效果。当然,对于小工程或是少有冗余函数的工程来说,其优化效果就没有那么明显了
选项One
ELF Section per Function 只编译用到的函数。
Include Paths:包含用到的文件路径
6、硬件下载调试配置,用JTAG调试器SW模式下载,即3.3V、SWDIO、SWDCLK、GND(这四根就够了,一般即可下载成功;如果不正常下载则接RST可解决)
附:
在详细的介绍这种方法之前,先了解一下ARM公司的RVCT开发套件中的fromelf.exe转换工具是十分必要的,因为在Realview MDK中生成*.bin格式文件的工具正是它。