在linux下也能进行51单片机开发吗?送你一份教程。
點(diǎn)擊上方“大魚機(jī)器人”,選擇“置頂/星標(biāo)公眾號(hào)”
福利干貨,第一時(shí)間送達(dá)!
閱讀文本大概需要 5 分鐘。
?0?
?寫在前面在liunx環(huán)境下,沒有keil這種IDE(集成開發(fā)環(huán)境)來開發(fā)51單片機(jī),如果想在liunx下進(jìn)行51單片機(jī)開發(fā),也不是沒有辦法。往下看!
在liunx下搭載51開發(fā)環(huán)境主要就兩部分:
編譯環(huán)境的搭建、燒寫程序
?1?
?搭載編譯環(huán)境SDCC是一個(gè)小型設(shè)備的C語言編譯器,該編譯器是標(biāo)準(zhǔn)C語言,可以編譯Intel MCS51架構(gòu)的微處理器,也可以編譯STM8等常見MCU。
我們要在linux上搭建51開發(fā)環(huán)境,首先要搭建SDCC編譯環(huán)境。
其主頁是:http://sdcc.sourceforge.net/? (復(fù)制到瀏覽器打開)
1.1 下載
有兩個(gè)可供下載的:
1)?https://sourceforge.net/projects/sdcc/files/ <-- 需要自己編譯,有一定難度
2)?http://sdcc.sourceforge.net/snap.php?<-- 編譯好的,拿來即用
注:?對于選擇拿來即用的兄弟,可以直接跳過1.2節(jié)
1.2 編譯
如何編譯:
./config
可能會(huì)出現(xiàn)下面幾種錯(cuò)誤(我也給出了解決辦法):
錯(cuò)誤 1?、缺少bison :
configure: error: Cannot find required program bison.解決方法:
sudo apt-get install flex bison錯(cuò)誤 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錯(cuò)誤 3?、 沒有PIC14、PIC16設(shè)備
failed for device/lib/pic14解決方法:
./configure --disable-pic14-port --disable-pic16-port
?2??
?測試直接下載編譯好的需要將其按照說明放入系統(tǒng)bin等文件中,采用編譯的會(huì)自動(dòng)將其放入系統(tǒng)bin中。而我比較喜歡不讓其和系統(tǒng)的各種東西糾纏在一起,單獨(dú)放在工程下的一個(gè)叫tool的文件里,大不了用的時(shí)候輸全路徑!
如下,我在example目錄下建一個(gè)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轉(zhuǎn)bin要用到一個(gè)Hex2Bin工具,將其下載下來解壓到tool目錄下;
下載地址:https://sourceforge.net/projects/hex2bin/files/latest/download
stc單片機(jī)燒寫工具需要用一個(gè)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?編譯+燒寫
進(jìn)入example目錄運(yùn)行make,自動(dòng)編譯:
輸入make flash,給51單片機(jī)重新上電(冷啟動(dòng))進(jìn)行燒寫:
//end
推薦閱讀:
全國一等獎(jiǎng),他的學(xué)習(xí)之路。
一塊電路板從“出生“到”成年”
//end
這么“好”的文章,我覺得可以轉(zhuǎn)發(fā)+收藏
總結(jié)
以上是生活随笔為你收集整理的在linux下也能进行51单片机开发吗?送你一份教程。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 110万买奔驰故障频出2年未修好 4S店
- 下一篇: 单片机开发与Linux开发有何不同?