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

有些人说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就知道啦。)直接在终端下输入以下命令:

sudoapt-get install 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的相关信息(这是JoyShukla写的)

#------------------------------------------------------------

# Below chips by added by me .. Joy Shukla(joy_shukla@yahoo.in)

# these chips can be programmed with my usbasp programmer(changedatmega8 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

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

sudo avrdude -p 8052 -cusbasp -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 -Obinary liushui.hex liushui.bin # I 和O 都是大写

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

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

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

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

写在最后:

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

本文参考资料:

蝶晓梦的百度空间 /* 看了这篇日志才使我成功的在 Linux 下烧录成功 */

http://hi.baidu.com/%B5%FB%CF%FE%C3%CE/blog/item/1aa1050958898c2e6a60fbd0.html

在 linux 系统下去烧录单片机 /* 这篇介绍了很多在 Linux 下的单片机的工具,不仅仅是 51 的 */

#######################################################

我写的: 尼玛, 自从做单片机后, 好久没回linux系统!

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

YS65F805是一款8 位 MTP CMOS 触摸单片机。性能强大,功耗较低,待机电流:电压为 2.5V 时,典型值 500nA。工作电流:频率为 8MHz、电压为 2.5V 时,典型值为 500uA。频率为 31kH...

关键字: 触摸MCU 8位单片机 芯岭技术

NY8B062D是以EPROM作为存储器的 8 位单片机,专为家电或量测等等的I/O应用设计。采用CMOS制程并同时提供客户低成本、高性能、及高性价比等显著优势。NY8B062D核心建立在RISC精简指令集架构可以很容易...

关键字: 九齐单片机 MCU 8位单片机 微控制器

关注星标公众号,不错过精彩内容作者|strongerHuang微信公众号 | 嵌入式专栏我想在单片机上,不跑操作系统,在需要处理一些业务逻辑时,还需要检测按键短按、长按、多个按键同时按下,我要如何实现?如果在业务逻辑比较...

关键字: RTOS 操作系统 8位单片机

引 言 DeviceNet是一个开放的网络标准。规范和协议都是开放的——供应商将设备连接到系统时,无需为硬件、软件或授权付费;任何人都能以名义上的复制成本(目前为250美元+邮费)从开放

关键字: 软硬件 8位单片机 硬件系统 通信适配器

老兵传奇-8bit MCU和EFM8BB1LCK开发板评测板子图 板子前视图拿到这个板子, 可以说没有什么惊奇.这个板子从外观还是功能讲, 在笔者最近用过的板子中可以说非常普通. 不过评价一个板子并不能仅仅从外貌出发吧...

关键字: 51单片机 8位单片机 labs MCU Silicon efm8bb1lck

89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。

关键字: 89c52 8位单片机 mcs-51

  引 言  Flash存储器又称闪速存储器,是20世纪80年代末逐渐发展起来的一种新型半导体不挥发存储器。它兼有RAM和ROM的特点,既可以在线擦除、改写,又能够在掉电后保持数据不丢失。  NOR Flash是Flas...

关键字: 8位单片机 Flash nor 接口设计

最近在做一个8位单片机项目,其中用到了时间戳转换函数,这个在32位机上一个库函数就解决了问题,没想到在8位单片机中没有对应库(time.h),没有办法只有自己来写。目标:1,满足和库函数mktime localtime所...

关键字: 8位单片机 mktime localtime函数

前言谷歌的Protobuf的网址:https://developers.google.com/protocol-buffers/?csw=1按照国内情况最好翻墙出去看一下.目前Protobuf的情况是主要支持Java,...

关键字: 8位单片机 google protobuf

由于TI 254x采用的是8位单片机,而且内存只有可怜的8k,所以与普通PC编程有一些不一样的地方,一定要注意。一、不要声明太大的数组请时刻记住,内存只有8k,你声明一个太大的数组连编译都无法通过。二、串口打印不一

关键字: 8位单片机 编程
关闭
关闭