Ubuntu 16.04下8051单片机开发环境搭建

发布时间:2024-07-23  

工作需求,准备学习单片机,加上以后准备学习嵌入式Linux,而且最近烦透了Win10的自动更新,遂放弃Windows环境,准备在Linux环境下从51单片机开始折腾起,学单片机和Linux两不误。本人是单片机和Linux系统双料新手,学习过程中碰壁不断,遂将过程做一下笔记,也分享到网上,高手见笑,新手且看,希望能帮到一些朋友。


系统:Ubuntu 16.04 LTS amd64


单片机:某宝¥149开发板,芯片STC90C51,板子自带USB转串口芯片CH340G。Ubuntu好像自带了这个的驱动,不用另装驱动了。


本来想折腾mcu8051ide的,但是apt-get安装和手动一个个安装依赖库再编译主程序安装两种方式的都运行闪退,只能用原始的方法了。


需要的软件:


1. 编辑器: 随便 vim emacs gedit nano都行


2. 编译器:sdcc,一个小型的C编译器


sudo apt-get  install sdcc sdcc-doc


3. ISP下载器:


  a.  stcflash.py,一个单独的python文件,命令行直接使用。【推荐】


  https://github.com/laborer/stcflash

  b. gSTCISP,一个带GUI的下载器,SourceForge提供源码下载,需要编译安装。也可以在Ubuntu论坛找到一个编译好的版本。我自己测试时,烧写成功率不高,不知道怎么回事,所有不太推荐。

https://sourceforge.net/projects/gstcisp/

 

开发单片机程序简单步骤:


1.随便写个单片机程序,比如main.c。需要注意的是sdcc下的程序与Windows 的Keil下有点区别,目前仅发现两点:头文件不一样和IO口sbit定义不一样,具体区别自行百度。


#include <8051.h>


void Delayms(unsigned int ms);


void main()

{

    while(1)

    {

        P0=0xfe;

        Delayms(500);

        P0=0x01;

        Delayms(500);

    }

}


void Delayms(unsigned int ms)

{

    unsigned int i, j;

    for(i = ms; i > 0; i--)

        for(j = 110; j > 0; j--);

    return;

}


2. 编译:调用sdcc编译并生成bin或hex文件。需要说一下的是,gSTCISP只支持下载bin文件,而stcflash.py能下载bin和hex文件。


生成hex文件:

sdcc main.c && packihx main.ihx > main.hex

生成bin文件:

sdcc main.c && makebin  -p  main.ihx  main.bin


3. 烧写程序:


  推荐使用stcflash.py,因为我用gSTCIPS十次有九次都下不进去,不知道什么原因。


  stcflash.py是Python语言写的,需要用到Python的串口模块,用如下命令安装。


sudo apt-get install python-serial

  为了方便使用,我把stcflash.py复制到了/usr/bin/下,并添加执行权限,这样不用每次调用都要输入文件的保存路径了。当然应该也可以把stcflash.py的保存路径加入$PATH变量,我是懒人。


sudo cp stcflash.py /usr/bin/

sudo chmod +x /usr/bin/stcflash.py

  然后检查USB连接:


  a.  $  lsmod | grep usbserial

    如果输出有 usbserial,说明系统支持USB转串口。


  b. 用USB数据线将开发板与电脑连接起来,运行


    $ ls /dev/ttyUSB*


    如果输出有/dev/ttyUSB0或1等等,说明系统已正确识别该USB转串口设备。


    也可以用“#lsusb”命令查看是否有“USB-Serial adapter”类似的设备。


  c. 设置串口为ttyUSB0(可以不做,在下载时手动指定--port):


    $ dmesg | grep ttyUSB0


  d. 关闭开发板电源,运行stcflash.py烧写程序,当出现如下字样时,打开开发板电源,即开始下载:


$ sudo stcflash.py main.bin --port /dev/ttyUSB0 --lowbaud 1200

Connect to /dev/ttyUSB1 at baudrate 1200

Detecting target... 


下载完成为这样:


$ sudo stcflash.py main.bin --port /dev/ttyUSB0 --lowbaud 1200

Connect to /dev/ttyUSB1 at baudrate 1200

Detecting target... done

FOSC: 12.013MHz

Model: STC90C516RD+ (ver4.3C) 

ROM: 64KB

[X] Reset stops watchdog

[X] Internal XRAM

[X] Normal ALE pin

[X] Full gain oscillator

[X] Not erase data EEPROM

[X] Download regardless of P1

[X] 12T mode

Baudrate: 38400

Erasing target... done

Size of the binary: 158

Programming: #################### done

Setting options... done

stcflash.py默认port为/dev/ttyUSB0,波特率为2400,所以当使用ttyUSB0时,也可以直接运行"$sudo stcflash.py main.bin",不用手动指定端口和波特率。


完。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>