Linux下AT90S8515微控制器GCC程式設計點燈實驗紀實 (轉)

worldblog發表於2007-08-16
Linux下AT90S8515微控制器GCC程式設計點燈實驗紀實 (轉)[@more@] 

下AT90S8515微控制器GCC點燈實驗紀實:namespace prefix = o ns = "urn:schemas--com::office" />

唐鐵鑫

  看著那發光二極體一閃一閃的,我的高興得又蹦又跳。成功啦!對於一個新手來說,這第一次太難忘了。

  ……

  在CSDN的論壇聽說過AVR,程式設計之類的東東,在網上搜尋相關資料時發現了Linux focus上有一篇Guido Socher寫的《AVR微控制器GCC程式設計》,覺得有可操作性,於是把相關的資料、下到了。

可是,跑遍了廣州的電子商店都找不到AT90S4433,只有AT90S8515,怎麼辦呢?從網上看到《AVR高速嵌入式微控制器原理與應用(修訂版)》的介紹,到書店找來看了看,發現兩個片子下載程式設計的原理是一樣的,只是引腳有些不同,不如就……

 

製作:

到電子城買來以下東東:AT90S8515微控制器(比OTP的51片貴了n倍,n>5)一個,40腳普通鎖緊插座一個,30pf的陶式電容兩個(我找不到27pf的,不過就我所瞭解的,起振用10到30pf都行),4M晶振一個,聚酯板一塊,25並口一個,單排針、雙排針各一排(其實也可以不用),電阻、發光二極體我是從壞了的顯示器上卸下來的。電阻我沒有470歐的,用100歐加380歐串聯代替,我把三節1.5V電池用導線串聯焊在一起做的電源。

一切都齊了,動手吧。按照Guido Socher在avrledtest-0.1.tar裡的原理圖,根據《AVR高速嵌入式微控制器原理與應用(修訂版)》上AT90S8515的接腳,重畫了原理圖。很簡單,我描述一下吧:6腳PB5(MOSI)串聯480歐電阻接並口2針,7腳PB6(MISO)串聯220歐接電阻並口11針,8腳PB7(SCK)串聯480歐電阻接並口2針,9腳PB8(RESET)串聯480歐電阻接並口16針之外再連10千歐電阻接電源正極(VCC),15腳PD5串聯1千歐電阻和一個發光二極體(注意方向)後接電源正極(VCC),18腳XTAL2、19腳XTAL1接晶振和起振電容(標準接法),振盪電路GND、微控制器20腳(GND)、並口18針(GND)接到電源負極,微控制器40腳(VCC)接電源正極。

做板子,你肯定要有焊錫、烙鐵、導線和萬用表等東西。做好後,檢查線路有沒接錯,用萬用表測測電路通不通,電阻、電容有沒壞,然後就搞定了。

 

軟體:

軟體我開始想用我已經有的 7.0,結果沒有ppdev的,於是裝Redhat 9.0(即7.3,Linux核心2.4.18)。這Redhat 9.0,在我的 810上裝了5、6遍我才明白,你不給810的分配4M以上的,Xfree86-4的Sever它就啟動不了,倒黴!

沒有gxtar的話,你要會用、bzip2和tar解壓;都是安裝,你要會;另外,以身份操作。安裝方法我不詳細講了,參照Guido Socher的《AVR微控制器GCC程式設計》。提醒注意:1、裝完binutils-2.11.2後一定要新增/usr/local/atml/lib這行到/etc/ld.so.conf裡面,並執行/sbin/ldconfig命令重建聯結器快取,如果忘了,你要從這步開始往後重灌一遍;2、裝avr-libc-20020106前,有

export CC=avr-gcc
export AS=avr-as
export AR=avr-ar
export RANLIB=avr-ranlib
export PATH=/usr/local/atmel/bin:${PATH}

幾步,用export命令看看你的環境設定的path是什麼樣的,那就是這裡的 ${PATH}所指的,千萬不要直接輸入export PATH=/usr/local/atmel/bin:${PATH}後敲回車,那不對,或者到你的root目錄下,把隱藏檔案顯示出來,你的.bash_profile檔案,加入:/usr/local/atmel/bin路徑,重啟,這就一勞永逸了;3、千萬記住,Linux下是區分大小寫的,我在Win下解壓的uisp-20011025,到了Linux下就不能make,原來DAPA.C變成了dapa.c,真是氣死我了!折騰了半天。

  安裝好後,解壓avrledtest-0.1.tar,因為我用的是AT90S8515,所以,把解壓後的avrledtest-0.1資料夾裡的avrledtest.hex和avrledtest_pre.hex刪了,那是AT90S4433的。用Gedit或其他文字編輯器開啟makefile檔案,把MCU=at90s4433改成MCU=at90s8515,把

# here is a pre-compiled version in case you have trouble with

# your development environment

load_pre: avrledtest_pre.hex

  uisp -dlpt=/dev/port0 --erase  -dprog=dapa

  uisp -dlpt=/dev/parport0 -- if=avrledtest_pre.hex -dprog=dapa -dno-poll -v=3 --hash=32

#-------------------

這一段刪掉,因為我要重新編譯一個MCU=at90s8515的avrledtest.hex,如果development environment有麻煩,那就完成不了啦!

 

測試:

搞定makefile後,把硬體上的並口接到列印口,接通電源;然後,開啟linux的console,進到/sbin目錄下,lsmod看看有沒

parport_pc
ppdev
parport

如果沒有,要用

insmod parport_pc
insmod ppdev
insmod parport

可能這樣parport還不能載入,再insmod一次。用lsmod看看,確定都載入了,進到avrledtest-0.1目錄裡,輸入

make

順利的話avrledtest.hex就產生了,然後

make load

我make load了三四次,因為我的板子有毛病,檢查了好一會才搞好。我make load成功的畫面是console裡出現

uisp –dlpt=/dev/parpart0 –erase –dprog=dapa

Atmel AVR AT90S8515 is found.

Erasing Device

……

Uploading:flash

#####

(total 146 bytes tranerred in 0.68s (216 bytes/s))

Polling:count=145,min/avg/max=3.00/3.14/12.08ms

OK,下載到了,拿開並口,斷電,重新接通,片子就reset了,發光二極體一閃一閃的。點燈實驗成功了,以後就可以自己做其他的實驗了,AT90S8515的flash可以刷1000次。Cool!原來做微控制器實驗也可以這麼便宜!模擬機、程式設計器都省了。(不過,十幾片AT90S8515多出來的錢,都可以買程式設計器了。開發產品還是要用模擬機、程式設計器)。

 

如果你做不出來,可以和我聯絡,toscaner@sina.com.cn">netscaner@sina.com.cn。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-962072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章