burining Arduino bootloader with FTDI

每次要燒錄bootloader時都要上網找一下才會想起當時是怎麼燒的....

試了很多方式, 用得最順手的是這個 Kimio Kosaka寫的
FTDI BITBANG mode...

基礎都是Avrdude, 這個程式要跟 avrdude.conf 還有這個 avrdude-GUI 都放在同一個資料夾下, 這樣比較不會找不到file

1.首先解開 serjtag-0.3
2. 把這個目錄下的\serjtag-0.3\ 的binary刪掉....
3. 把上面copy下來的 avrdude.conf copy 到 \serjtag-0.3\avrdude-serjtag\binary 把原來的蓋掉...
這個down load下來的有修改 ftdi 232的燒錄參數,也有支援 328P
4. 把那個avrdude-GUI野放到這裡 \serjtag-0.3\avrdude-serjtag\binary
5.直接執行 avrdude-GUI

硬體上是利用FTDI的IO來做燒錄的控制,對應如下...168P
miso PB4; # CTS X3(1)
sck PB5; # DSR X3(2)
mosi PB3; # DCD X3(3)
reset PC6; # RI X3(4)

CTS/DSR/DCD/RI是FTDI 232R的腳位...
最後那個1234就是Duemilanove上X3 connector上的腳位:

Arduino上面的ICSP pin define是這樣...

如果是要燒DIP得那就這樣接就行了...

打開avrdude gui,照這樣設...

Port那一格留白...

第一次燒錄的新chip說只能用 4800的baud rate. 但是燒過一次的就可以把 -B 4800拿掉...
avrdude的command大小寫有不一樣的定義....一定要照著打...

接下來先讀fuse bits...

Fuse的設定跟chip的momory/clock等都有關,168跟328就不一樣, 不同的設定也會不一樣....arduino:
chip/ Hfuse/ L fuse/ e fuse/ lock bits
168P/ DD/ FF/ 00/ 0F(Lock) 3F(unlock)
328P/ DA/ FF/ 05/ 0F(Lock) 3F(unlock)

有讀到就是通了, 有錯的話通常是接線或是avrdude的問題,例如config檔裏對手上的晶片的描述不正確或是沒有...

還有一個要注意的, 168跟168P,也不一樣....device signatrue 就不一樣,要選的bootloader也不一樣喔.. 用 -F就可以燒, 不過不能run....

接下來, 先earse chip, earse 完後再讀lock bits應該是3F(unlock)的狀況...


按照所選的chip寫好 H fuse/L fuse/ e fuse...


選好要燒的bootloader, 就按下去...

剛剛在讀fuse的時候, 可以試試fast mode, 如果可以, fast mode會快很多....

最後燒lock bit,不燒好像也可以用...


也可以用command的方法: http://www.geocities.jp/arduino_diecimila/bootloader/index_old_en.html
\serjtag-0.3\avrdude-serjtag\binary>avrdude -c diecimila -P ft0 -p m168 -t -B 4800
fast mode
avrdude -c diecimila -P ft0 -p m168 -t

Nice header for TQFP32:







留言

這個網誌中的熱門文章

Meshtastic 03 adding GPS on TTGO lora32 V2

Meshtastic 02 try to work with sensors

GeoSetter how to add geotag on to pictures, and export to google earth as kmz