当前位置:首页 > 单片机 > 单片机
[导读]有些人说Linux下怎么开发单片机程序? 我们学得都是在Windows下的开发工具和烧录工具。其实这只是中国的情况,中国大都是用Windows系统的。所以我们也只接触到Windows下的开发工具。在国外,许多大牛是不用Windows的

有些人说Linux下怎么开发单片机程序? 我们学得都是在Windows下的开发工具和烧录工具。其实这只是中国的情况,中国大都是用Windows系统的。所以我们也只接触到Windows下的开发工具。在国外,许多大牛是不用Windows的。那么,他们如果要做单片机怎么办?肯定没问题的,Linux也有许多的单片机和嵌入式的开发工具。下面,我以51系列单片机为例,介绍一下怎么使用Linux系统玩单片机。

首先,说一下我的硬件和软件情况。

硬件:

一台笔记本、 一个51单片机开发板(这个在网上有很多卖,也就150左右的价格)。单片机芯片有两块 :一块是Atmel的AT89S52, 另一块是STC的STC89C52RC。USB转串口线一根(串口通信和STC下载用)。USBISP下载线一根(AT89S52下载用)。

软件:

操作系统:Ubuntu 11.04(内核2.6.38-10-generic)、sdcc(单片机C语言编译器)、avrdude(AT单片机下载程序)、gSTCISP(STC单片机下载程序)、objcopy(GUN开发工具里的 ,应该默认Linux都会安装)

操作系统的安装就不讲了。

SDCC可以在网上下到源代码然后编译安装。/*SDCC也有Windows版本,不过我这只讲Linux下的东西,如果有兴趣请自己百度Google一下*/

不过这样很麻烦,而且不一定安装的上。我们的ubuntu有超级牛力(不知道这个?在终端下输入apt-get就知道啦。)直接在终端下输入以下命令:

sudo apt-getinstall sdcc sdcc-doc

先讲AT89S52的下载

首先是安装AT89S52的下载软件,还是用ubuntu的超级牛力:


sudo apt-get install gcc-avr binutils-avr avrdude avr-libc



然后编辑avrdude.conf以使得avrdude可以下载51的单片机

sudo gedit /etc/avrdude.conf

在最后面加入AT89s52的相关信息(这是Joy Shukla写的)

#------------------------------------------------------------
# Below chips by added by me .. Joy Shukla(joy_shukla@yahoo.in)
# these chips can be programmed with my usbasp programmer(changed atmega8 program)
# after adding avrdude support in this file ..
#------------------------------------------------------------

#------------------------------------------------------------
# AT89S52
#------------------------------------------------------------
part
id = "8052";
desc = "AT89S52";
signature = 0x1E 0x52 0x06;
chip_erase_delay = 20000;
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
"x x x x x x x x x x x x x x x x";

chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
"x x x x x x x x x x x x x x x x";

timeout = 200;
stabdelay = 100;
cmdexedelay = 25;
synchloops = 32;
bytedelay = 0;
pollindex = 3;
pollvalue = 0x53;
predelay = 1;
postdelay = 1;
pollmethod = 0;

memory "flash"
size = 8192;
paged = no;
min_write_delay = 4000;
max_write_delay = 9000;
readback_p1 = 0xff;
readback_p2 = 0xff;
read = " 0 0 1 0 0 0 0 0",
" x x x a12 a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";

write = " 0 1 0 0 0 0 0 0",
" x x x a12 a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" i i i i i i i i";
mode = 0x21;
delay = 12;
;

memory "signature"
size = 3;
read = "0 0 1 0 1 0 0 0 x x x 0 0 0 a1 a0",
"0 0 0 0 0 0 0 0 o o o o o o o o";
;
;
#------------------------------------------------------------

然后保存
现在就可以烧录AT89S52的单片机了,

用命令

sudo avrdude -p 8052 -c usbasp -e -U flash:w:'跑马灯.hex'

就可以烧录了 你可以把命令中的”跑马灯.hex”换成你自己的程序。

如果觉得 命令太长 太难记, 那么推荐你使用makefile来自动完成。

我是这样做的

在工作目录下建立一个makefile,内容如下:

###########内容开始#############

main:

sdcc liushui.c #注意这一行以及一下每行开头都是一个Tab

