附件內容: 程序源碼,Makefile模板,相關文檔。
附件下載地址:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/5月/25日/Linux下的MCU開發之AVR系列1-avr系列的編譯燒錄調試方法/
系列說明:LINUX下程序開發具有一定的成熟性,包括大部分的MCU,FPGA,DSP甚至PCB制圖等都是可行的。本系列將針對AVR系列的MCU,而後的系列將會對Linux下的其他方面內容進行探討。
本文環境如下:
OS系統:Ubuntu 12.04(原為10.04最近升級了)
編譯器 :avr-gcc
燒錄軟件 :avrdude
調試軟件:avarice ,GDB和ddd (可視界面)
開發板:
1. xplain(xmega128a1)無法調試,只能燒錄,因為官方沒有公開其調試的協議。
2. Mega16開發板。
仿真器or燒錄器:dragon和usbasp(使用較多)
程序編寫:Vim(升級版的記事本,很好用,很推薦)
關於使用前的准備和說明
至於為什麼要使用linux下開發avr,原因主要是因為比較有趣。其次便是win下的環境用起來其實並不是很方便。IAR是付費軟件(但是的確好用),Avr-studio雖然是免費版,不過優缺點是太過龐大,並且是以vc2010為基礎開發,這個也就算不上真正的免費了。至於win-avr其實蠻不錯的。win下也可以搭建如下環境。
准備:
軟件安裝,軟件安裝建議使用ubuntu的軟件中心,比較方便。需要avr-gcc,avrdude,avarice,gdb,ddd即可了。文本編輯什麼都行。可以集成在codeblocks和eclipse裡面。Codeblocks如此做用起來感覺不錯,eclipse需要配置,但原理都是一樣的。
對於命令行可以如下安裝
強烈建議順便安上手冊
然後就都安裝完畢了。下一步就可以開始了。
開始之前需要先寫一個.c的程序
代碼會在文章最後和附件裡提出。這是一個很簡單讓一個led亮的程序。
之後介紹一個makefile的東西,此物是簡化操作流程的一個東西。讓敲好多行命令才能完成的只需簡單的一句話就行了。附件裡會包含一個makefile的模板,是winavr下模板改的可用版。具體的內容是如何實現的,可以翻閱官方makefile手冊和百度,谷歌。
簡單介紹Makefile裡面的幾個命令,有過經驗可以無視
上面這些都是定義變量,makefile裡的
當我們輸入make program時就會執行上面這句之前的都不用關心了。翻譯過來就變成了(如果叫main.hex)
就是說用usb下的usbasp燒錄m16的flash,內容為main.hex
如果用dragon的話一般用jtag就是-c dragon_jtag。具體可以查看avrdude手冊。
了解之後先打開終端,找到.c文件目錄下。Makefile文件放在同一目錄下
根據需要更改其內容
輸入make
便會輸出一些信息,最後會有提示編譯成功
之後就可以燒錄了
燒錄之前看一下燒錄器是否在
輸入lsusb
顯然,usbasp存在。那麼輸入sudo make program
會在很快的時間內燒錄成功,比win快的多。最後提示你燒錄成功
至於debug,usbasp沒有這個功能。需要用dragon的jtag。
住:Debug其實不是很推薦使用,雖然比較高效,建議利用串口的信息輸入輸出(以後會介紹),這是因為在進入系統的嵌入後,常規的debug經常會無法使用。
實際的命令會是
不過如果makefile裡已經寫好的話直接輸入sudo make debug就可以了
下面為命令的結果
現在屬於等待GDB,可視化的話就是DDD的狀態中了
比如在gdb.conf中添加
file main.elf
target remotelocalhost:4242
啟動DDD
ddd–-debugger “avr-gdb -x gdb.conf”
也可以手起動,然後配置,ui界面比較友好。
還有一句話。makefile裡面已經把上步驟都做好了~當然會根據需求要求更改的。尤其是debug的時候。
總結:本文所說有些簡略了,Linux開發的困難主要在於搭建環境,因此需要多看一下相關的官方手冊。
測試代碼:
main.c