1.为什么使用keil uv3编译错误failed to execute arm-uclibc-gcc
2.最新keil5 MDK-ARM开发环境搭建
3.Keil&AVH使用Keil新建Arm Visual Hardware(AVH)项目
4.ARM C语言编程优化策略(KEIL平台)
为什么使用keil uv3编译错误failed to execute arm-uclibc-gcc
failed to execute arm-uclibc-gcc,译源l源这句话的码k码意思是无法执行arm-uclibc-gcc。所以,译源l源编写ARM的码k码程序,windows下用ADS1.2编程,译源l源linux用Gcc编程。码k码抢到源码自己装个虚拟机,译源l源安装一个linux系统,码k码然后在下载gcc编译器,译源l源应该就可以编译ARM程序了。码k码不过,译源l源在windows下也可以用ADS1.2不要用Keil
最新keil5 MDK-ARM开发环境搭建
习惯于Linux开发环境的码k码我,一直以来都是译源l源采用gcc+cmake进行单片机开发。然而,码k码面对一款功能复杂的译源l源na源码开发板和KEIL提供的出厂程序工程,我不得不放弃原先的计划,转而尝试安装最新版本的KEIL5。然而,这一过程充满了各种坑。
最新版本的KEIL-MDK软件中,附带的是V6编译器,而我手头的开发板工程是基于V5版本的。这给我的开发带来了不小的困扰。
为了确保开发顺利,我需要下载单板对应的芯片开发包,以便将其导入到KEIL中。例如,对于STMF4系列的开发板,我需要下载Arm Keil的springboots源码相关开发包。
在KEIL中,我还需确保安装了适用于V5版本的ARMCC编译器。为此,我通过官方网站或网络资源找到了编译器的下载链接。
安装KEIL-MDK软件相对简单,确保路径中无中文字符,将安装包放置在C盘根目录下即可。接着,通过安装向导完成软件的安装过程。
在安装开发包时,选择右键打开并进行解压操作,自动完成包的安装。
在设置ARMCCV5编译器路径时,需要将默认路径Program修改为KEIL安装目录下的diypage源码ARM子目录。
针对构建工程的编译器设置,需要将工程构建所使用的编译器版本设置为V5。至此,基本的设置完成。
在解决了一些小插曲,如双击注册机被系统防火墙误判为风险程序后,我终于成功安装了KEIL,并运行了DEMO程序。通过对比armcc和gcc的差异,我顺利地进行了代码移植,使得工程在gcc环境下同样能够编译运行。至此,我再次拥有了愉快的开发体验,包括使用make、vtysh 源码make flash、gdb等工具进行编译、烧录和调试。
Keil&AVH使用Keil新建Arm Visual Hardware(AVH)项目
为了模拟Cortex-M核心,选择使用SSE--MPS3作为目标。仅勾选与串口相关的组件以实现最简单的"Hello World"输出。需特别配置Target,选择"TrustZone disabled"。修改"Read/Write Memory Areas"至与官方Demo一致,勾选"Create HEX File"。在"Misc Controls"添加-Wno-padded -Wno-covered-switch-default。在配置Linker时,取消"Use Memory Layout from TargetDialog",并选择合适的Scatter File,通常是官方提供的Sct文件。配置Debug,选择"Models ARMv8-M Debugger",并使用"Models ARMv8-M Debugger"进行设置,填写模拟器地址和cpu0。编写简单程序,执行编译并开始仿真。
在首次编译时,可能会遇到"Error: LE: Undefined symbol wait_us (referred from device_definition.o)"的错误。此错误源自与I2C相关的函数未被定义,实际上并未引入I2C组件。为解决此问题,导入三个必要的工具包。推测此为Keil的内部bug。
运行项目时,可能出现命令行无输出的现象。这通常因未导入STDOUT模块中的User等级组件而起。修改导入后再次编译。
若收到找不到Telnet的错误信息,应知Windows系统不自带Telnet.exe,需手动开启此程序。
参考资料:
完成模拟器配置、编写及编译程序的详细步骤和解决遇到的常见错误。ARM C语言编程优化策略(KEIL平台)
ARM C语言在KEIL平台上的编程优化策略主要包括编译器选项、循环优化、内联函数、volatile关键字使用、纯净函数、数据对齐、C特性、栈和寄存器管理、编译器特性以及链接器应用。以下是对这些内容的概述:
1. 编译器优化选项:KEIL提供了不同等级的优化设置,如最小优化便于调试,有限优化在保持一定调试信息的同时减少代码体积,高度优化可能影响代码执行流程,而最大程度优化则牺牲调试信息以换取更高的执行效率。循环展开、内联函数的使用和控制,以及volatile关键字的正确使用都是优化策略的关键部分。
2. C循环优化:循环条件和展开的处理对代码体积和执行速度有直接影响。使用-O3优化等级时,编译器会自动进行适度的循环展开。
3. 内联函数:内联函数是代码体积与性能之间的权衡。编译器会根据优化等级和函数特性决定是否内联,使用__inline等关键字可以影响这一过程。
4. volatile关键字:在优化等级较高时,volatile可以防止未定义行为,尤其是在中断、多线程和寄存器读取中,需确保正确使用。
5. 纯净函数和数据对齐:利用纯净函数和自然对齐的特性,可以优化代码执行效率,减少不必要的变量访问。
6. C特性:支持更易用的循环和结构体赋值,但需注意动态数据的使用限制和栈管理。
7. 链接器应用:理解section访问和函数替换技术,如$Super$$和$Sub$$,有助于在链接阶段进行代码定制。
深入理解并灵活运用这些策略,可以有效提升在KEIL平台上的ARM C语言程序性能和效率。