linux 8051 编译,[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)
星期二, 10. 七月 2018 01:01上午 - beautifulzzzz
一、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.
1.1、下載
有兩個可供下載的:
注: 對于選擇拿來即用的兄弟,可以直接跳過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
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
二、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
2.2、編譯+燒寫
進入example目錄運行make,自動編譯:
輸入make flash,給51單片機重新上電(冷啟動)進行燒寫:
鏈接
8051 PROGRAMMING USING SMALL DEVICE C COMPILER (SDCC):GO
在Linux下搭建51單片機的開發燒寫環境:GO
@beautifulzzzz
智能硬件、物聯網,熱愛技術,關注產品
博客:http://blog.beautifulzzzz.com
園友交流群:414948975
單片機成長之路(51基礎篇) - 006 在Linux下搭建51單片機的開發燒寫環境
在Linux下沒有像keli那樣好用的IDE來開發51單片機,開發環境只能自己搭建了. 第一步:安裝交叉編譯工具?a) 安裝SDCC?sudo apt-get install sdcc?b)測試SDC ...
[編譯] 7、在Linux下搭建安卓APP的開發燒寫環境(makefile版-gradle版)—— 在Linux上用命令行+VIM開發安卓APP
April 18, 2020 6:54 AM - BEAUTIFULZZZZ 目錄 0 前言 1 gradle 安裝配置 1.1 卸載系統默認裝的gradle 1.2 下載對應版本的二進制文件 1.3 ...
[編譯] 5、在Linux下搭建安卓APP的開發燒寫環境(makefile版)—— 在Linux上用命令行+VIM開發安卓APP
星期三, 19. 九月 2018 02:19上午 - BEAUTIFULZZZZ 0)前言 本文不討論用IDE和文本編輯器開發的優劣,是基于以下兩點考慮去嘗試用命令行編譯安卓APP的: 了解安卓APP ...
Linux 下搭建jsp服務器(配置jsp開發環境)
Linux?做為服務器的高效一直時為人所熟知的了,在linux?上搭建各種各樣的服務器和開發環境也時學計算機的人常做的.以下時最近在linux配置jsp服務器的全過程,包含一些基本步驟和排錯過程: 1 ...
[編譯] 4、在Linux下搭建nRF51822的開發燒寫環境(makefile版)
星期日, 09. 九月 2018 07:51下午 - beautifulzzzz 1.安裝步驟 1) 從GNU Arm Embedded Toolchain官網下載最新的gcc-arm工具鏈,寫文章時 ...
Linux下搭建 Cocos2d-x-2.1.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# 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. 【GDOI2103模擬3.17】掃雷游戲(搜索 + 剪枝)
Problem 給出一個類似掃雷的游戲,有\(num\)個數字,求至少有多少個雷. Data constraint \(n,m\le 15,num\le 15\) Solution 好搜索啊. 現講一 ...
centos 7 默認圖形界面(或者字符界面)啟動
1.切換到管理員用戶 2.systemctl get-default命令獲取當前模式(可以省去) 3.systemctl set-default?graphical.target?修改啟動模式(修改為 ...
ubuntu 配置ftp server(zz)
ubuntu 配置 ftp server ? 安裝vsftpd sudo?apt-get?install?vsftpd #?vsftp(Very?Secure?FTP)是一種在Unix/Linux中非 ...
iOS11 Xcode 9 按住command 單擊 恢復到從前(直接跳轉到定義)
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 ...
總結
以上是生活随笔為你收集整理的linux 8051 编译,[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux twiki 添加权限,Lin
- 下一篇: linux 继续编译,【编译】Linux