找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

實現(xiàn)AVR單片機芯片程序自刷 USB_Flash_BootLoader HID制作過程

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:631445 發(fā)表于 2020-4-6 20:40 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
前期制作USBASP過程中,學(xué)習(xí)了AVR單片機芯片的BootLoader原理,查找了很多關(guān)于USB-HID和BootLoader的資料制作了可以自刷程序的atmega8(16)簡易板,現(xiàn)將所學(xué)的分享給大家。

一、關(guān)于BootLoader
        BootLoader是芯片上電后,程序不從flash地址的0x00執(zhí)行,而是跳轉(zhuǎn)到boot區(qū)執(zhí)行bootloader程序。
        atmega8的boot區(qū)的大小及起始位置是由其熔絲位來設(shè)置(BOOTSZ0、BOOTSZ1)的。
        其是否執(zhí)行bootloader程序也是由熔絲位(BOOTRST)設(shè)置的。
        
二、關(guān)于USB-HID
        HID是人體學(xué)輸入設(shè)備的英文簡稱,由于Windows內(nèi)置了此類驅(qū)動,如常用的鼠標(biāo)、鍵盤等不用外部驅(qū)動就可以直接使用。
        
        AVR的Flash-BootLoader-HID固件就是利用了BootLoader和USB-HID的特點,將AVR芯片的Flash刷寫程序和USB-HID的程序結(jié)合,制作為BootLoader程序,實現(xiàn)了自刷芯片程序的功能。
        
三、制作過程:
        1、根據(jù)原理圖制作電路
        

              自己的電路中加入了復(fù)位按鍵,需要刷程序時只按下復(fù)位鍵就進(jìn)入Boot了。
        2、編譯BootLoader的HEX固件
                后期可以根據(jù)自己的硬件情況對bootloaderconfig.h內(nèi)的配置進(jìn)行更改。
                makefile文件的簡單配置
以上是USB數(shù)據(jù)端口的配置,原版使用了PD2->D+,PD0->D-,這個可以根據(jù)個人需要更改。
需要注意的是不論更改到哪個端口,D+始終需要與PD2連接,因為其使用了INT0中斷。

在config文件最后定義了引導(dǎo)判斷端口的設(shè)置,這個是根據(jù)個人情況更改。
        3、atmega8的熔絲位更改
                使用其他燒寫器對熔絲位更改

             需要對以下幾個熔絲位更改:
                 1)熔絲低位的CKSEL 0~3設(shè)置為1,即使用外部晶振。
                 2)BOOTSZ1.0,BOOTRST置0,即設(shè)置BOOT區(qū)大小為1024字節(jié),芯片復(fù)位后從BOOT區(qū)執(zhí)行程序。

        4、刷BootLoader
                使用USBASP或者其他燒寫器刷HEX固件。
                若使用progisp軟件調(diào)入固件文件,在“編輯”選項能看到,固件數(shù)據(jù)是從0x1800開始的,這是
                因為atmega8的boot區(qū)設(shè)置為1024大小時的boot起始位置(0xC00*2具體原理查閱atmega8芯片說明)。



                因此制作bootloader時要注意芯片熔絲位的設(shè)置和makefile的flashboot地址,兩者要一致。
               
               
四、進(jìn)入BootLoader,可以刷自己的程序了!
        1、將PC2接地,插入USB口,windows的設(shè)備管理器即可識別出一個HID-compliant device的設(shè)備,并安裝好驅(qū)動。
        若無法識別成功,查檢1~4步。


        2、將bootloaderHID.exe復(fù)制到自己的程序固件xxx.hex目錄下
        3、在cmd命令下輸入bootloadhid -r xxxx.hex
        如果成功,即會出現(xiàn)以下界面。
        
          以上可以通過簡單配置文件更改,就可心應(yīng)用到其他AVR芯片。

         以atmega16芯片為例:
               只要將makefile文件       DEVICE = atmega16
                                                    BOOTLOADER_ADDRESS = 3800
             其它設(shè)置相同,即可實現(xiàn)自刷。

五、上一下自己制作的電路



六、相關(guān)軟件
        1、WinAVR(GCC-for-AVR)
        2、Flash-BootLoadHID固件及上位機源碼51黑提供下載: FLash_BootloadHID源碼.rar (151.09 KB, 下載次數(shù): 113)


評分

參與人數(shù) 2黑幣 +80 收起 理由
copower + 30 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:6428 發(fā)表于 2020-8-9 16:01 來自觸屏版 | 只看該作者
很強大的自刷固件程序,謝謝
回復(fù)

使用道具 舉報

板凳
ID:574213 發(fā)表于 2020-11-8 15:42 | 只看該作者
還是不知道怎么玩
回復(fù)

使用道具 舉報

地板
ID:81441 發(fā)表于 2021-8-10 10:00 | 只看該作者
boottloader的利用確實很少
回復(fù)

使用道具 舉報

5#
ID:1051657 發(fā)表于 2022-11-12 20:11 | 只看該作者
看起來很不錯,等下載了試試
回復(fù)

使用道具 舉報

6#
ID:1028227 發(fā)表于 2023-12-29 20:47 | 只看該作者
收藏了,謝謝分享。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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