找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 9868|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

改造USBasp編程器用arduino燒錄引導(dǎo)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
玩arduino的朋友應(yīng)該都知道常用的arduino的處理器幾乎都是atmega系列的單片機(jī)(AVR單片機(jī)一種)想要更加靈活的玩轉(zhuǎn)arduino的莫過(guò)于自己制作一塊arduino主板,但這就帶來(lái)了一個(gè)問(wèn)題——BootLoader的燒錄(也就是引導(dǎo)程序的燒錄)

arduino的BootLoader不能使用串口燒錄這是常識(shí)(我個(gè)人認(rèn)為),唯一的辦法就是編程器(也叫燒錄器或下載器)
可以將一塊arduino板子制作成arduinoISP,但據(jù)說(shuō)并不穩(wěn)定,有一定概率燒錄失敗(我并沒(méi)有有試驗(yàn)過(guò),所以具體情況我也不太清楚,用過(guò)的可以說(shuō)一下)
還有就是目前最便宜的編程器也就是是USBasp(國(guó)內(nèi)大部分AVR單片機(jī)用的都是這種),也就是下圖這種(顏色不一定相同)
注:USBisp和USBasp并不是同一種下載器,某寶搜出來(lái)的雖然寫(xiě)的是isp,但幾乎都是智峰USBasp

某寶一搜USBasp出來(lái)一大堆(本文僅針對(duì)這種帶外殼,插頭向后的燒錄器,其他的不保證成功
因?yàn)閍rduino的jtag接口是6p的,所以要再接上一個(gè)10p轉(zhuǎn)6p的轉(zhuǎn)換頭(當(dāng)然直接用杜邦線接也可以)


但很多人買(mǎi)回來(lái)連上電腦后并不能使用,在arduino上點(diǎn)擊“燒錄引導(dǎo)程序”會(huì)提示:
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
燒錄引導(dǎo)程序出錯(cuò)。



原因在于目前國(guó)內(nèi)的USBasp大部分使用的是國(guó)內(nèi)“智峰”的USBasp編程器的程序固件,雖然免驅(qū),但只能用智峰的下載軟件progisp。而arduino官方的燒錄程序識(shí)別的是國(guó)際版USBasp,也就是說(shuō)雖然都是USBasp,但固件和驅(qū)動(dòng)完全不一樣(這也是為什么很多的USBasp不能在Linux上對(duì)AVR單片機(jī)燒錄程序的原因)

因此,如果要用USBasp燒錄引導(dǎo)程序,我知道兩種辦法
一:在arduino安裝目錄找到BootLoader的hex文件,然后使用progisp進(jìn)行燒錄,但這種方法比較麻煩,每次換不同的版型都要更換flash、更換配置(熔絲位設(shè)置等等,設(shè)置不當(dāng)還會(huì)引起單片機(jī)鎖死,然而解鎖更麻煩)網(wǎng)上已經(jīng)有這種方法了,在此不介紹
二:還一種就是我琢磨了好久才解決的一種辦法,把智峰的USBasp改造成國(guó)際版,一勞永逸,做成之后就可以直接用改造后的USBasp下載BootLoader,也可以使用編程器上傳arduino程序

改造方法如下:
一 前期準(zhǔn)備:
  硬件
    兩個(gè)USBasp燒錄器(改造完后一個(gè)是智峰驅(qū)動(dòng),一個(gè)是通用版,以后就有兩種USBasp下載器,面對(duì)不同情況,畢竟progisp大多時(shí)候還是比通用版AVR燒錄程序很好用)
    一根USBasp下載線(買(mǎi)的時(shí)候一般都有)
    尖頭短路鑷子(沒(méi)有也可以用導(dǎo)線代替)
    烙鐵等電工工具
  軟件
USBasp固件(解壓)   http://www.fischl.de/usbasp/
    智峰progisp   http://www.pc6.com/softview/SoftView_118051.html
    Zadig(驅(qū)動(dòng)安裝)  http://zadig.akeo.ie/


