在linux下也能进行51单片机开发吗?送你一份教程。
點擊上方“大魚機器人”,選擇“置頂/星標公眾號”
福利干貨,第一時間送達!
閱讀文本大概需要 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单片机开发吗?送你一份教程。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 110万买奔驰故障频出2年未修好 4S店
- 下一篇: PCB板上的“特殊焊盘”到底起什么作用?