So Tired !_! 逆水行舟, 不进则退!

14Feb/13

Eclipse和单片机开发环境Keil的集成编译工具KeilMake源码

Posted by Nick Xu

Eclipse和单片机开发环境Keil的集成编译工具KeilMake

通过KeilMake可以在Eclipse上进行单片机开发且编译

这个东东是为了通用而到网上抄一些需要用到的代码做出来的东东,估计很多代码是可以换成一两句话可以解决问题的. 最近经常有人找我问这个工具的问题,但是我已经不搞单片机好多年,所以把源码放出来,让有心人来维护吧:)

代码已经更新到github上,有需要的请自行下载和修改吧,为了能造福更多人群,希望改进后的代码能继续更新到github上,让更多人一起学习和研究

https://github.com/qdog2012/keilmake

25May/10

使用Keil的命令行编译C51源码并生成HEX文件的示例

Posted by Nick Xu

参考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

Tagged as: , , No Comments
25May/10

Eclipse和单片机开发环境Keil的集成编译工具KeilMake 使用详细教程

Posted by Nick Xu

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 下载地址:

KeilMake

   
site
site