在初步完成插件之後,緊接著想到的是應該要試著讓電腦系統可以辨識到這個裝置,這個動作就包含了兩個最主要的動作:
上傳韌體到 MCU
以及驅動程式的安裝
。人生的 but, 總是這樣子開始的 (咖啡 ~
應該沒有辦法在這上面寫過多、也太過詳細的撞牆設定與測試 ‧‧‧
因為之前就已經在其它實驗上,拿過本回合要改成 USBasp 的這顆
Atmega328p
,所以這顆 MCU 裡頭也早已經透過 Arduino IDE 安裝了它所提供的 bootloader 了。這個地方或許就已經埋下了很重要的關問題點,也是之後需要驗證的
以正常的狀況下來說,就只要跟著根目錄所提供的那個 readme.txt 上面的講解,再根據自己的需求進行設定和步驟的調整就行了。
一般的狀況流程 :
- 修改
makefile
或是 config.h 這一類的檔案. - make clean
- make
- make install / make upload / make xxxx 這一類的指令
不過,問題會發生,不就就是這麼回事嘛! =.=
由於,很重要的魷魚 ~
打開 firmware/Makefile 在一開頭就寫了個重點項目:
TARGET
也就是說,這個韌體可能是拿來搭配這幾顆 MCU 的。
# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff# TARGET=at90s2313
HFUSE 和 LFUSE 分別表示,要針對這些 MCU 裡頭的 High Fuse byte & Low Fuse byte 開關設定哪一些旗標值。
※ 基金/股票買賣,投資理財,有賺有賠有風險,下手前請詳細參閱公開說明書 ~
在此附上官方文件 Atmel ATmega48A/PA/88A/PA/168A/PA/328/P Datasheet 連結;不多 ‧‧‧ 目前版本 六百五十頁而已 ~‧ ~
我很難一開頭就說:我先看完這顆晶片的規格書,然後再來開始玩 吧~ 吧~ 吧~ 吧~
所以,手頭上的這幾顆 Atmega328p 基本上,都不是在此文件提及的晶片規格當中,如果能夠順利的裝上去,還能運作,基本上就是
運氣太好
。手邊也沒其它型號可以拿來試的了啊,也只能先試看看再做打算了 ~
經歷了一堆波折後,終於得到了個稍微正常一點點,可以讓 MCP 去吃這一個韌體的指令:
avrdude -v -c arduino -p atmega328p -P COM5 -U flash:w:./main.hex:a
看到最後的這幾行訊息,感覺好像是失敗的,不過看起來又好像是成功的狀況,就先當做這個動作是完成的好了。D:\>avrdude -v -c arduino -p atmega328p -P COM5 -U flash:w:./main.hex:aavrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/Copyright (c) 2007-2009 Joerg WunschSystem wide configuration file is "C:\WinAVR\bin\avrdude.conf"Using Port : COM5Using Programmer : arduinoAVR Part : ATMEGA328PChip Erase delay : 9000 usPAGEL : PD7BS2 : PC2RESET disposition : dedicatedRETRY pulse : SCKserial program mode : yesparallel program mode : yesTimeout : 200StabDelay : 100CmdexeDelay : 25SyncLoops : 32ByteDelay : 0PollIndex : 3PollValue : 0x53Memory Detail :Block Poll Page PolledMemory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------eeprom 65 5 4 0 no 1024 4 0 3600 3600 0xff 0xffflash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xfflfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00Programmer Type : ArduinoDescription : ArduinoHardware Version: 3Firmware Version: 4.4Vtarget : 0.3 VVaref : 0.3 VOscillator : 28.800 kHzSCK period : 3.3 usavrdude: AVR device initialized and ready to accept instructionsReading | ################################################## | 100% 0.00savrdude: Device signature = 0x1e950favrdude: safemode: lfuse reads as 0avrdude: safemode: hfuse reads as 0avrdude: safemode: efuse reads as 0avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performedTo disable this feature, specify the -D option.avrdude: erasing chipavrdude: reading input file "./main.hex"avrdude: input file ./main.hex auto detected as Intel Hexavrdude: writing flash (4852 bytes):Writing | ################################################## | 100% 0.88savrdude: 4852 bytes of flash writtenavrdude: verifying flash memory against ./main.hex:avrdude: load data flash data from input file ./main.hex:avrdude: input file ./main.hex auto detected as Intel Hexavrdude: input file ./main.hex contains 4852 bytesavrdude: reading on-chip flash data:Reading | ################################################## | 100% 0.73savrdude: verifying ...avrdude: 4852 bytes of flash verifiedavrdude: safemode: lfuse reads as 0avrdude: safemode: hfuse reads as 0avrdude: safemode: efuse reads as 0avrdude: safemode: Fuses OKavrdude done. Thank you.
然後就進入另一回合的遭遇戰了 ~
PS:遲遲不想在旗標值的部份有所動作,主要也是因為對 AVR 還有這些設定值不熟,而且不想要隨隨便便就把 MCU 搞成樂高積木 ~
#Arduino, #USBasp, #AVR
沒有留言:
張貼留言