点击上方“大鱼机器人”,选择“置顶/星标公众号”

福利干货,第一时间送达!

阅读文本大概需要 5 分钟。

0

写在前面

在liunx环境下,没有keil这种IDE(集成开发环境)来开发51单片机,如果想在liunx下进行51单片机开发,也不是没有办法。往下看!

在liunx下搭载51开发环境主要就两部分:

编译环境的搭建、烧写程序

1

搭载编译环境

SDCC是一个小型设备的C语言编译器,该编译器是标准C语言,可以编译Intel MCS51架构的微处理器,也可以编译STM8等常见MCU。

我们要在linux上搭建51开发环境,首先要搭建SDCC编译环境。

其主页是:http://sdcc.sourceforge.net/  (复制到浏览器打开)

1.1 下载

有两个可供下载的:

  • 1) https://sourceforge.net/projects/sdcc/files/ <-- 需要自己编译,有一定难度

  • 2) http://sdcc.sourceforge.net/snap.php <-- 编译好的,拿来即用

注: 对于选择拿来即用的兄弟,可以直接跳过1.2节

1.2 编译

如何编译:

./config

可能会出现下面几种错误(我也给出了解决办法):

  • 错误 1 、缺少bison :

      configure: error: Cannot find required program bison.

    解决方法:

      sudo apt-get install flex bison
  • 错误 2 、找不到adjacency_list.hpp

      configure: error: boost library not found (boost/graph/adjacency_list.hpp).

    解决方法:

      sudo apt-get install libboost-date-time-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libboost-iostreams-dev
  • 错误 3 、 没有PIC14、PIC16设备

      failed for device/lib/pic14

    解决方法:

      ./configure --disable-pic14-port --disable-pic16-port

2

测试

直接下载编译好的需要将其按照说明放入系统bin等文件中,采用编译的会自动将其放入系统bin中。而我比较喜欢不让其和系统的各种东西纠缠在一起,单独放在工程下的一个叫tool的文件里,大不了用的时候输全路径!

如下,我在example目录下建一个makefile和a.c文件,将直接编译好的sdcc文件放在tool下面:

➜ SDCC_WS tree -L 2
.
├── example
│   ├── a.c
│   └── makefile
├── readme.md
└── tool
└── sdcc

其中a.c为51闪灯程序:

#include <8052.h>

void delay(void);

void main(void){
while(1){
P1 = 0xFF; // Turn ON all LED's connected to Port1
delay();
P1 = 0x00; // Turn OFF all LED's connected to Port1
delay();
}
}

void delay(void){
int i,j;
for(i=0;i<0xff;i++)
for(j=0;j<0xff;j++);
}

makefile为:

SDCC_PATH=../tool/sdcc

z_sdcc=${SDCC_PATH}/bin/sdcc
z_packihx=${SDCC_PATH}/bin/packihx

a.hex:a.c
${z_sdcc} a.c
${z_packihx} a.ihx > a.hex

clean:
rm -rf *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map *.lk *.bin

3

HEX2BIN+命令行烧写工具配置使用

3.1  下载工具安装配置

理论上hex也能烧写,但是hex比bin要大一些,所以我们用这里用bin烧写。

hex转bin要用到一个Hex2Bin工具,将其下载下来解压到tool目录下;

下载地址:https://sourceforge.net/projects/hex2bin/files/latest/download

stc单片机烧写工具需要用一个github开源软件stcflash,也将其下载到tool目录下:

下载地址:https://sourceforge.net/projects/hex2bin/files/latest/download

➜ SDCC_WS tree -L 2
.
├── example
│   ├── a.c
│   └── makefile
├── readme.md
└── tool
├── Hex2bin-2.5
├── sdcc
├── software
└── stcflash

将makefile改为:

SDCC_PATH=../tool/sdcc
HEX2BIN_PATH=../tool/Hex2bin-2.5
STCFLASH=../tool/stcflash

z_sdcc=${SDCC_PATH}/bin/sdcc
z_packihx=${SDCC_PATH}/bin/packihx
z_hex2bin=${HEX2BIN_PATH}/hex2bin
z_stcflash=${STCFLASH}/stcflash.py

a.hex:a.c
${z_sdcc} a.c
${z_packihx} a.ihx > a.hex
${z_hex2bin} a.hex

clean:
rm -rf *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map *.lk *.bin

flash:
python ${z_stcflash} a.bin

3.3 编译+烧写

进入example目录运行make,自动编译:

输入make flash,给51单片机重新上电(冷启动)进行烧写:

//end

推荐阅读:

全国一等奖,他的学习之路。

一块电路板从“出生“到”成年”

//end

这么“好”的文章,我觉得可以转发+收藏

