xwkm 发表于 2013-2-3 19:30:50

LGT HIDBoot又更新了,8.2版本

本帖最后由 xwkm 于 2013-2-4 14:00 编辑

这是LGT HIDBoot的说明文件
本软件/硬件以GPL授权。
万致远
=================What 's the NEW?=====================
Version:        8.20
1、这个版本比上个版本增加了自动修砖功能。只要程序能够跑到bootloader区(并且bootloader是完整的),那么本程序能够自动修复中断向量表。
以前的程序擦除时若不小心断电容易造成中断向量表损坏。而现在的HIDBoot 增加了备份中断向量表,让断电变砖成为历史。
2、本程序对LGT SOP28(bug版本)的支持更加完善。因为bug版本从外部时钟切换到IRC的时候会引起死机。而且切换方法和量产片也不一样。所以我在bootconfig.h中增加了一个开关。
只要打开它的话在SOP28上就能正常工作(对于SOP28 bug片注意不要随便硬复位,拔掉电源重插才是正确复位方法)。
3、本程序对倍频晶振也提供了支持。类似32M/24M的晶振均可使用,只要在Makefile里F_CPU配置为晶振频率的一半,然后打开bootconfig.h中的CRYSTAL_DOUBLE开关即可。

万致远 2013/2/3 bug report:<http://rgwan.byethost10.com>


顺带说一句,下载的童鞋能不能回个帖?

xwkm 发表于 2013-2-3 19:32:19

本帖最后由 xwkm 于 2013-2-3 19:35 编辑

bootloader升级对于焊在板子上的芯片请使用仿真器/ISP重写芯片。不过以后的bootloader更新可以直接通过bootloader本身更新自己。
后面会提供bootloader加壳升级软件以及APP和BOOT 的混合软件。

csdnct 发表于 2013-2-3 21:00:59

有个疑问: LGT的SOP28封装的都是bug芯片吗,只有ssop24的是正常芯片吗,如果SOP28的不全是bug芯片,那么怎么才能区分bug的和非bug的呢?

inkfish321 发表于 2013-2-3 21:19:22

增加boot自己升级自己容易被破解吧。

xwkm 发表于 2013-2-3 21:55:16

csdnct 发表于 2013-2-3 21:00 static/image/common/back.gif
有个疑问: LGT的SOP28封装的都是bug芯片吗,只有ssop24的是正常芯片吗,如果SOP28的不全是bug芯片,那么怎 ...

应该SOP28不都是bug芯片,看生产日期吧。生产日期比较前的是bug芯片。
区分方法是挂外部晶振

xwkm 发表于 2013-2-3 21:55:51

inkfish321 发表于 2013-2-3 21:19 static/image/common/back.gif
增加boot自己升级自己容易被破解吧。

熔丝锁死芯片以后就读不出来了。反正现在boot区里还有点空间,可以搞个加密算法什么的……

xwkm 发表于 2013-2-3 21:57:15

csdnct 发表于 2013-2-3 21:00 static/image/common/back.gif
有个疑问: LGT的SOP28封装的都是bug芯片吗,只有ssop24的是正常芯片吗,如果SOP28的不全是bug芯片,那么怎 ...

反正bug 芯片只有SOP28的早期版本,没别的。只要不是喜欢把时钟源切来切去,就没问题

my2jia 发表于 2013-2-3 22:48:10

mark               

csdnct 发表于 2013-2-4 19:40:57

一个仿真器才几十元,你的这个比仿真器强在哪里呢

xwkm 发表于 2013-2-4 20:13:14

本帖最后由 xwkm 于 2013-2-4 20:17 编辑

csdnct 发表于 2013-2-4 19:40 static/image/common/back.gif
一个仿真器才几十元,你的这个比仿真器强在哪里呢

远程升级,以及对焊在板子上没有留SWD的芯片的支持。而且几乎是0成本。你看看USBasp也就那么点价格了。为啥我们在程序里还要用Bootloader?就是因为升级方便。不用手忙脚乱找工具。而且如果给客户的话,软件有bug。客户可没有SWD TOOL。就只能自升级了。而且如果用串口写个bootloader最多就用512B的memory空间。也占不了多少。

jhdtry 发表于 2013-2-6 14:42:40

单片机弄这么长时间了,还没有自己弄过boolload ,学习一下

xwkm 发表于 2013-2-7 14:03:07

更新修复稳定性和掉固件的问题(那个是晶振虚焊……)

my2jia 发表于 2013-2-7 20:28:06

xwkm 发表于 2013-2-7 14:03 static/image/common/back.gif
更新修复稳定性和掉固件的问题(那个是晶振虚焊……)

怎么找不到 mixup 和 mupdate程序

my2jia 发表于 2013-2-7 20:35:58

