M8 USBasp LGT 版
手里有两块m8的usbasp板 支持5 3.3供电 最早逆向lgt isp协议就是想弄到这个上. 看坛里不少朋友v-usb有兼容问题所以先做了串口版本实际测试和优化后应该是没有硬件串口的速度快
看到坛里有说linux下无法开发lgt的所以发一下吧
支持avrdude, progisp172
progisp172 选择m8芯片 读识别符也是m8的
avrdude 可以再avrdude.conf中加入一个芯片看着也许舒服点
#------------------------------------------------------------
# LGT8F0*A
#------------------------------------------------------------
part
id = "lgt8f08a";
desc = "LGT8F08A";
stk500_devcode = 0x70;
avr910_devcode = 0x76;
signature = 0x1e 0x93 0x07;
pagel = 0xd7;
bs2 = 0xc2;
chip_erase_delay = 10000;
pgm_enable = "1 0 1 01 1 0 0 0 1 0 10 0 1 1",
"x x x xx x x x x x x xx x x x";
chip_erase = "1 0 1 01 1 0 0 1 0 0 xx x x x",
"x x x xx x x x x x x xx x x x";
timeout = 200;
stabdelay = 100;
cmdexedelay = 25;
synchloops = 32;
bytedelay = 0;
pollindex = 3;
pollvalue = 0x53;
predelay = 1;
postdelay = 1;
pollmethod = 0;
pp_controlstack =
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
hventerstabdelay = 100;
progmodedelay = 0;
latchcycles = 5;
togglevtg = 1;
poweroffdelay = 15;
resetdelayms = 2;
resetdelayus = 0;
hvleavestabdelay = 15;
resetdelay = 15;
chiperasepulsewidth = 0;
chiperasepolltimeout = 10;
programfusepulsewidth = 0;
programfusepolltimeout = 5;
programlockpulsewidth = 0;
programlockpolltimeout = 5;
memory "eeprom"
size = 504;
page_size = 4;
min_write_delay = 9000;
max_write_delay = 9000;
readback_p1 = 0xff;
readback_p2 = 0xff;
read = "1 0 1 0 0 0 0 0",
"0 0 x x x x xa8",
" a7a6a5a4 a3a2a1a0",
"o o o o o o o o";
write = "1 1 0 0 0 0 0 0",
"0 0 x x x x xa8",
" a7a6a5a4 a3a2a1a0",
"i i i i i i i i";
mode = 0x04;
delay = 20;
blocksize = 128;
readsize = 256;
;
memory "flash"
paged = yes;
size = 8192;
page_size = 64;
num_pages = 128;
min_write_delay = 4500;
max_write_delay = 4500;
readback_p1 = 0xff;
readback_p2 = 0x00;
read_lo = "0 0 1 0 0 0 0 0",
"0 0 0 0a11 a10a9a8",
" a7a6a5a4 a3a2a1a0",
"o o o o o o o o";
read_hi = "0 0 1 0 1 0 0 0",
"0 0 0 0a11 a10a9a8",
" a7a6a5a4 a3a2a1a0",
"o o o o o o o o";
loadpage_lo = "0 1 0 0 0 0 0 0",
"0 0 0 0 x x x x",
"x x xa4 a3a2a1a0",
"i i i i i i i i";
loadpage_hi = "0 1 0 0 1 0 0 0",
"0 0 0 0 x x x x",
"x x xa4 a3a2a1a0",
"i i i i i i i i";
writepage = "0 1 0 0 1 1 0 0",
"0 0 0 0 a11 a10a9a8",
" a7a6a5 x x x x x",
"x x x x x x x x";
mode = 0x21;
delay = 10;
blocksize = 64;
readsize = 256;
;
memory "lfuse"
size = 1;
min_write_delay = 2000;
max_write_delay = 2000;
read = "0 1 0 10 0 0 0 0 0 0 00 0 0 0",
"x x x xx x x x o o o oo o o o";
write = "1 0 1 01 1 0 0 1 0 1 00 0 0 0",
"x x x xx x x x i i i ii i i i";
;
memory "hfuse"
size = 1;
min_write_delay = 2000;
max_write_delay = 2000;
read = "0 1 0 11 0 0 0 0 0 0 01 0 0 0",
"x x x xx x x x o o o oo o o o";
write = "1 0 1 01 1 0 0 1 0 1 01 0 0 0",
"x x x xx x x x i i i ii i i i";
;
memory "lock"
size = 1;
min_write_delay = 2000;
max_write_delay = 2000;
read = "0 1 0 11 0 0 0 0 0 0 00 0 0 0",
"x x x xx x x x x x o oo o o o";
write = "1 0 1 01 1 0 0 1 1 1 xx x x x",
"x x x xx x x x 1 1 i ii i i i";
;
memory "calibration"
size = 4;
read = "0011 1000 00xx xxxx",
"0000 00 a1 a0 oooo oooo";
;
memory "signature"
size = 3;
read = "0011 0000 xxxx xxxx",
"xxxx xx a1 a0 oooo oooo";
;
;
问过官方 isp协议有没有读取芯片标示的命令, 没有回应, 只能用m8代替
lgt的isp速度可能是 1600000bps 左右 再高就不能进入编程模式了
理论最高读取速度约20000Byte/S
理论最高写速度约13333Byte/S
以上都是猜的.
progisp172 的usb包是128字节
avrdude 的usb包是200字节
progisp172 也许更快点
我手里usbasp的电路图 别人的东西我买的现成的 谢谢这位哥们卖的相当便宜
基于上面硬件的固件
usbasp的官方电路图 我看io定义是一样的 没测试过
目前发布了基于51内核的串口isp, 基于lgt芯片的串口isp, 基于m8 usbasp硬件的v-usb接口isp
啥时候给个精华{:lol:}
avrdude 读写eeprom
avrdude -p lgt8f08a -c usbasp -U eeprom:r:"R:/eeprom.bin":r
avrdude -p lgt8f08a -c usbasp -U eeprom:w:"R:/eeprom1.bin":r
avrdude 读写flash
avrdude -p lgt8f08a -c usbasp -u -U flash:r:"R:/flash.bin":r
avrdude -p lgt8f08a -c usbasp -U flash:w:"R:/test_firmware.hex":i
加密位
LB1 LB2 同时置位为芯片加密
熔丝
SPIEN置位为熔丝使能
熔丝低位0:5是rc校准
我说啥时候给个时序…… 楼主你能折腾,赞一个 看了楼主的几个帖子,对于LGT的ISP真是有研究啊 强,usbasp在您哪真的发挥效用了。 oste_ 发表于 2012-8-27 11:30 static/image/common/back.gif
强,usbasp在您哪真的发挥效用了。
还得谢谢你, 一块板子当usbasp用,另外一块用的InfraHID的固件当遥控器用{:lol:} to:goodcode 你可以修改 progisp1.72的 xml 文件直接添加 agt的芯片。不明白的可以直接复制 mega8的 改名就可以了
不明白为什么官方不公开编程协议。 zhifeng 发表于 2012-8-28 09:06 static/image/common/back.gif
to:goodcode 你可以修改 progisp1.72的 xml 文件直接添加 agt的芯片。不明白的可以直接复制 mega8的 改 ...
我是这样定义的
<CLASS6>
<NAME>LGTXXX</NAME>
<TYPE0>
<NAME>LGT</NAME>
<PART0>
<NAME>LGT8F08A</NAME>
<prgClass>3</prgClass>
<ChipClass>0</ChipClass>
<SubClass>1</SubClass>
<ZIFNO>5</ZIFNO>
<flashsize>8192</flashsize>
<pagesize>64</pagesize>
<XmlName>ATmega8.xml</XmlName>
</PART0>
</TYPE0>
</CLASS6>
不知道eeprom的大小如何定义 <XmlName>ATmega8.xml</XmlName>在这个文件中改。 在 eng目录下 to:goodcode具体你可以加我qq 聊
zhifeng 发表于 2012-8-28 16:44 static/image/common/back.gif
to:goodcode具体你可以加我qq 聊
谢谢zhifeng的提示和为大家提供的强大的上位机软件
固件更新 版本120828 附件已包含progisp172需要的文件覆盖即可
*修改熔丝使能位为熔丝高位值的最低位
+LGT8F08A.xml progisp172 支持选择芯片LGT8F08A
注意: 当前默认自动SPI频率1.5 MHz, 在修改RC修正值后可能会引起进入不了编程模式. 我试着用progisp172左侧的编程速度选择更低速好像无效.
看看碰到的人多不多吧, 多的话就在进入编程模式时失败尝试降低速度吧.
胡乱测试折腾的过程中目标芯片有一次编程完就无响应了, swd擦除后写入flash也提示错误. 后来直接在AVR Studio 4中点调试又能用了...
再后来修改usbasp的代码将isp速度降低到750k isp也能正常用了 恢复rc校准之后恢复到1500k的速度也能用了
难道芯片启动就会读取rc的校准值?...... not bad !!! 本帖最后由 malsvent 于 2013-1-17 16:40 编辑
用M8L的USBasp写LGT的时遇到的状况
无论怎么写入验证都错误
连blank check都显示有问题
M8L(3.3V) → LGT(3.3V) = 失败
M8L(5V) → LGT(3.3V) = 失败
M8L(5V) → LGT(5V) = 正常
如果还有人弄半天出不来的
试试直接拿5V来捅LGT吧{:sweat:} malsvent 发表于 2013-1-17 16:35 static/image/common/back.gif
用M8L的USBasp写LGT的时遇到的状况
无论怎么写入验证都错误
最近一两天会发布m8芯片的三合一版本
不过你的测试我也很不解 我还一次没尝试过5v电平接到lgt芯片上 看坛友的测试好像5v接到lgt上也没问题
我在昨天测试三合一半版本时使用的还是3.3v 没有问题{:sweat:} goodcode 发表于 2013-1-17 19:22 static/image/common/back.gif
最近一两天会发布m8芯片的三合一版本
不过你的测试我也很不解 我还一次没尝试过5v电平接到lgt芯片上 看 ...
这个问题就是M8 IO是5V的原因。而且设置的是推挽而不是开漏模式。导致的这个问题。
直接接5V确实会导致LGT失去响应。 {:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}
页:
[1]