单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:6620|回复:5
打印上一主题下一主题

实现AVR单片机芯片程序自刷 USB_Flash_BootLoader HID制作过程

 [复制链接]
跳转到指定楼层
楼主
ID:631445发表于 2020-4-6 20:40|只看该作者|只看大图回帖奖励
前期制作USBASP过程中,学习了AVR单片机芯片的BootLoader原理,查找了很多关于USB-HID和BootLoader的资料制作了可以自刷程序的atmega8(16)简易板,现将所学的分享给大家。

一、关于BootLoader
       BootLoader是芯片上电后,程序不从flash地址的0x00执行,而是跳转到boot区执行bootloader程序。
       atmega8的boot区的大小及起始位置是由其熔丝位来设置(BOOTSZ0、BOOTSZ1)的。
       其是否执行bootloader程序也是由熔丝位(BOOTRST)设置的。
      
二、关于USB-HID
       HID是人体学输入设备的英文简称,由于Windows内置了此类驱动,如常用的鼠标、键盘等不用外部驱动就可以直接使用。
      
       AVR的Flash-BootLoader-HID固件就是利用了BootLoader和USB-HID的特点,将AVR芯片的Flash刷写程序和USB-HID的程序结合,制作为BootLoader程序,实现了自刷芯片程序的功能。
      
三、制作过程:
       1、根据原理图制作电路
      

           自己的电路中加入了复位按键,需要刷程序时只按下复位键就进入Boot了。
       2、编译BootLoader的HEX固件
           后期可以根据自己的硬件情况对bootloaderconfig.h内的配置进行更改。
           makefile文件的简单配置
以上是USB数据端口的配置,原版使用了PD2->D+,PD0->D-,这个可以根据个人需要更改。
需要注意的是不论更改到哪个端口,D+始终需要与PD2连接,因为其使用了INT0中断。

在config文件最后定义了引导判断端口的设置,这个是根据个人情况更改。
       3、atmega8的熔丝位更改
           使用其他烧写器对熔丝位更改

         需要对以下几个熔丝位更改:
             1)熔丝低位的CKSEL 0~3设置为1,即使用外部晶振。
             2)BOOTSZ1.0,BOOTRST置0,即设置BOOT区大小为1024字节,芯片复位后从BOOT区执行程序。

       4、刷BootLoader
           使用USBASP或者其他烧写器刷HEX固件。
           若使用progisp软件调入固件文件,在“编辑”选项能看到,固件数据是从0x1800开始的,这是
           因为atmega8的boot区设置为1024大小时的boot起始位置(0xC00*2具体原理查阅atmega8芯片说明)。



           因此制作bootloader时要注意芯片熔丝位的设置和makefile的flashboot地址,两者要一致。
          
          
四、进入BootLoader,可以刷自己的程序了!
       1、将PC2接地,插入USB口,windows的设备管理器即可识别出一个HID-compliant device的设备,并安装好驱动。
       若无法识别成功,查检1~4步。


       2、将bootloaderHID.exe复制到自己的程序固件xxx.hex目录下
       3、在cmd命令下输入bootloadhid -r xxxx.hex
       如果成功,即会出现以下界面。
      
       以上可以通过简单配置文件更改,就可心应用到其他AVR芯片。

       以atmega16芯片为例:
           只要将makefile文件     DEVICE = atmega16
                                   BOOTLOADER_ADDRESS = 3800
         其它设置相同,即可实现自刷。

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



六、相关软件
       1、WinAVR(GCC-for-AVR)
       2、Flash-BootLoadHID固件及上位机源码51黑提供下载: FLash_BootloadHID源码.rar(151.09 KB, 下载次数: 104)


评分

黑币 +80
收起理由
+ 30
共享资料的黑币奖励!
+ 50
共享资料的黑币奖励!

查看全部评分

沙发
ID:6428发表于 2020-8-9 16:01来自手机|只看该作者
很强大的自刷固件程序,谢谢
板凳
ID:574213发表于 2020-11-8 15:42|只看该作者
还是不知道怎么玩
地板
ID:81441发表于 2021-8-10 10:00|只看该作者
boottloader的利用确实很少
5#
ID:1051657发表于 2022-11-12 20:11|只看该作者
看起来很不错,等下载了试试
6#
ID:1028227发表于 2023-12-29 20:47|只看该作者
收藏了,谢谢分享。

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网