返回该小组首页 回复主题
billowtust

billowtust

小组等级:     E币:736  (E币换礼)

#1楼主:[作品]:MEGA8做的USB下载线,欢迎拍砖

文章发表于:2008-09-14 11:08

第二页16楼中发布了地址修正的固件(上位机软件PROGISP),带源码,数据指示LED在读写FLASH过程中闪烁。

早就想改改USBASP的固件,没想到一改就改了一周。

先是将原USBASP的固件读懂,移植到了圈圈的USB学习板上(见http://blog.ednchina.com/billowtust/159574/message.aspx),但是因为51的IO口驱动能力不好,所以在编S5x芯片的时候,如果复位线上有复位电路,十有八九是要出错的。个人认为是当P1.4(RST)脚输出高电平的时候,被5x单片机上电复位电路上的约10K电阻分压,导致目标芯片的RST脚电压仍为低,无法进入编程模式,所以我试过编S5x成功的时候都是没加复位电路的。而MEGA单片机因为是低电平复位,就没有这个问题了,100uF加10K组成的复位电路,也能正确进入编程模式。

然后,因为原先的USBASP固件是不支持大FLASH编程的,比如MEGA128的128K FLASH在原固件下只能写入前64K,如果你的程序大于64K,那么超过64K的部分会在0地址重新开始写,结果就是:0地址校验错误。于是,于是……,眼光停留在了桌子上的USBISP上,这个编程器是找别人借来的,SL的产品,肯定是能写入整128K的,于是…… SL 的USBISP也是用MEGA模拟的USB通信,USBASP也是,为什么不能让USBASP兼容SLISP软件呢?于是开工,经过两天时间,解决了命令字的问题,终于让SLISP软件识别出USBISP硬件来(实际上是USBASP编程板),然后写了一些代码来屏蔽两个编程器硬件上的差别……,最后的结果是,SLISP软件被骗了,大家请看:

(以下图片点击查看大图)

点击开大图

光这样还不够,接着来:

点击开大图

点击开大图

点击开大图

点击开大图

点击开大图

这次编程是对MEGA128进行操作的,写入的文件长度是131072字节,也就是MEGA128满片都被写入了。结论:我解决了USBASP编程器原固件只能写入前64K的问题。

做完这件事,突发奇想,智峰的软件一直不错,按理说是会不笨到不更新高位地址的,于是再回去用BUS HOUND看写MEGA128时候的数据,而且是满片写入的数据(因为是原固件,所以编程结果是失败了的),看了N长的数据,终于让我找到一点线索:厂商自定义请求的0x09号请求代码。以前就见过这个09号请求,但是没发现有什么特别,刚开始以为是PROGISP软件用来定义编程速度的,结果后来被自己否决了。而在写入MEGA128的时候,突然发现这个09号请求后面带的数据是和06号请求(FLASH写入)后面带的地址数据是一样的,而且在超过64K后,09号请求的地址是给出了高位的,而06号写FLASH请求却没有。

这是低于64K时候的数据:

c0 09 00 f7  00 00 04 00  VENDOR    
40 06 00 f7  00 10 00 01  VENDOR

而当高于64K后,数据变成了这样:

c0 09 00 02  01 00 04 00  VENDOR                
40 06 00 02  00 10 00 01  VENDOR

看到了没,09请求的地址变成了 01 02 00,而06请求的地址是02 00,这就是为什么以前没办法写全片128K FLASH的原因了。只要稍微修改一下固件,就能支持全片128K FLASH的读写了。于是原固件的这个问题也被我修正了。大家要是感兴趣,可以自己试着修改一下代码。

 

接下来SHOW一下我的USBASP电路:

点击开大图

 

点击开大图

 

点击开大图

 

点击开大图

 

点击开大图

 

点击开大图

 

点击开大图

 

那个蜂鸣器是能提示编程操作正确与否的,正确长鸣一声,否则4声短鸣。三个LED感觉有些多了,其实两个就够的,绿的那个是编程连接指示,进入编程时亮直,结束时灭。中间那个红的是读写指示,当进行FLASH或EEPROM读写操作时会闪烁,读写越快,闪的越快。最下面的那个是电源指示灯了。

因为以前直接给板子上5V电源时,很多笔记本电脑都不识别,所以这次加了个LDO,给板子上的3.3V电源,所以MEGA8是跑在3.3V电压下的,而目标板通常是5V,于是加了片244作为隔离。板子做好后在以前不能识别USBASP的电脑上都试了一遍,结果是那些电脑都认USBASP了,哈哈。编程器也能向目标板供电,并且是3.3V和5V可选,供电线上还加了1N5819,防止目标板自供电时向USB口回灌电流。

 

好了,就写这么多吧,大伙有什么意见,欢迎拍砖,呵呵。

raohuaren

   小组等级:    E币:417  (E币换礼)

#2

文章发表于:2008-09-14 12:04

强烈的顶一下。。。楼主专研功夫了得

 

computer00

   小组等级:    E币:13635  (E币换礼)

#3

文章发表于:2008-09-14 17:43

哈哈,非常不错~~~关于复位,可以考虑增加一个三极管。

或者简单点,增加一个1K的上拉电阻,不过这样编程完之后要拔下下载线,不方便。

billowtust

   小组等级:    E币:736  (E币换礼)

#4

文章发表于:2008-09-14 19:04

加一个三极管比较实用一些,不过麻烦,呵呵。

我自己也试过,用了两个9013,编程模式倒是进去了,但是读取芯片ID都变成FF:FF:FF了,可能是我把那几根线接错了,哈哈,也没深究。

回广州了?

网上有人要发你书的电子版呢,呵呵。我可是要一本带你签名的纸质版的 :-)

raohuaren

   小组等级:    E币:417  (E币换礼)

#5

文章发表于:2008-09-15 09:20

00签名售书吗。。。哈哈,能不能预定呀。

问billowtust:DS89C450用什么工具下载程序呢。上次向MAXIN申请的一直没用。

billowtust

   小组等级:    E币:736  (E币换礼)

#6

文章发表于:2008-09-15 11:47

DS89C450片内自带了一个BOOTLOADER的,上电后,通过其MTK2软件可以激活连接上单片机,然后就能在MTK2上选择加载FLASH,就能下载HEX文件了。下载线路很简单,就是一个普通的串口线。

computer00

   小组等级:    E币:13635  (E币换礼)

#7

文章发表于:2008-09-15 16:42

也许有签名版的卖哦~~~哈哈~~~啥时练练签名……

billowtust

   小组等级:    E币:736  (E币换礼)

#8

文章发表于:2008-09-15 17:47

找一个1CM厚的笔记薄,从头到尾写上签名,然后挑出来一个好的,印在书上,OK。

computer00

   小组等级:    E币:13635  (E币换礼)

#9

文章发表于:2008-09-16 00:35

好象不是印刷的吧?应该是每本亲笔签名的吧...

billowtust

   小组等级:    E币:736  (E币换礼)

#10

文章发表于:2008-09-16 09:43

反正我得要你亲笔签名的,哈哈,印上的不算

szricky

   小组等级:    E币:63  (E币换礼)

#11

文章发表于:2008-09-17 13:57

搂主研究细致让人佩服~~

2345【下一页】总共 , 当前 /

快速回复主题--如果想加入编辑器功能,建议使用 [高级回复]

您目前还不是小组成员,请先加入

回复贴子区

用户名:    您没有注册?

密码:    忘记了密码?

内容:

  • DesignDesign
  • HTMLHTML

浏览该小组的用户还看过...

所有小组精华文章