1.MDK-armARM编译工具
2.å¦ä½å¶ä½arm-linux-gccç¼è¯å·¥å
·
3.一文看懂hex文件、bin文件、axf文件的区别
MDK-armARM编译工具
MDK-arm是一款针对ARM架构设计的专用编译工具链,以前被称为ARM RealView编译工具。它主要包括以下组件:ARM C/C++ 编译器(armcc),用于将C/C++源代码转化为高效且快速的android项目菜谱源码ARM汇编语言。
Microlib,一个轻量级的标准库,专为微控制器设计,简化了程序开发过程。
ARM Macro汇编器(armasm),用于处理汇编语言指令,提升程序执行效率。
ARM链接器(armLink),负责将编译后的目标模块进行链接,确保程序的完整性。
ARM工具(Librarian and FromELF),提供了额外的功能,如调试支持和符号表管理。测测屋 源码
使用MDK-arm,工程师可以利用C或C++编写应用程序,同时享受ARM编译器带来的高效编译和符号信息嵌入,便于uVision或在线调试器进行调试。此外,ARM RVCT编译器以其在代码密度方面的卓越性能而备受赞誉,能生成最小代码量,降低硬件成本,支持ISO标准C/C++语言,深海翼支付源码并支持-bit ARM、-bit Thumb和混合/-bit Thumb2指令集的优化编译。 ARM公司持续优化其编译器,不仅在代码密度和性能上有所提升,还引入了诸如Microlib等新特性,以满足不断变化的开发需求。å¦ä½å¶ä½arm-linux-gccç¼è¯å·¥å ·
ä¸ãä¸è½½æºæ件
æºä»£ç æ件åå ¶çæ¬ï¼
binutils-2..tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6..tar.bz2 ï¼ç±äºæå¨ç¼è¯åºéçè¿ç¨ä¸ï¼æ ¹æ®åºéçä¿¡æ¯ä¿®æ¹äºç¸å ³çC代ç ï¼æ è没æä¸è½½ç¸åºçè¡¥ä¸ï¼
ä¸è¬ä¸ä¸ªå®æ´ç交åç¼è¯å¨æ¶åå°å¤ä¸ªè½¯ä»¶ï¼ä¸»è¦å æ¬bilingualsãccãglibcçãå ¶ä¸ï¼binutils主è¦çæä¸äºè¾ å©å·¥å ·ï¼gccæ¯ç¨æ¥çæ交åç¼è¯å¨ï¼ä¸»è¦çæarm-linux-gcc交åç¼è¯å·¥å ·ï¼èglibc主è¦æä¾ç¨æ·ç¨åºæéè¦çä¸äºåºæ¬å½æ°åºã
äºã建ç«å·¥ä½ç®å½
ç¼è¯æç¨ä¸»æºåå· fc.iï¼èææºéçæ¯VM7.0ï¼Linuxåè¡çéçæ¯Fedora9,
第ä¸æ¬¡ç¼è¯æ¶ç¨çæ¯rootç¨æ·ï¼ç¬¬äºæ¬¡ç¨ä¸è¬ç¨æ·yyzï¼, ææçå·¥ä½ç®å½é½å¨/home/yyz/crossä¸é¢å»ºç«å®æï¼é¦å å¨/home/yyzç®å½ä¸å»ºç«crossç®å½ï¼ç¶åè¿å ¥å·¥ä½ç®å½ï¼æ¥çå½åç®å½ãå½ä»¤å¦ä¸ï¼
åå»ºå·¥å ·é¾æ件夹ï¼
[root@localhost cross]# mkdir embedded-toolchains
ä¸é¢å¨æ¤æ件夹ä¸å»ºç«å¦ä¸å 个ç®å½ï¼
setup-dirï¼åæ¾ä¸è½½çå缩å ï¼
src-dirï¼åæ¾binutilsãgccãglibc解åä¹åçæºæ件ï¼
Kernelï¼åæ¾å æ ¸æ件ï¼å¯¹å æ ¸çé ç½®åç¼è¯å·¥ä½ä¹å¨æ¤å®æï¼
build-dir ï¼ç¼è¯src-dirä¸é¢çæºæ件ï¼è¿æ¯GNUæ¨èçæºæ件ç®å½ä¸ç¼è¯ç®å½å离çåæ³ï¼
tool-chainï¼äº¤åç¼è¯å·¥å ·é¾çå®è£ ä½ï¼
programï¼åæ¾ç¼åç¨åºï¼
doc:说æææ¡£åèæ¬æ件ï¼
ä¸é¢å»ºç«ç®å½ï¼å¹¶æ·è´æºæ件ã
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
æ·è´æºæ件ï¼
è¿éæ们éç¨ç´æ¥æ·è´æºæ件çæ¹æ³ï¼é¦å åºè¯¥ä¿®æ¹setup-dirçæé
[root@localhost embedded- toolchains] #chmod setup-dir
ç¶åç´æ¥æ·è´/home/yyzç®å½ä¸çæºæ件å°setup-dirç®å½ä¸ï¼å¦ä¸å¾ï¼
建ç«ç¼è¯ç®å½ï¼
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
ä¸ãè¾åºç¯å¢åé
è¾åºå¦ä¸çç¯å¢åéæ¹ä¾¿æ们ç¼è¯ã
为ç®åæä½è¿ç¨ãä¸é¢å°±å»ºç«shellå½ä»¤èæ¬environment-variablesï¼
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
ç¨ç¼è¾å¨viç¼è¾ç¯å¢åéèæ¬envionment-variablesï¼[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
æªå¾å¦ä¸ï¼
æ§è¡å¦ä¸è¯å¥ä½¿ç¯å¢åéçæï¼
[root@localhost scripts]# source ./environment-variables
åã建ç«äºè¿å¶å·¥å ·ï¼binutilsï¼
ä¸é¢å°åæ¥ä»ç»å®è£ binutils-2..1çè¿ç¨ã
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2..1.tar.bz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
å建Makefileï¼
[root@localhost build-binutils] #../../src-dir/binutils-2..1/configure --target=$TARGET --prefix=$PREFIX
å¨build-binutilsç®å½ä¸é¢çæMakefileæ件ï¼ç¶åæ§è¡makeï¼make install,æ¤è¿ç¨æ¯è¾ç¼æ ¢ï¼å¤§çº¦éè¦ä¸ä¸ªåéå·¦å³ãå®æåå¯ä»¥å¨$PREFIX/binä¸é¢çå°æ们çæ°çbinutilã
è¾å ¥å¦ä¸å½ä»¤
[root@localhost build-binutils]#ls $PREFIX/bin
一文看懂hex文件、bin文件、axf文件的仙剑斩妖传源码区别
在STM开发中,遇到的hex文件、bin文件与axf文件都是可烧写至板子运行的文件。它们有何区别?让我们先回顾C语言编译过程。
编译过程包括预处理、编译、汇编和链接四个阶段。在STM开发中,虽然我们通常使用MDK或类似IDE进行编译,实际编译过程大致相同。yum安装内核源码
以LED程序为例,编译过程包括:源代码 -> 目标代码 -> 可执行代码。IDE提供便捷操作,如单击编译按钮即可完成整个流程。
IDE或工具集的编译工具一般位于安装目录的bin文件夹。如MDK的编译工具位于安装路径下的bin文件夹。
回归主题,MDK编译过程使用安装路径下的编译工具完成。同样,我们可在cmd命令窗口通过armcc命令执行编译。
不同文件格式用途各异。axf文件是默认生成的文件,包含代码数据与调试信息,用于MDK中的调试。Hex文件记录代码存储地址,便于下载器使用。Bin文件由axf文件生成,是最小可运行文件,仅包含直接代码映像。
文件大小:axf文件最大,hex文件次之,bin文件最小。
hex文件通过FlyMcu工具烧录,bin文件则使用STMCubeProgrammer和STLINK进行下载。
至此,关于文件格式的区别与烧录方法已简要说明。对文件内容有兴趣的朋友,可进一步深入分析。
总结,hex、bin、axf文件在STM开发中各有用途,理解其区别有助于更高效地进行项目开发。编程学习是一个持续的过程,希望每位学习者都能不断进步。