历史上的今天
今天是:2025年07月11日(星期五)
2018年07月11日 | keil环境下stm32f030R8环境配置
2018-07-11 来源:eefocus
操作步骤:
1、选中芯片型号
2、外部晶振8M,打钩“Use MicroLIB”,
microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。
microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。
microlib 中的函数负责:
创建一个可在其中执行 C 程序的环境。 这包括:
创建一个堆栈
创建一个堆(如果需要)
初始化程序所用的库的部分组成内容。
调用 main() 以开始执行程序,常用于pritf函数的映射。
存取区一般不需要设置,除非用于IAP或APP需要调整区域空间;
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可解决)
附:
Keil MDK 生成BIN 过程
在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。虽然这两个格式的文件非常有利于ULINK2仿真器 的下载和调试,但是ADS的用户更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。为了充分地 利用现有的工具,同时发挥Realview MDK集成开发环境的优势,将*.axf格式文件或*.hex格式文件转换成*.bin格式的文件是十分自然的想法。本文将详细的探讨这种转换方法。
在详细的介绍这种方法之前,先了解一下ARM公司的RVCT开发套件中的fromelf.exe转换工具是十分必要的,因为在Realview MDK中生成*.bin格式文件的工具正是它。
fromelf.exe转换工具的语法格式如下:
fromelf [options] input_file
其中[options]包括的选项及详细描述见表一。
表一 fromelf工具的选项及描述表格
史海拾趣
|
Protel使用中的问题 作者:未知 文章来源:未知 点击数:340 更新时间:2004-12-10 PCB新手值得一看!一、如何将一个原理图中的一部分加到另一张原理图上?答:利用块拷贝。首先将要拷贝的原理图的那部分做成块,用其他文件名存储,然后调入 ...… 查看全部问答> |
|
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢? 下面我给大家简单概括一下: (1) PCB板布线错误; (2) 单片机质量有问题; (3) 晶振质量有问题; (4) 负载电容或匹配电容与晶振不匹配或者电容质量有问题; (5) PCB板受 ...… 查看全部问答> |
|
CE下普通应用开发是选择C还是高级的.NET(Java)合适? 公司有一定数量的普通应用开发,涉及到Socket或其它网络通信,而不是开发驱动程序,这种情况下的常见方案是否选择C/C++?… 查看全部问答> |
|
举个例子来引出我的问题 MX27 处理器以MX21 为基础进行设计,基于ARM926EJ-S s3c2410的处理器是ARM920T 请问各位 首先,之间有什么区别,是不是:1、处理器型号?2、寄存器地址不同?等等 大家能不能帮我说个大概? 其次,编程的时候是不是每 ...… 查看全部问答> |
|
(CoreCon) Failed to connect debug message service! Please check the transport settings.(CoreCon) Transport service failed to connect(CoreCon) Error: A service has failed to connect. Make sure that all services are correctly config ...… 查看全部问答> |
|
我在连接上internet之后,隔了大概2分钟,服务器发来的数据我的GPRS就收不到了数据了。而在这2分钟之内发数据是可以收到的。谁能帮我解答下这是什么原因啊? 还有就是,确认MC52i跟Internet还是连接的,没有断开,因为在这期间一直可以发送数据到 ...… 查看全部问答> |