packihx liushui.ihx>liushui.hex #SDCC默认的输出格式是ihx我们把它转换成hex

sudo avrdude -p 8052 -c usbasp -e -U flash:w:liushui.hex #这就是烧录的语句,其实最后的格式是ihx也可以烧录的

##########内容结束###############

保存之后 在工作目录下只要输入一句make就可以完成 编译 烧录 一步到位了。

/*当然你得保障程序能正常编译,下载器和单片机都连接好了*/

接下来讲讲如何烧录STC单片机

STC的程序编写 不用我说了。它的下载是用gSTCISP貌似是一个中国人写的,还是图形界面的。

gSTCISP下载地址如下

http://forum.ubuntu.org.cn/download/file.php?id=104628&sid=767b624faf73a36c71fcd4f8111773e

gSTCISP下载要求的格式是bin我在网上也没找到所谓的Hex2bin程序 ,不过 发现用objcopy也可以把hex文件转化为bin'文件,姑且我就先这么用了。

生成hex文件后,用如下命令将hex转化为bin

objcopy -I ihex -O binary liushui.hex liushui.bin # I和O都是大写

然后 打开gSTCISP(我直接把它cp到了/usr/bin,就可以直接在提示符下输入gSTCISP运行了)

选择port(端口) 我的是/dev/ttyUSB0然后选择文件 选择刚刚生成的bin文件 点击DownLoad

好像STC的是要先断电再上电的时候 就能把程序写入单片机了

当你看到Program OK Have already encrypt.就说明你烧录成功啦。



写在最后:

我其实也是一个小菜鸟,这其实只是我的一次笔记而已。而且有些地方还写得很罗嗦。高手可以直接略过啦。使用Linux做单片机可以不用学怎么去用鼠标操纵不同图形界面的IDE(集成开发环境),只需考虑自己要做的程序,然后记住需要的编译选项,而且SDCC是windows Linux通用的,在linux写的代码,makefile在windows下甚至可以不用改 或者改动少许就能使用。而且Linux不用去装什么下载线驱动,我的usbisp下载线 和usb转串口下载线都是直接插上就可以下载了。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

    云计算和存储将物理资源转换成 Internet 上可伸缩、可共享的资源.云计算使用户可以访问大规模计算和存储资源,而且他们不必知道那些资源的位置及其是如何配置的。正如您

关键字: 云计算 linux系统

Linux是一个开源的免费操作系统对于编写代码和程序来说更加专业和方便,可以说受到大多数程序员朋友的推崇,及时是不从事这个行业学习一些linux系统的基本知识也是很有必要的,一个只会使用Windows系统的程序员是会受到...

关键字: linux系统 操作原理

Linux是一种计算机操作系统,通常被称为类Unix系统,这是因为Linux和Unix有着很深的渊源。

关键字: Linux linux系统

自动化提交代码检查的压力,已经明显超过了通用服务器的负载。

关键字: linux系统 io栈

安全研究人员发现了一种新的Linux恶意软件,似乎是中国黑客开发的,用于远程控制受感染的系统。

关键字: Linux linux系统 恶意软件 hiddenwasp

在阅读Linux内核代码过程中,特别是一些预处理指令宏的时候,会看到宏语句里会包含一些# 或者是连着的## 符号,刚接触的时候觉得很一头雾水,但这些宏语句有时候绕不开,所以为了更好地读懂这些代码,很有

关键字: linux系统 嵌入式

---- 在Linux系统当中,大多数命令都很简单,很少有复杂功能的命令。每个命令往往只实现一个或几个很简单的功能。---- 我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。

关键字: Linux linux系统

1、grep---- 根据文件的内容进行查找,会对文件的每一行按照给定的模式(pattern)进行匹配查找。Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的

关键字: Linux linux系统 grep命令

一、让虚拟Linux系统直接和物理串口相连1. 启动虚拟机,进入Linux系统,点击虚拟机菜单栏的【虚拟机】选项,接着点击【移除设备】接着选择【prolific USB-serial Controller】选择【与 主机...

关键字: ARM USB 串口连接 虚拟机 linux系统

在学习Linux系统中,我们经常会看到多用户这个词,你了解Linux系统多用户的特点么?这里为你介绍Linux系统多用户的特点。多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例

关键字: linux系统 多用户
关闭
关闭