linux 8051 编译,[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)

星期二, 10. 七月 2018 01:01上午 - beautifulzzzz

bfdb996fb7e0f1986af507bb88a48461.png

一、SDCC(Small Device C Compiler)编译环境搭建

SDCC是一个小型设备的C语言编译器,该编译器是标准C语言,可以编译Intel MCS51架构的微处理器,也可以编译STM8等常见MCU。我们要在linux上搭建51开发环境,首先要搭建SDCC编译环境。

SDCC is a retargettable, optimizing Standard C (ANSI C89, ISO C99, ISO C11) compiler suite that targets the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based (hc08, s08), Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit 2000/3000, Rabbit 3000A, TLCS-90) and STMicroelectronics STM8. Work is in progress on supporting the Microchip PIC16 and PIC18 targets. It can be retargeted for other microprocessors.

bfdb996fb7e0f1986af507bb88a48461.png

1.1、下载

有两个可供下载的:

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

bfdb996fb7e0f1986af507bb88a48461.png

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

bfdb996fb7e0f1986af507bb88a48461.png

1.3、测试

直接下载编译好的需要将其按照说明放入系统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

bfdb996fb7e0f1986af507bb88a48461.png

二、Hex2Bin+命令行烧写工具配置使用

2.1、下载工具安装配置

理论上hex也能烧写,但是hex比bin要大一些,所以我们用这里用bin烧写。hex转bin要用到一个Hex2Bin工具,将其下载下来解压到tool目录下;stc单片机烧写工具需要用一个github开源软件stcflash,也将其下载到tool目录下:

➜ 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

bfdb996fb7e0f1986af507bb88a48461.png

2.2、编译+烧写

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

eb1288499e8e8ace3cc41ba9097179ec.png

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

e27ef8a2782a6bcd617f3cee79955ec4.png

bfdb996fb7e0f1986af507bb88a48461.png

链接

8051 PROGRAMMING USING SMALL DEVICE C COMPILER (SDCC):GO

在Linux下搭建51单片机的开发烧写环境:GO

bfdb996fb7e0f1986af507bb88a48461.png

@beautifulzzzz

智能硬件、物联网,热爱技术,关注产品

博客:http://blog.beautifulzzzz.com

园友交流群:414948975

单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境

在Linux下没有像keli那样好用的IDE来开发51单片机,开发环境只能自己搭建了. 第一步:安装交叉编译工具 a) 安装SDCC sudo apt-get install sdcc b)测试SDC ...

&lbrack;编译&rsqb; 7、在Linux下搭建安卓APP的开发烧写环境(makefile版-gradle版)—— 在Linux上用命令行&plus;VIM开发安卓APP

April 18, 2020 6:54 AM - BEAUTIFULZZZZ 目录 0 前言 1 gradle 安装配置 1.1 卸载系统默认装的gradle 1.2 下载对应版本的二进制文件 1.3 ...

&lbrack;编译&rsqb; 5、在Linux下搭建安卓APP的开发烧写环境(makefile版)—— 在Linux上用命令行&plus;VIM开发安卓APP

星期三, 19. 九月 2018 02:19上午 - BEAUTIFULZZZZ 0)前言 本文不讨论用IDE和文本编辑器开发的优劣,是基于以下两点考虑去尝试用命令行编译安卓APP的: 了解安卓APP ...

Linux 下搭建jsp服务器(配置jsp开发环境)

Linux 做为服务器的高效一直时为人所熟知的了,在linux 上搭建各种各样的服务器和开发环境也时学计算机的人常做的.以下时最近在linux配置jsp服务器的全过程,包含一些基本步骤和排错过程: 1 ...

&lbrack;编译&rsqb; 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)

星期日, 09. 九月 2018 07:51下午 - beautifulzzzz 1.安装步骤 1) 从GNU Arm Embedded Toolchain官网下载最新的gcc-arm工具链,写文章时 ...

Linux下搭建 Cocos2d-x-2&period;1&period;4 编译环境

[tonyfield 2013.09.04 ] 参考 Linux下搭建 Cocos2d-x-2.1.4 编译环境 导入 HelloCpp 例程 1. Java 入口 HelloCpp.java Hel ...

linux下搭建lamp环境以及安装swoole扩展

linux下搭建lamp环境以及安装swoole扩展   一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5 ...

Linux下搭建PHP环境

转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件 ...

Java学习心得之 Linux下搭建JavaWeb环境

作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 Linux下搭建JavaWeb环境 1. 前言2. Java安装3. t ...

随机推荐

C&num; if中连续几个条件判断

C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...

【POJ】2096 Collecting Bugs

http://poj.org/problem?id=2096 题意:s个系统n种bug,每天找出一个bug,种类的概率是1/n,系统的概率是1/s.问:每个系统至少找出一个bug:每种类的bug都被找 ...

分享SVN的钩子代码[借鉴学习]pre-commit-post 钩子

#/bin/bash REPOS=$1 TXN=$2 export HOME=/ export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/us ...

起底区块链人脸识别黑马,一个没有人像的人脸识别:iFace Chain(爱妃链)

近几年来,人脸识别技术可谓在移动互联网中得到了空前广泛应用,从银行APP免密转账,人脸快捷支付到证券人脸开户,人脸识别技术已经应用到了移动互联的诸多应用场景.互联网无处不在的今天,便捷与安全貌似是一个 ...

3173&period; 【GDOI2103模拟3&period;17】扫雷游戏(搜索 &plus; 剪枝)

Problem 给出一个类似扫雷的游戏,有\(num\)个数字,求至少有多少个雷. Data constraint \(n,m\le 15,num\le 15\) Solution 好搜索啊. 现讲一 ...

centos 7 默认图形界面&lpar;或者字符界面&rpar;启动

1.切换到管理员用户 2.systemctl get-default命令获取当前模式(可以省去) 3.systemctl set-default graphical.target 修改启动模式(修改为 ...

ubuntu 配置ftp server&lpar;zz&rpar;

ubuntu 配置 ftp server   安装vsftpd sudo apt-get install vsftpd # vsftp(Very Secure FTP)是一种在Unix/Linux中非 ...

iOS11 Xcode 9 按住command 单击 恢复到从前&lpar;直接跳转到定义&rpar;

iOS11 Xcode 9  按住command 单击 恢复到从前(直接跳转到定义)   2017年9月20日,苹果如期推送 Xcode 9 和 iOS 11的更新. Xcode 9正式版与之前bet ...

王者荣耀交流协会第一次scrum会议

照片: 拍照的人是我(高远博),没有出镜.开会时间是17:00到17:37. 昨天的成绩: (1)优化了折线图界面 今天的计划: (1)小组成员汇报昨日成果. (2)小组成员继续推进任务. 遇到的困难 ...

dom4j之selectSingleNode方法

dom4j之selectSingleNode方法 2017年12月18日 15:10:18 xclsky1120 阅读数:2043   版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值