【分享】linux下配置ARM开发环境笔记——转帖

2020-02-11 09:13发布

linux下配置ARM开发环境主要包括以下几个方面:
  • IDE: Eclipse + CDT
  • ARM-toolchain: GNUARM
  • Debug server:JLink GDBServer
如果Eclipse你很熟悉,正巧JLink又在手上,而且使用的是debian体系的distro(mint/ubuntu…)的话,请继续看下去吧,对于freescale的Kinetis系列,配置完毕还有免费不限代码大小的Processor Expert可以用。1.安装Eclipse CDT前往eclipse官网下载Eclipse IDE for C/C++ Developers,包括Eclipse IDE和CDT插件。下载后解压到你需要的文件夹,执行根目录下eclipse即可。如果之前安装过Eclipse,请检查版本,不是Kepler的话,去上面的官网链接下载吧,可以省去很多版本不兼容的麻烦,是Kepler的话打开Help->Install New Software…,然后Add…如下地址:http://download.eclipse.org/tools/cdt/releases/kepler.全部勾选安装。2.安装GNUARMsudo add-apt-repository ppa:terry.guo/gcc-arm-embeddedsudo apt-get updatesudo apt-get install gcc-arm-none-eabi3.安装JLink GDBServer:前往segger官网下载 J-Link software & documentation pack for Linux,包括JLink GDB Server和J-Link Commander。下载完毕双击deb安装(有deb安装工具的话)或者执行:dpkg --install your_deb_file4.安装GNU ARM Eclipse插件 打开Eclipse,执行Help->Install New Software…,然后Add…如下地址:http://gnuarmeclipse.sourceforge.net/updates全部勾选安装。5.安装Processor Expert(Kinetis系列)如果是freescale的MCU的话,freescale以eclipse插件的形式提供了Processor Expert工具,相比官方的codewarrior工具,一来代码量没有限制,二来提供了linux兼容。前往freescale官网下载,‘Download’栏下选择Microcontrollers Driver Suite v10.2 plug-in for existing Eclipse 3.7 (Indigo) installations(貌似需要注册帐号)。
解压缩后得到两个文件,打开Eclipse,执行Help->Install New Software…,然后Add…->Archive…全部安装。上面几步都顺利完成之后,之后下面基本是一些配置的步骤了:
  • 对于STM32系列来说最新版的GNU ARM Eclipse插件集成了一个专门的工程向导,可以建立基于ST标准库的STM32工程,Eclipse和相应的插件会帮你处理好头文件以及toolchain的路径设置。
  • 对于Kinetis系列,freescale提供的Processor Expert插件也集成了一个专门的工程向导,但是向导产生的工程并没有配置编译工具和路径,还需要做一些额外的工作:
1.右键工程名称 -> Properties -> C/C++ Build > Tool Chain Editor2.去掉勾选 Display compatible toolchains only,然后下面的下拉框选择 Cross GCC,然后Apply3.单击左侧的Settings -> Manage Configurations,给当前的配置起一个名字(随意改,例如:K60_Debug)4.在Settings下面有许多需要修改的设置,首先是Cross Settings:Prefix填入:arm-none-eabi-Path填入:/usr/bin5.在Cross GCC Compiler -> Includes添加如下包含:“${ProjDirPath}/Sources”“${ProjDirPath}/Generated_Code”“${ProcessorExpertPath}/lib/Kinetis/iofiles”“${ProcessorExpertPath}/lib/Kinetis/pdd/inc”6.在Cross GCC Compiler -> Compiler Miscellaneous Options -> flag中添加:-c -fmessage-length=0 -mcpu=cortex-m4 -mabi=aapcs -mthumb7.使用C++的话,Cross G++ Compiler设置同上8.在Cross G++ Linker -> Miscellaneous-> flag中添加:-mthumb -T”${ProjDirPath}/Project_Settings/Linker_Files/ProcessorExpert.ld”9.在Build Artifact标签页下面指定extension为elf写完地一个led_blink的程序之后,就要debug试试看了。根据debug server不同,主要有以下两种方式:
  • Eclipse -> CDT debugger -> OpenOCD -> JLink -> ARM MCU
  • Eclipse -> CDT debugger -> JLink GDB Server -> JLink -> ARM MCU
OpenOCD不支持最新的JLink V8固件,我也懒的降级回到V6,故选择了后一种,不过Segger的JLink GDB Server有bug,主要是以下两点:
  • 每次断开连接后提示segmentation fault,下次debug前需要重启JLink GDB Server
  • 无法实现RAM debug(这一点不是很确定,我按照Segger官方文档试验了几次,没有成功,有成功的同学请分享下经验)
除去以上两点,Eclipse提供的CDT debugger还是很好用的,设置过程如下:1.工程名称上右键 -> Debug As -> Debug Configurations 2.在GDB Hardware Debuging上右键 -> New 3.在debugger标签栏下把GDB Command改为:/usr/bin/arm-none-eabi-gdb4.去掉Use remote target(我们在后面的启动命令中手动指定远程端口) 5.打开startup标签栏,在Initialization Command下添加12345678910target remote localhost:2331monitor flash device = STM32F103VEmonitor flash download = 1monitor flash breakpoints = 1monitor clrbpmonitor endian littlemonitor speed 1000monitor resetmonitor sleep 100monitor speed auto
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。