Eclipse和单片机开发环境Keil的集成编译工具KeilMake源码
Eclipse和单片机开发环境Keil的集成编译工具KeilMake
通过KeilMake可以在Eclipse上进行单片机开发且编译
这个东东是为了通用而到网上抄一些需要用到的代码做出来的东东,估计很多代码是可以换成一两句话可以解决问题的. 最近经常有人找我问这个工具的问题,但是我已经不搞单片机好多年,所以把源码放出来,让有心人来维护吧:)
代码已经更新到github上,有需要的请自行下载和修改吧,为了能造福更多人群,希望改进后的代码能继续更新到github上,让更多人一起学习和研究
使用Keil的命令行编译C51源码并生成HEX文件的示例
参考KeilC51HLPC51.pdf以及A51.pdf文档,示例及说明如下:
set PATH=%PATH%;G:developkeilC51BIN;G:developkeilC51INC;G:developkeilC51LIB
set C51_LIB=G:developkeilC51LIB
(注:其中的G:developkeil目录要改成本机安装keil的位置)
set DST_NAME=objoutput (注:指定输出文件名)
set DIR=D:source (注:指定源文件所在目录)
echo 转向工作目录
d: (注:源文件所在区)
cd %DIR%
echo 编译文件...
c51 a.c
c51 b.c
c51 c.c
c51 d.c
md obj
echo 链接目标文件...
BL51 %C51_LIB%C51s.lib,a.obj,b.obj,c.obj,d.obj,EXTERN_LIB.obj TO %DST_NAME% RAMSIZE(256) CODE(?CO?c(FC00H), ?CO?d(FFD0H))
(注:EXTERN_LIB.obj文件是已经编译好的obj文件,用于编译部分模块只有目标代码的项目,RAMSIZE等是一些链接设置,详细信息请参 考C51HLPA51.pdf)
echo 生成HEX文件...
OH51 %DST_NAME%
echo 编译结束
cd
Eclipse和单片机开发环境Keil的集成编译工具KeilMake 使用详细教程
Eclipse和单片机开发环境Keil的集成编译工具KeilMake
通过KeilMake可以在Eclipse上进行单片机开发且编译
使用方法:
配置Eclipse中项目Builder Settings的编译命令为
D:MyWorkSCMKeilMakeReleaseKeilMake D:MyWorkDevToolscommandkeilAT89S52.Uv2 ${ProjName} ${ProjDirPath} C:KeilUV2uv2.exe
红色部份修改为程序相应的路径即可,在Eclipse中写完程序后按Ctrl+B即可编译
AT89S52.Uv2 是Keil项目的模板文件,可根据个人需要进行修改,自带的模板配置是
AT89S52芯片,晶振为24Mhz,自动生成Hex文件
近期本人使用Keil进行单片机程序开发,感觉超不爽,在微软长期毒害下,我相信大部分跟着VS做开发的人们都对微软IDE的智能过于依赖。所以最 终我选择了Eclipse,虽然和微软的IDE相比还是有很大差距,不过对于我要做单片机开发的工作应该也可以满足了。在网上并没有找到Eclipse和 Keil可以很好集成在一起的插件,无而之下只好自己动手,搞搞科研了。
KeilMake就是这次的科研成果了,现与大家共同分享。
如果你的芯片和我现在用的一样是AT89S52,24Mhz,那么直接按照上面的方法即可使用,下面的内容可以略过。
如果是其它芯片,又和我一样想用Eclipse来进行单片机开发,那么请跟着我一步一步的操作。
环境安装,安装好Keil和Eclipse下面是我安装两个软件的版本
最新片Eclipse可以到这个地址 www.eclipse.org/downloads/ 下载C/C++版本的即可。
两个软件都安装好后我们就可以开始建立Keil模板了。
首先我们要知道自己的芯片的型号等信息,这里以举个AT89S52的例子,首先在Keil创建一个新项目
我们把项目文件保存为 stc89c52.Uv2 等会需要用到这个文件
CPU类型选择Atmel下面的AT89S52
新增加一个TEST.C的文件,内容空白就行了,因为我们不是在写代码,我们只是创建模板。
点击上面框框中的按钮对项目进行设置。
输入晶振的频率,我这块芯片是24MHz的。
设置生成时创建16进制文件,格式选择HEX-80
接下来用记事本打开刚才我们创建的项目文件 stc89c52.Uv2 留意红色框框的地方,这两个地方是我们需要修改的
File 1,1,<.test.c><test.c> 0x0 修改为 {CodeList}
stc89c52 修改为 {FileName}
完成上面步骤后,模板就创建完成了,我们把 stc89c52.Uv2 复制到别的地方,我放到D:MyWorkDevToolscommandkeil下
我把KeilMake.exe也放到这里了,这个不是必要的,我只是为了方便而已。
好了,现在到Eclipse了,如果在Eclipse上创建Keil项目呢?这里需要更正一个问题,我们不需要在Eclipse上创建Keil项 目,只要创建C项目就可以了,因为 KeilMake.exe 的工作就是把Eclipse上创建的C项目拿到Keil下去编译生成。
创建一个C项目
项目名称:testKeilProject
这里项目类型我选择Empty Project是因为我不需要用到MinGW GCC的类库,所以我选择空项目,然后Toolchains选择Other Toolchain,这一步我们可以直接点击Finish了。
现在到了最关键的设置时刻了,打开项目属性设置窗口。
Build command的值:D:MyWorkDevToolscommandkeilKeilMake.exe D:MyWorkDevToolscommandkeilstc89c52.Uv2 ${ProjName} ${ProjDirPath} C:KeilUV2uv2.exe
下面我们解释一下这行命令的意思
D:MyWorkDevToolscommandkeilKeilMake.exe KeilMake的路径。
D:MyWorkDevToolscommandkeilstc89c52.Uv2 我们刚才创建的Keil模板,以后只要是使用相同芯片做开发就可以使用这个模板。
${ProjName} 是Eclipse中的生成变量,是Eclipse里的项目名称,生成的HEX就是以这个值来命名。
${ProjDirPath} 是Eclipse中的项目目录
C:KeilUV2uv2.exe 是Keil的主程序路径
还有这里红色框框要留空,原值是all
点击File system按钮选择Keil目录下的c51inc目录
完成这一步后,基本上都完成了,我们来写一个程序测试一下。
Eclipse的自动完成功能
很简单的代码,来测试一下编译功能CTRL+B,记得要先保存再按CTRL+B,我刚开始时经常范这个错,所以代码没有编译到。
红色框框是编译生成输出的信息,看到
0 Error
和
creating hex file from "stc89c52"
这两行就是程序已经编译完成,在项目目录下会看到 stc89c52.hex 文件,把这个文件刷到单片机上试试看?
KeilMake是我学C语言的第一个程序,可能会存在一些BUG,如果使用过程中遇到什么问题,请随时和我联系,可发邮件到我的邮 箱:nick#workao.org 把#换为@
完。
附 KeilMake 下载地址: