第一次接触单片机,自然选择了简单的51单片机。然而我的操作系统是 Linux 。在 Windows 下上手51似乎很容易。但是 Linux 上搭建 51 开发环境不是很顺。

那么谈谈 Linux 我如何搭建 STC89C52RC 的开发环境吧。

(一)

选择自己喜好的代码编辑器即可。vim , emacs , gedit 等都可以。

(二)

安装编译器。一般选择 sdcc 。一般可从发行版的包管理器中直接安装。

如Arch中:

  

$ sudo pacman -S sdcc

如果不行,需要自行下载编译。

简单介绍使用sdcc:

  假如当前目录有一个写好的源文件 main.c 。 使用如下简单方式即可编译。

  

$ sdcc main.c

  生成的若干个文件中 main.ihx 是一个生成的16进制可执行文件。后面便可以将其烧录到单片机中。

(三)

将生成的可执行程序烧录到单片机是需要一条下载线的。一般说来使用 USB 转串口的下载线。插上之后,在 /dev 里面有个设备叫 ttyUSB* 说明可以进行后面内容。

否则你可能需要安装 USB 转串口的驱动。

选择烧录工具。网上大部分使用的是 gSTCISP 这个工具烧录。但是在我尝试之后,总是卡在 We are trying to connect your MCU...这个地方。

起初我还以为下载线出现问题了。后来发现不是。你可以尝试。注意 gSTCISP 需要的是二进制文件,因此需要把 main.ihx 转换为二进制文件。

一个转换例子:

$ makebin < main.ihx > main.bin

你需要把文件名更改成你自己相应文件名。其他方法还有很多,自行搜索。

  通过我测试的一个烧录工具 stcflash 。这是一个 python 脚本。因此你需要安装 python 环境。大部分 Linux 发行版安装了 python 。但是你需要安装一个额外的运行库 python-serial 。

$ sudo pacman -S python-serial 

将下载好的 stcflash.py 放入源文件目录。接下来开始烧录。

  首先关闭板子。执行

$ sudo python ./stcflash.py ./main.ihx

打开开发板即可烧录进去。成功结果如下:

Connect to /dev/ttyUSB0 at baudrate
Detecting target... done
FOSC: .996MHz
Model: STC89C52RC (ver4.3C)
ROM: 8KB
Baudrate:
Erasing target... done
Size of the binary:
Programming: #################### done

另外二进制文件使用 stcflash 也可以烧录进入。

sdcc 下载地址:http://sdcc.sourceforge.net/snap.php#Linux

gSTCISP 下载地址:http://osdn.jp/projects/sfnet_gstcisp/releases/?fulllist=1

stcflash 下载地址:https://github.com/RainMark/stcflash.git

Linux 下上手 STC89C52RC的更多相关文章

  1. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  2. Linux下搭建VPN服务器(CentOS、pptp)转

    先说我搭建过程中出现的问题吧: 按照 教程搭建好之后出现了619错误,查看日志:/var/log/messages: Nov 20 09:46:20 localhost pptpd[7498]: GR ...

  3. 如何在Linux下使用Gitblit工具创建Git仓库服务

    嗨!朋友,今天我们将学习如何在你的Linux服务器或者PC上安装Gitblit工具.首先,我们看看什么是Git,它的功能以及安装Gitblit的步骤.Git是分布式版本控制系统,它强调速度.数据一致性 ...

  4. 在Linux下运行C语言程序

    市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境和各种常用的必备工具,国内使用较多的是Ubuntu(乌班图).CentOS.Deepin(深度Linux).本教 ...

  5. 分享:linux下apache服务器的配置和管理

    linux下apache服务器的配置和管理. 一.两个重要目录: Apache有两个重要的目录:1.配置目录/etc/httpd/conf:2.文档目录/var/www: 二.两种配置模式: Apac ...

  6. 转载-Linux下搭建VPN服务器(CentOS、pptp)

    转自:http://www.cnblogs.com/sixiweb/archive/2012/11/20/2778732.html 搭建过程参考这篇文章 先说我搭建过程中出现的问题吧: 按照 教程搭建 ...

  7. Linux下高效编写Shell——shell特殊字符汇总

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...

  8. 7款Linux下阅读PDF的阅读器。

    5款Linux下阅读PDF的阅读器.1. Mupdf:link 2. Adobe Reader:link 3. Foxit Reader:link 4.Evince:link 5. Okular:li ...

  9. Linux下的I/O模型以及各自的优缺点

    其实关于这方面的知识,我阅读的是<UNIX网络编程:卷一>,书里是以UNIX为中心展开描述的,根据这部分知识,在网上参考了部分资料.以Linux为中心整理了这篇博客. Linux的I/O模 ...

随机推荐

  1. Spark学习之路 (十六)SparkCore的源码解读(二)spark-submit提交脚本

    一.概述 上一篇主要是介绍了spark启动的一些脚本,这篇主要分析一下Spark源码中提交任务脚本的处理逻辑,从spark-submit一步步深入进去看看任务提交的整体流程,首先看一下整体的流程概要图 ...

  2. AmiGO2:在线浏览和查询GO信息的利器

    GO数据库的信息是非常庞大的,为了有效的检索和浏览GO数据库的信息,官方提供了AmiGO, 可以方便的浏览,查询和下载对应信息,官网如下 http://amigo.geneontology.org/a ...

  3. 怎么查 ODBC Driver for SQL Server

    1)进入服务器,找到SQL Server 2016 Configuration... ,点进去就好了 2)

  4. super和this关键字

    super关键字: this关键字: 栈内存和堆内存和方法区内存分析: 其中,new出来的即对象都在堆内存区: main方法先进栈: 方法区中 [[ super_class ]]是编译器生成,代码表现 ...

  5. bzoj 3083

    bzoj 3083 树链剖分,换根 对于一颗树有以下操作 1.确定x为根,2.将u到v的简单路径上的数全改成c,3.询问当前以x为根的子树中的节点最小权值. 如果没有操作1:树链剖分很明显. 于是考虑 ...

  6. appJar 界面效果

    appJar from appJar import gui app = gui() def main(): app.setLocation(200, 200) app.addLabel('2333', ...

  7. js条件判断if-else和switch、循环for和while

    条件判断和循环都使用{ }将代码块括起来,如果代码块只有一行,则可省略{ }. 在循环中,continue表示跳过当前循环继续进行下一次循环,break表示跳出整个循环. 1.条件判断if-else, ...

  8. XX-net

    环境:win10企业版 #停用“ip helper”服务 net stop "ip helper" #启用“ip helper”服务 net start "ip help ...

  9. 电影编码JPEG2000与H.264

    电影的第三次革命是数字电影的诞生,数字电影取代了胶片,那么数字电影就一定有其独特的封装(压缩)格式.在网络上,我们经常见到许多视频格式,诸如mp4.mkv.flv.rmvb等,这些都是在通用计算机上播 ...

  10. kali meterpreter中mimikatz模块获取密码

    kali这方面不说了, meterpreter也略过, 做个关于mimikatz的笔记. mimikatz模块, 能获取对方机器的密码(包括哈希和明文). 渗透模块怎么进的也不说了, 方式太多, 我用 ...