if((!(BOOT_PIN & (1<<BOOT_IO))) || (BOOT_CONTR==0xF0))
        {//升级跳线插上,或者APP区复位到BOOT区
                Bootloader();
        }
        else
        {//升级跳线未插
                leaveBootloader();
                Bootloader();升级跳线未插时,为何还要执行 Bootloader() ?

xwkm 发表于 2013-2-7 21:28:32

本帖最后由 xwkm 于 2013-2-8 00:15 编辑

my2jia 发表于 2013-2-7 20:35 static/image/common/back.gif
升级跳线未插时,为何还要执行 Bootloader() ?

如果程序区是空的话。leaveBootloader会返回。所以说为了应对这种状况,就要进bootloader。
如果程序区跳转成功的话,leaveBootloader永不返回,那么Bootloader()就是永远调用不到的

xwkm 发表于 2013-2-7 21:28:47

my2jia 发表于 2013-2-7 20:28 static/image/common/back.gif
怎么找不到 mixup 和 mupdate程序

因为现在还是坑。不稳定

my2jia 发表于 2013-2-7 22:20:35

本帖最后由 my2jia 于 2013-2-7 22:28 编辑

xwkm 发表于 2013-2-7 21:28 static/image/common/back.gif
如果程序区是空的话。leaveBootloader会返回。所以说为了应对这种状况,就要进bootloader ...

谢谢,还有一个问题?
bootloader程序是放在flash的最末端吗?在MAKEFILE里未看到类似"--section-start"语句,如何确保生成的HEX正确下载到FLASH的指定位置中?

xwkm 发表于 2013-2-8 00:14:17

本帖最后由 xwkm 于 2013-2-8 00:17 编辑

my2jia 发表于 2013-2-7 22:20 static/image/common/back.gif
谢谢,还有一个问题?
bootloader程序是放在flash的最末端吗?在MAKEFILE里未看到类似"--section-start" ...

直接下载就行了。那个定位部分其实是在initdrv.S中。org伪指令把boot区定位到5632开始部分。
那个section-start选项我本来想用,但是后面发现可能还是牵扯到中断的问题。加上我又放了个中断备份,所以就用initdrv.S解决问题。
section-start不能用的原因是,开头RST和INT0的向量必须指向boot区,但是section选项是直接平移了整个程序,这样的话RST和INT0向量就没法来跳转。
最后的做法就是用org伪指令定位BOOT区。因为LGT没有BOOT区设计,只能自己模拟
实际上不用任何改动,生成的HEX文件直接下载就行了。不过你的晶振是 12M的话可能要把加倍晶振那个选项去了。

Gorgon_Meducer 发表于 2013-2-8 00:39:44

空间占用多大?给应用程序留了多少空间?

xwkm 发表于 2013-2-8 13:48:31

Gorgon_Meducer 发表于 2013-2-8 00:39 static/image/common/back.gif
空间占用多大?给应用程序留了多少空间?

2560B,APP有5.6K

goodcode 发表于 2013-2-14 20:17:33

要是应用也是vusb的我那个改中断向量表的bootloader就不适用了, 楼主这个还是能用的.

xwkm 发表于 2013-2-15 02:44:40

本帖最后由 xwkm 于 2013-2-15 02:51 编辑

goodcode 发表于 2013-2-14 20:17 static/image/common/back.gif
要是应用也是vusb的我那个改中断向量表的bootloader就不适用了, 楼主这个还是能用的. ...

你的那个平移法的LFU也能用,不过应用程序要改动。
我这个的最大好处就是基本不用动应用程序。
等到中断向量可配置的LGT8F88A出来以后的话那么彻底我的Bootloader就会和r10说再见。
当然目前串口版本的Bootloader和r10没任何关系(中断部分)。
最后r10在我的Bootloader设计中就是如果=0xF0的话,并且app跳转到0地址的时候,Bootloader以此判断是应用程序升级请求。
但是这一次r10决定中断的绝对是不得已之举。
另外就是你的VUSB端口设计为啥不可以两个IO口实现呢?我觉得3个IO实现有点浪费。

goodcode 发表于 2013-2-15 12:59:51

如果只用一个外部中断我那个是实现不了的, 加上判断部分也要占用寄存器而且会延迟usb的同步部分除非用高时钟例如24m
我看vusb的文档3个io应该是为了兼容, 比如int在一个端口而int所在的端口已经没有多余io.
你忽略我那3个io的连接就可以了...

xwkm 发表于 2013-2-15 14:29:08

本帖最后由 xwkm 于 2013-2-15 14:30 编辑

goodcode 发表于 2013-2-15 12:59 static/image/common/back.gif
如果只用一个外部中断我那个是实现不了的, 加上判断部分也要占用寄存器而且会延迟usb的同步部分除非用高时 ...

12M也可以。我尝试在INTR里面加入了10个NOP,V-USB通讯一切正常。
因为实际上USB的脉冲宽度有8个机器周期,K是每隔 4Bit一次。INT0延迟30个周期没有任何问题。

xwkm 发表于 2013-2-16 10:50:45

inkfish321 发表于 2013-2-3 21:19 static/image/common/back.gif
增加boot自己升级自己容易被破解吧。

破解这类的。你发布一个AES加过密的不就行了?
页: [1]
查看完整版本: LGT HIDBoot又更新了,8.2版本