zoukankan      html  css  js  c++  java
  • Linux系统下烧录单片机(转)

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

     

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

    硬件:

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

    软件:

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

     

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

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

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

    sudo apt-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的相关信息(这是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(集成开发环境),只需考虑自己要做的程序,然后记住需要的编译选项,而且SDCCwindows Linux通用的,在linux写的代码,makefile windows下甚至可以不用改 或者改动少许就能使用。而且Linux不用去装什么下载线驱动,我的usbisp下载线 和usb转串口下载线都是直接插上就可以下载了。

  • 相关阅读:
    ubuntu下在apache部署python站点
    MySQL设置从库只读模式
    mysql数据库,创建只读用户
    BUG处理流程说明
    bug的处理流程
    nginx 502 Bad Gateway 错误解决办法
    Linux下批量替换文件内容方法
    centos 安装pecl
    php学习资源
    Docker容器进入的4种方式(转)
  • 原文地址:https://www.cnblogs.com/sky1991/p/2627575.html
Copyright © 2011-2022 走看看