在Linux下燒錄51微控制器
*本文作者:LEdge1,本文屬 FreeBuf原創獎勵計劃,未經許可禁止轉載。
我一直在學習Linux 系統,但是最近還要學習51微控制器,所以在Linux下給51微控制器燒錄程式那是非常必要的。
之前在windows上使用keil十分方便,但是轉移到Linux上去沒有專門給微控制器燒寫程式的IDE了。無奈只能自己一步一步地配置咯!
看了網上一些部落格發現他們寫的很模糊,像我這種Linux小白真的是一頭霧水,在自己搗鼓了兩天之後,把自己的心得發出來,像我那些即將或者正在為此事煩惱的人能夠稍微輕鬆一點!
正文
首先得使用USB轉TTL模組給51微控制器接線。
接完線之後,我們得在Linux下配置我們的開發編譯環境。
首先我們得配置 SDCC編譯器 ,像我使用了Ubuntu,我直接使用包管理器安裝。當然了你也可以去下載檔案自己下來編譯!
這裡我貼上sdcc的網站 連結文字
sudo apt install sdcc
當然了我們有了編譯器還不行。我們還需要可以給51微控制器燒錄程式的軟體啊。哈哈。它就是stcflash,大家可以直接使用git命令去克隆到本地


之後為1新增可執行許可權。

chmod +x 1
這樣的話,就算沒有後綴名的花也可以執行,因為在指令碼第一行就已經申明瞭執行。同樣的我貼上 stcflash 的github的地址。
之後我們得把它新增到環境變數裡面去。
mv 1/usr/local/bin/
這時候我們得安裝一個依賴,因為51微控制器是使用串列埠下載程式的,安裝一個python serial。
apt install python serial
這時候我們可以執行1(stcflash.py)這個指令碼了,這時候切換到工作目錄中,寫一個51微控制器的程式。在Linux下寫的和Windows下寫程式會有一些不同的地方。
比如說在Windows下引用reg51.h這個標頭檔案就好了而在linux下我們得引用msc51/8051.h這個標頭檔案。
當然了我們在Windows下寫定義埠的的時候是使用^符號,而在Linux下要使用_符號來表示。
我在這裡只是簡單介紹一下如何在Linux下燒錄微控制器,不是來告訴你在Linux和Windows下編寫程式的時候有哪些不同的,這些要注意的是我們自己要去摸索的。
編寫之後我們就可以使用SDCC 編譯我們的.c程式碼了。
sdcc main.c
但是sdcc編譯出來的是.ihx檔案。但是燒錄51微控制器是要使用.hex檔案。不要怕,其實我們在安裝sdcc的時候我們就已經安裝了一個packihx軟體 。這個軟體的功能就是將.ihx檔案轉化成.hex檔案的。
packihxmian.ihx>main.hex
使用命令packihx之後,現在我們就有了可以燒寫的了.hex檔案了。
我們之前就已經把1(stcflash.py) 放到了我們的環境變量了,對就是那個我重名命為1的軟體。我們在使用1這個軟體的時候我們要使用root許可權。當然了stcflash會自動識別我們插入的埠,但是你電腦上有多個串列埠的話,你可能要指定一下串列埠號。我這裡只有這一個串列埠號,所以他就會自動識別,目前來看她自動識別還是聽準確的。目前沒啥問題!
stcflsh main.hex --port /dev/ttyusb0
我的串列埠號是USB0。
51 微控制器是要斷電重啟才能燒錄的,所以我們斷電重啟一下。
OK
完美。萬事開頭難,解決了第一步,大家都可以開始奔放了。
總結
在最後我得感謝一下B站了,說真的B站是個學習的好地方!大家不要總是追番啦。裡面有很多有用的東西!!!!
第一次寫稿子,希望今後釋出更多的稿子!!!這個文件寫的很詳細大家跟著做基本都可以解決問題。
*本文作者:LEdge1,本文屬 FreeBuf原創獎勵計劃,未經許可禁止轉載。