二 硬件修改:
把其中一個(gè)USBasp的外殼拆掉,手拿著外殼(不要碰尾端),USB頭向下,對(duì)著硬板或地面向下一壓就拆掉了

注意圖上用紅線標(biāo)記的地方(B短路點(diǎn)),有個(gè)0歐的電阻,有的下載器是直接用焊錫焊成一個(gè)點(diǎn)
把0歐的電阻焊掉或把錫點(diǎn)焊開(kāi),也就是讓線路斷開(kāi)(重要)

把兩個(gè)編程器用下載線連接起來(lái)


將智峰USBasp插在電腦上

用短路鑷子連接待改造的編程器的“up”兩側(cè)對(duì)應(yīng)的兩個(gè)過(guò)孔(也可以用導(dǎo)線臨時(shí)焊接在一起)
下載固件期間“up”兩端的過(guò)孔須保持連接狀態(tài),下載完成后斷開(kāi)(不用立即斷開(kāi))



三 固件下載:
打開(kāi)progisp
確認(rèn)改造的USBasp處理器型號(hào),圖中所示位置,應(yīng)為atmega8或atmega88或atmega48,后綴A、L之類(lèi)的可以忽略


點(diǎn)右側(cè)“調(diào)入Flash”,在下載的“USBasp固件”中打開(kāi)“in irmware
可以分別找到對(duì)應(yīng)的型號(hào)atmega8、atmega48、atmega88的hex文件
按圖示下載程序,可按圖示框選相應(yīng)選項(xiàng)

熔絲位設(shè)置方式,可以直接在下方輸入
ATMEGA8設(shè)置為   低位值EF,高位值C9
ATMEGA48設(shè)置為 低位值FF,高位值DD
ATMEGA88設(shè)置為 低位值FF,高位值DD


固件下載成功后
斷開(kāi)“up”對(duì)應(yīng)電路
可關(guān)閉progisp

四 安裝驅(qū)動(dòng):
拔掉智峰USBasp,插上改造后的USBasp,電腦會(huì)提示安裝驅(qū)動(dòng)失敗或其他提示(也有提示成功的,為保萬(wàn)一還是再裝一下,因?yàn)轵?qū)動(dòng)有3種),忽略
打開(kāi)Zadig
選擇 Options->List All Devices
在下拉框中選擇USBasp(一定不要選錯(cuò))
綠色箭頭右側(cè)選擇為WinUSB
然后Install Driver(我已經(jīng)安裝過(guò)了,所以顯示為Reinstall Driver)

注:arduino對(duì)應(yīng)驅(qū)動(dòng)為WinUSB,而如果想用AVRDUDE下載AVR程序,需要將驅(qū)動(dòng)改為libusb-win32或libusbK




至此,一個(gè)公版USBasp就改造完成了
不僅arduino可以用來(lái)燒錄BootLoader,linux也可以用來(lái)下載程序了

評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
QQwert + 5 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:85865 發(fā)表于 2018-2-8 13:41 | 只看該作者
這個(gè)好,學(xué)習(xí)了,準(zhǔn)備也改一個(gè)試試
回復(fù)

使用道具 舉報(bào)

板凳
ID:85865 發(fā)表于 2018-2-8 14:33 | 只看該作者
WINUSB 和 Libusb 驅(qū)動(dòng)不能共存的嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:85865 發(fā)表于 2018-2-8 14:34 | 只看該作者
用arduino可以來(lái)燒錄BootLoader,就不能用progisp來(lái)燒錄
回復(fù)

使用道具 舉報(bào)

5#
ID:283192 發(fā)表于 2018-2-8 21:00 | 只看該作者
學(xué)習(xí)了  謝謝分享
回復(fù)

使用道具 舉報(bào)

6#
ID:304003 發(fā)表于 2018-4-9 10:31 | 只看該作者
好東西
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表