搜索
bottom↓
回复: 17

M8 USBasp LGT 版

[复制链接]

出0入0汤圆

发表于 2012-8-26 13:57:39 | 显示全部楼层 |阅读模式
手里有两块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 0  1 1 0 0    0 1 0 1  0 0 1 1",
                       "x x x x  x x x x    x x x x  x x x x";

    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                       "x x x x  x x x x    x x x x  x 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   x  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        write           = "  1   1   0   0      0   0   0   0",
                          "  0   0   x   x      x   x   x  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  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   0  a11 a10  a9  a8",
                          " a7  a6  a5  a4   a3  a2  a1  a0",
                          "  o   o   o   o    o   o   o   o";

        read_hi         = "  0   0   1   0    1   0   0   0",
                          "  0   0   0   0  a11 a10  a9  a8",
                          " a7  a6  a5  a4   a3  a2  a1  a0",
                          "  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   x  a4     a3  a2  a1  a0",
                          "  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   x  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "  0   0   0   0    a11 a10  a9  a8",
                          " a7  a6  a5   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 1  0 0 0 0   0 0 0 0  0 0 0 0",
                          "x x x x  x x x x   o o o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
                          "x x x x  x x x x   i i i i  i i i i";
      ;

    memory "hfuse"
        size            = 1;
        min_write_delay = 2000;
        max_write_delay = 2000;
        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
                          "x x x x  x x x x   o o o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
                          "x x x x  x x x x   i i i i  i i i i";
      ;

    memory "lock"
        size            = 1;
        min_write_delay = 2000;
        max_write_delay = 2000;
        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
                          "x x x x  x x x x   x x o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
                          "x x x x  x x x x   1 1 i i  i i i i";
      ;

    memory "calibration"
        size            = 4;
        read            = "0  0  1  1   1  0  0  0   0  0  x  x   x  x  x  x",
                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
      ;

    memory "signature"
        size            = 3;
        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
      ;
  ;

问过官方 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


啥时候给个精华

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校准

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-8-26 14:01:08 | 显示全部楼层
我说啥时候给个时序……

出0入0汤圆

发表于 2012-8-26 15:24:07 | 显示全部楼层
楼主你能折腾,赞一个

出0入0汤圆

发表于 2012-8-27 09:56:32 | 显示全部楼层
看了楼主的几个帖子,对于LGT的ISP真是有研究啊

出0入0汤圆

发表于 2012-8-27 11:30:42 | 显示全部楼层
强,usbasp在您哪真的发挥效用了。

出0入0汤圆

 楼主| 发表于 2012-8-27 11:41:16 | 显示全部楼层
oste_ 发表于 2012-8-27 11:30
强,usbasp在您哪真的发挥效用了。

还得谢谢你, 一块板子当usbasp用,另外一块用的InfraHID的固件当遥控器用

出0入0汤圆

发表于 2012-8-28 09:06:59 | 显示全部楼层
to:goodcode   你可以修改 progisp1.72的 xml 文件直接添加 agt的芯片。不明白的可以直接复制 mega8的 改名就可以了

出0入42汤圆

发表于 2012-8-28 11:50:28 | 显示全部楼层
不明白为什么官方不公开编程协议。

出0入0汤圆

 楼主| 发表于 2012-8-28 14:28:27 | 显示全部楼层
zhifeng 发表于 2012-8-28 09:06
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的大小如何定义

出0入0汤圆

发表于 2012-8-28 16:35:54 | 显示全部楼层
<XmlName>ATmega8.xml</XmlName>  在这个文件中改。 在 eng目录下

出0入0汤圆

发表于 2012-8-28 16:44:10 | 显示全部楼层
to:goodcode  具体你可以加我qq 聊

出0入0汤圆

 楼主| 发表于 2012-8-28 22:14:32 | 显示全部楼层
zhifeng 发表于 2012-8-28 16:44
to:goodcode  具体你可以加我qq 聊

谢谢zhifeng的提示和为大家提供的强大的上位机软件


固件更新 版本120828 附件已包含progisp172需要的文件覆盖即可
*修改熔丝使能位为熔丝高位值的最低位
+LGT8F08A.xml progisp172 支持选择芯片LGT8F08A

注意: 当前默认自动SPI频率1.5 MHz, 在修改RC修正值后可能会引起进入不了编程模式. 我试着用progisp172左侧的编程速度选择更低速好像无效.
看看碰到的人多不多吧, 多的话就在进入编程模式时失败尝试降低速度吧.





本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2012-8-28 22:24:45 | 显示全部楼层
胡乱测试折腾的过程中目标芯片有一次编程完就无响应了, swd擦除后写入flash也提示错误. 后来直接在AVR Studio 4中点调试又能用了...
再后来修改usbasp的代码将isp速度降低到750k isp也能正常用了 恢复rc校准之后恢复到1500k的速度也能用了
难道芯片启动就会读取rc的校准值?......

出0入0汤圆

发表于 2012-8-31 13:42:48 | 显示全部楼层
not bad !!!

出0入0汤圆

发表于 2013-1-17 16:35:57 | 显示全部楼层
本帖最后由 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吧

出0入0汤圆

 楼主| 发表于 2013-1-17 19:22:16 | 显示全部楼层
malsvent 发表于 2013-1-17 16:35
用M8L的USBasp写LGT的时遇到的状况

无论怎么写入验证都错误

最近一两天会发布m8芯片的三合一版本

不过你的测试我也很不解 我还一次没尝试过5v电平接到lgt芯片上 看坛友的测试好像5v接到lgt上也没问题
我在昨天测试三合一半版本时使用的还是3.3v 没有问题

出0入0汤圆

发表于 2013-2-13 12:13:14 | 显示全部楼层
goodcode 发表于 2013-1-17 19:22
最近一两天会发布m8芯片的三合一版本

不过你的测试我也很不解 我还一次没尝试过5v电平接到lgt芯片上 看 ...

这个问题就是M8 IO是5V的原因。而且设置的是推挽而不是开漏模式。导致的这个问题。
直接接5V确实会导致LGT失去响应。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-27 02:06

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

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