ARM DS-5是基于Eclipse的ARM开发环境,有完善的编译流程,配合Keil插件开发STM32效果更佳。废话不多,先介绍思路:
1.安装MDK软件,就有编译STM32的工具链。我使用是MDK 4.72的。
http://pan.baidu.com/s/1o6iHPVG
2.安装DS-5,并注册社区版(免费阉割)。
http://pan.baidu.com/s/1mgHX2JY
补充:社区版激活代码:
http://ds.arm.com/zh-cn/ds-5-community-edition/getting-started/
3.运行DS-5安装Keil插件
安装好Keil插件后只是使用了Keil的调试和下载功能,真正与DS-5合体需要在Eclipse设置。
4.设置编译工具链,打开eclipse,Windows->Preferences,弹出Preferences窗口后选择DS-5->Toolchains,点击Add。选择keil安装目录下的ARM\ARMCC\bin,然后确认点next、next通常会检测出armcc的版本
确认后如下图,黄色的就是添加后的工具链。
ds-5的环境设置到这里完成,然后进行项目设置。
5.源码复制到DS-5项目。由于Eclipse和mdk的项目文件显示不一样,Eclipse是项目文件夹有什么在Eclipse就显示什么,Keil要在设置并加入文件才在项目显示。 所以Eclipse加入程序源码只要在项目文件夹新建文件并复制源码就行。
首先在Eclipse新建arm项目,New->C Project,选择Empty Project和ARM Compiler 5.03,同时输入项目名称Finish,下图因为之前有test1这个项目才出现错误。
然后添加原来的源码到Eclipse的项目文件夹就是了,下图可以对比一下Keil与Eclipse的项目表示方式,
6.构建设置。项目源码添加后还要设置给编译工具链的参数。点到项目右键选择Properties,C/C++ Build->Tool Chain Editor,Current builder有CDT Internal Builder和Gnu Make Builder选择,Gun的使用Makefile,CDT是命令形式。在win7下CDT编译是明显快一点。这两个builder还有的区别是文件路径的表示不一样,不过影响不是很大。
然后是C/C++ Build->Settings,根据下面图基本ok,其实Preprocessor和Includes的设置都与MDK设置对应的。Target CPU是Cortex-M3,
在ARM Linker设置里面涉及一个比较关键一点,就是scat文件,在Keil其实也有但是几乎看不到它的身影。
在Eclipse里面就要通过这个给链接器,所以在项目下新建一个Templet.scat,DS-5支持scat后缀的文件有特别的查看方式,不过对于STM32应该不重要。0x08000xxx和0x2000...数字的意义懂stm32的存储器地址都明白吧。写好scat文件后记得在ARM Linker的Image Layout设置Scatter file。
最后设置打印出来的信息,-map就打印出每个函数和变量的地址。--list就打印到文件,空着打印到console。
基本的设置完成,利用Keil插件可以进行调试和下载。
补充:
1.不想编译某文件,点击文件右键->Resource Configurations->Exclude from Build..,并勾上就可以。
2.关于bin文件制作,在stm32使用IAP会发送2进制文件给芯片。除了要scat文件里面设置地址外,还要使用keil的自带软件生成bin。设置同样在C/C++ Build->Setting->Build,设置Post-build steps的Comand。
STM32开发基本上使用keil和iar,keil很强大,运行快速,设置简单直观,模拟和调试工具都做的不错。IAR个人觉得比较丑陋,虽然keil也不是很漂亮。。而Eclipse,其实一开始我是拒绝的。。。因为它设置比较复杂而且一开始加载很慢,对比keil有没什么优势。但是当你的工程越来越多,分支也开始多的时候,就发现Eclipse的优势:
1.清晰的项目管理,不用再开多个keil软件和文件夹
2.与svn方便使用,Eclipse安装了svn插件就容易的进行版本管理
补充:附上配置好的工程文件
http://pan.baidu.com/s/1kTH5IEb
关键字:ARM DS-5开发 STM32程序
引用地址:
ARM DS-5开发STM32程序(Eclipse配合Keil插件使用)
推荐阅读最新更新时间:2024-03-16 15:00
ARM开发板如何挂载NFS开发环境的方法步骤(mini2440无盘启动)
这个部分还是比较不好弄的。想象要是不能通过nfs挂载网盘的话,他提出这个方法也就没什么用了。这样看的话,是比较完美了。在你实验之前你可以现挂载一下(用busybox生成文件系统后不用编译就可以了)确认没问题在编译下载镜像文件。还有在作qt文件应用程序的时候很大用这种方法,相信不用考虑编译和裁减的情况下就可以直接运行了。 首先介绍一下我的开发环境: PC环境是ubuntu9。04,开发板为友善之臂的MINI2440 主机IP:192.168.50.72 网关:192.168.50.1 子网掩码:255.255.255.0 开发板IP:192.168.50.168 网关:192.168.50.1 子网掩码:255.255.255.0
[单片机]
arm芯片的浮点运算
微软MSDN上关于ARM芯片浮点运算的资料 勿使用浮点运算 ARM 处理器并不支持浮点运算 (Floating Point Math)。所有的浮点运算都是在浮点运算模拟器上进行,因此特别缓慢。需要浮点运算的函式,常要耗费数千个循环才能执行完毕。这就是为何游戏开发时,通常都使用定点 (Fixed Point) 格式的运算。定点运算实际上是使用整数,但指定固定数目的位元做為数值的分数部份。就好像是指定某一数字,其千位数以下為分数。若要表示 0.500,只要乘以 1000,便得到 500 这个数值。 比较困难的部份,是开发人员必须随时想像这个隐形的小数点。加法与减法比较没有问题: 500 + 500
[单片机]
HI3531ARM调试printf的实现
void UART_Putc(char c) { if (c == 'n') *(unsigned int *)(UART0_ADDR + 0X00) = 'r'; delay_x(0x800); *(unsigned int *)(UART0_ADDR + 0X00) = c; } unsigned int val_i=0; void UART_Print(const char *str,...) { va_list unnamed_p; char *sval; unsigned int tmp=0; va_start( unnamed_p, str); whil
[单片机]
Arm Linux系统调用流程详细解析
Linux系统通过向内核发出系统调用(system call)实现了用户态进程和硬件设备之间的大部分接口。 系统调用是操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成。 1、用户可以通过两种方式使用系统调用: 第一种方式是通过C库函数,包括系统调用在C库中的封装函数和其他普通函数。 第二种方式是使用_syscall宏。2.6.18版本之前的内核,在include/asm-i386/unistd.h文件中定义有7个_syscall宏,分别是: _syscall0(type,name) _syscall1(type,name,type1,a
[单片机]
基于ARM的嵌入式USB图像采集与显示方案
引言 目前市场上大部分的图像采集与处理系统是基于DSP 芯片的,这种图像采集与处理系统成本高、功耗高、体积约束等特点并不适用于一些简单的应用。随着USB 摄像头的普及和基于ARM 的嵌入式芯片的快速发展,将二者结合的便携性越来越受人们欢迎。本文介绍了一种基于三星S3C2440A 芯片的嵌入式USB 摄像头图像采集与显示方案,该方案具有良好的可移植性和扩展性,并且成本、大小和实时处理都能够满足市场需求。 1 系统架构 系统通过当前市场上应用最广泛的中芯微公司生产的zc301p 芯片的USB 摄像头进行图像采集,然后将图像信息传送到ARM 芯片中进行处理,最终通过基于Qt/Embedded 编写的图形显示程序在LC
[单片机]
ARM9_S3C2440学习(七)SDRAM学习总结
1.SDRAM的burst mode SDRAM是一种命令型动作的设备,就算读写资料只有一个也要先下命令才可以用,为了增加工作效率,就产生了一种传送一个命令,写多个数据的模式,这就是burst mode。 burst mode是一种利用内部列地址发生器来工作的高速读写模式,只要设置最开始的列地址,后面的地址就可以通过内部的列地址发生器来自动生成。 2.为什么要做precharge动作? 关闭正在作用的SDRAM bank,算是一种结束命令,后面可以下新的命令。我想这是和SDRAM内部管理有关。(这是从网上查到的,感觉不够详细,也不太理解) 3.自动刷新功能? 动态存储器(Dynamic RAM)都存在刷新问题。这里主要
[单片机]
ARM异常和中断
异常和中断 异常就是在程序运行过程中(USER mode),出现了一些异常情况,而中断是异常的一种情况. 模式和异常的对应关系 需要特别注意的就是,如果在程序执行过程中需要进行系统调用(程序正常运行在USER模式,而内核运行在SVC模式,user模式无法直接运行SVC模式的指令,因此需要通过异常的方式进入到特权模式. 故这里就通过SWI实现.),即 SWI软中断– SVC. 异常处理 异常向量表 存储在内存固定区域,表中每一个表项都对应一个异常类型,存了一个跳转指令:LDR PC, handle(将需要调用的函数地址放到PC中,即可跳转到指定的地址执行) 异常优先级 RESET Data Abort(数据异常) F
[单片机]
基于ARM9的仿人机器人分布式控制系统
1 引言 仿人型机器人具有类似于人类基本外貌特征和步行运动功能,还具有视觉、听觉等功能,它可以实现类似人类的行走,灵巧轻便,对行走环境有良好的适应性,既能在平地上行走,又能在非结构的复杂地面上行走,如上下台阶,跨越、绕过障碍物等。另外,仿人型机器人是集材料、机械、电子、能源驱动、计算机感知、传感、控制、虚拟现实与人工智能等多门学科于一体的综合性平台,它的研究能够带动诸多相关学科和技术的交叉发展与进步,并为相关学科的研究提供一个平台。因而,近年来,仿人型机器人的研发受到国内外学者的广泛关注。小型机器人是近年发展起来的仿人机器人的一种,主要的研究集中在日本。小型仿人机器人,结构轻巧,集成度高,运动灵活;未来可在工业、民用、军事等许多
[单片机]