搜索
bottom↓
回复: 12

开源小项目LGT8F08A的USB引导程序: USeeBoot

[复制链接]

出0入0汤圆

发表于 2013-11-29 17:11:39 | 显示全部楼层 |阅读模式
USeeBoot: 又一个LGT的USB引导程序

  • 可在特定条件下,例如上电时PB2为低电平进入升级状态,升级条件可配置。
  • 应用程序代码无需更改,不需要将引导和应用程序链接到一起使用。
  • 自动重建中断向量,升级烧写时断电也不会变砖。
  • Win32 GUI烧写程序
  • FLASH第0页预留为中断向量使用,第1页至第5页为引导程序。
  • 应用程序的基地址为0x600(FLASH第六页起始)



默认的硬件配置为:
USB_DP --- PA0
USB_DN --- PA1
晶振 --- 16Mhz
引导模式 --- 上电时如果PB3=LOW或者应用程序区前4个字节都为0xFF则进入升级模式



如何使用:
1. 首先,你需要有一个现成的LGT编程器可以使用。
2. 如果你的USB硬件配置和上面的默认配置不同,你需要修改firmware\atmel_studio\board.h中的配置代码,并且重新编译程序。
3. 如果使用的晶振是12Mhz,将工程中的usbdrvasm16.inc文件替换为usbdrvasm12.inc。
4. 将编译得到的USBoot.hex文件使用编程器烧写到芯片中。
5. 此时芯片中的应用程序区全部为0xFF,USBoot会自动进入USB升级模式。
4. 连接LGT主板到PC上,使用software\libusb-win32\bin\inf-wizard.exe为其安装驱动程序。
5. 打开USBoot烧写程序software\bin\USBootPROG.exe,此时程序左下角应该显示“设备已连接”。
6. 点击“Hex文件”按钮选择应用程序的hex文件,点击写入按钮开始烧写。
7. 烧写完成以后,复位LGT芯片即可。
8. 需要再一次进入升级模式时,将PB3短接到地,重新上电即可。

USBoot源代码及工程(Atmel Studio 6.1):
硬件配置原理图:
Win32 GUI烧写程序:
烧写程序源代码及工程(VS2008):

注意:
应用程序的源代码无需做任何更改就可以使用USBoot烧写到芯片中。但是必须在编译时设置应用程序的基地址为0x600。在atmel studio中的配置如下图所示:



================  作者罗嗦分割线 ===================

这个Boot使用了中断向量平移的方法,将除了复位向量以外的所有中断转移到应用程序区。当进入升级模式的时候,引导在INT0中断向量的位置上默默的写入自己的INT0中断处理函数地址。
当重新进入应用程序以前,引导会将自己的中断函数地址从中断向量中拿掉,写入转跳到应用程序区的代码。
这样做的原因是,LGT没有中断向量重映射的功能。因为必须重写中断向量区,所以FLASH的第0个页只能保留给中断向量(512字节)。
引导程序包含完整的V-USB代码以及FLASH编程驱动。编译完成以后大约为2.4KB左右(占用2560字节空间)。
所以,引导实际占用的空间为6个页=3KB。留给应用程序的空间为5KB。
对于8KB的FLASH来说,引导占用的空间很大。如果板子可以方便的使用ISP下载,使用ISP下载是更好的选择。
如果不能使用ISP下载,应用程序本身又小于5KB的话,USBoot还是具有一定的使用价值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-11-29 20:10:36 | 显示全部楼层
完成度很高的项目,非常不错! 多谢支持!!

出0入0汤圆

发表于 2013-11-30 00:34:42 | 显示全部楼层
之前有个linux的bootloader 这回win终于也有了 不知道3k能否继续精简

出0入0汤圆

发表于 2013-11-30 12:39:39 | 显示全部楼层

出0入0汤圆

发表于 2013-11-30 21:59:55 | 显示全部楼层
上次我也做过个HID模式的bootloader……

出0入0汤圆

发表于 2013-11-30 22:05:02 | 显示全部楼层
我的做法是引导程序在高2560B字节上驻留,无需改用户程序。在INT0上加个判断语句。把应用程序的INT0转写到另外的向量上。

出0入0汤圆

发表于 2013-11-30 22:07:53 | 显示全部楼层
不过我比较奇怪的问题就是说,上位机来USB包的时候写入会导致CPU停掉失去响应使上位机踢掉设备。你怎么解决的……

出0入0汤圆

发表于 2013-12-2 19:26:28 | 显示全部楼层
顶, 好贴!

出0入0汤圆

发表于 2013-12-7 17:33:36 | 显示全部楼层
好帖,挺

出0入0汤圆

发表于 2014-10-6 15:34:35 | 显示全部楼层
今天闲得没事,下载编译了一遍,有下面的错误:
Error        1        'EEDHR' undeclared (first use in this function)        F:\AVRStudio\LGTBoot\flash.c        37        3        USBoot

出0入0汤圆

发表于 2014-10-6 15:37:14 | 显示全部楼层
头文件里只见有个:
#define EEDRH        (*(volatile unsigned char *)0x49)

应该是楼主笔误吧?!

出0入0汤圆

发表于 2014-10-6 15:50:50 | 显示全部楼层
好帖,挺

出0入0汤圆

发表于 2014-10-20 14:20:32 | 显示全部楼层
谢谢分享................
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 19:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表