在linux下也能进行51单片机开发吗?送你一份教程。相关推荐

  1. linux 下51单片机开发环境搭建

    linux 下51单片机开发环境搭建(arch linux) 编译sdcc 软件: sdcc 命令:sdcc file.c 得到一堆文件需要( .inx) 命令: packihx file.inx & ...

  2. Linux操作系统搭建51单片机开发环境(国产桌面操作系统deepin)

    1.概述 操作系统作为计算机系统的掌上明珠,一直是我们国家极力想要掌握的核心技术之一.随着这几年国际关系动荡,地缘政治风云突变的缘故,开发和应用国产操作系统热情空前高涨.尤其基于 Linux 的国产操 ...

  3. 零基础 Ubuntu 20.04.01 下搭建51单片机开发环境[开源编译器SDCC]

    原创首发于CSDN,转载请注明出处,谢谢! 文章目录 为何会在Linux下开发单片机 个人系统环境与所用开发板 安装开源编译器 sdcc STC MCU ISP 闪存工具 stcgal 的安装 单片机 ...

  4. hc05与单片机连接图_基于proteus的51单片机开发实例(13)-LED指示那个按键被按下

    1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下 1.1. 实验目的 本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念. ...

  5. 巫妖王51单片机开发板配套视频课程-朱有鹏-专题视频课程

    巫妖王51单片机开发板配套视频课程-8368人已学习 课程介绍         本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机.配合巫妖王51单片机开发 ...

  6. c++程序设计_基于proteus的51单片机开发实例30-模块化程序设计

    1. 基于proteus的51单片机开发实例30-模块化程序设计 1.1. 实验目的 模块化程序设计 不知不觉我们的51单片机开发实例已经进行到第三十篇了,是时候进行一个总结和反思了,总结什么?反思什 ...

  7. 51单片机支持python么_macOS搭建51单片机开发环境

    1.概述 鉴于好多朋友平常工作电脑为苹果,再配一台 Windows 机器来开发 51 单片机,略显多余.为此,本文详细讲解在 macOS 搭建 51 单片机开发环境. 软硬件需求:macOS 笔记本或 ...

  8. c51中断优先级c语言,基于proteus的51单片机开发实例(14)中断嵌套和中断优先级...

    1. 基于proteus的51单片机开发实例(14)中断嵌套和中断优先级 1.1. 实验目的 在前面实例中我们已经学习了51单片机的定时器/计数器中断,外部中断,通过这些实例,知道了中断电路的设计,中 ...

  9. 51单片机开发入门(3)-IO口应用

    前言 根据前面对51单片机的了解和基础理论知识的掌握,接下来就正式进入单片机开发--实践.引用最近几天追的电视剧<觉醒年代>里新文化领袖陈独秀.李大钊等革命前辈们一直在说的和在践行的马克思 ...

最新文章

  1. mysql 按小时分组统计_PowerBI业务分析:按排名分组统计
  2. emacs 安装auto-complete
  3. 高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug
  4. matlab如何响两声,matlab发出声音
  5. AngularJS中使用ng-repeat的index
  6. 【2019第十届蓝桥杯省赛C/C++B组题解】(非官方题解)
  7. xftp实现本地与服务器的文件上传下载(windows)
  8. python abc模块_3-2 抽象基类abc模块
  9. JavaScript:单选钮的事件处理
  10. 如果你走投无路时,会不会去摆摊做小生意?
  11. java怎么释放分配的内存,linux 内存的分配和释放,linux分配释放
  12. 最详细移动硬盘安装linux过程,装在移动硬盘上的linux系统不能在另一台电脑启动的解决办法
  13. Kali 安装 xmapp、DVWA
  14. 在Windows 10上重置忘记密码的4种方法
  15. 自己动手画一个CPU——Logisim,下
  16. 爬虫加密算法实践(淘宝直播+百度指数)
  17. PCA主成分分析遥感影像融合
  18. 养成类游戏——动物餐厅开发制作
  19. c语言课程设计报告停车系统,停车场管理系统C语言课程设计
  20. 如何让div靠右_一个DIV里,一边靠左,一边靠右,怎么实现?

热门文章

  1. wizard generated application - how is detail page rendered
  2. CRMM_PR_MAST cannot activate
  3. 借助Fiddle使用不同版本的UI5库文件进行测试
  4. How to use Chrome HAR save HTTP performance
  5. Note change in webclient ui - delete case research
  6. ubuntu上Nginx的配置
  7. AET type和不同的操作方式
  8. when will BOL flag lv_do_reread be set
  9. C4C的Rich text editor的JavaScript实现
  10. mysql5.1修改登陆密码_mysql 5.1版本修改密码及远程登录mysql数据库的方法