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.安装GNUARM sudo 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…全部安装。 上面几步都顺利完成之后,之后下面基本是一些配置的步骤了: 1.右键工程名称 -> Properties -> C/C++ Build > Tool Chain Editor 2.去掉勾选 Display compatible toolchains only,然后下面的下拉框选择 Cross GCC,然后Apply 3.单击左侧的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下添加 12345678910 | target remote localhost:2331monitor flash device = STM32F103VEmonitor flash download = 1monitor flash breakpoints = 1monitor clrbpmonitor endian littlemonitor speed 1000monitor resetmonitor sleep 100monitor speed auto |
如果是Kinetis则是: 123 | ...monitor flash device = MK60DN512xxx10... |
6.每次debug之前需要启动JLinkGDBServer,为了方便调试,可以在External Tools Configuration下添加一个启动项。
|