搜索
bottom↓
回复: 10

个性LGT仿真器打造 & 在Ubuntu下使用攻略

[复制链接]

出0入0汤圆

发表于 2013-1-3 02:42:01 | 显示全部楼层 |阅读模式
本帖最后由 xwkm 于 2013-1-3 02:44 编辑

首先就是在阿莫这里买一块仿真器,或者自己拿新唐的片子写一个(那个SWD时钟看得头大没分析出来协议),把那个U盘的bootloader写入就行。
然后用镊子捅仿真器的J4。

按住镊子不要动,然后插上仿真器看到

后拿下镊子到mcugreen.com下载最新的SWDICE mkII studio 4版本。别搞错了。搞错了avrdude和avarice不支持!
把bin文件复制进去。点弹出,拔下USB线再插上就搞定了固件了。
顺带说下上次我申请的仿真器有一处小瑕疵,看R20给焊反了……


安装驱动程序:
打开终端,输入:
sudo gedit /etc/udev/rules.d/60-avrmkii.rules
在打开的窗口中复制下面内容粘贴然后保存
SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"

# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2107", MODE="660", GROUP="dialout"

LABEL="avrisp_end"

接着执行
sudo restart udevd
然后后面就简单了。avrdude该怎么用怎么用,不过注意一下,因为LGT的仿真器报告的ID是164P的,所以avrdude也必须只能用164P的ID.
而且仿真器报告的熔丝avrdude认为不是安全的,所以需要-F来强制写入。
比如说这个命令就是可行的:
avrdude -p m164p -c jtag2 -P usb -F -e -U flash:w:XXXX.hex
另外就是avarice同样也是可以使用的,输入如下命令:
avarice --program  --file xxxx.elf --part atmega164p --mkII -j usb localhost:4242
接着可以用gdb调,教程一搜一大把。我就不讲了。
现在真心希望官方把ISP时序开源了。毕竟连着这个“mkII”总是觉得怪怪的……
顺带换了LED:RUN、POWER变翠绿了。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-1-3 09:28:21 来自手机 | 显示全部楼层
支持一下!很不错!!!

出0入0汤圆

发表于 2013-1-3 09:44:38 | 显示全部楼层
收藏备用。
谢谢楼主

出0入0汤圆

 楼主| 发表于 2013-1-3 11:58:18 | 显示全部楼层
顺带说下。如果嫌avrdude没有lgt8f08a太难看的话。打开/etc/avrdude.conf。加入:

#------------------------------------------------------------
# LGT8F08A
#------------------------------------------------------------

# close to ATmega16

part
    id               = "l8a";
    desc             = "LGT8F08A";
    has_jtag         = yes;
    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
    avr910_devcode   = 0x74;
    signature        = 0x1e 0x1e 0x1e;
    pagel            = 0xd7;
    bs2              = 0xa0;
    chip_erase_delay = 9000;
    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        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    idr                 = 0x31;
    spmcr               = 0x57;
    allowfullpagebitstream = no;

    memory "eeprom"
        paged           = no; /* leave this "no" */
        page_size       = 4;  /* for parallel programming */
        size            = 512;
        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  a9  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  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        loadpage_lo        = "  1   1   0   0      0   0   0   1",
                          "  0   0   0   0      0   0   0   0",
                          "  0   0   0   0      0   0  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage        = "  1   1   0   0      0   0   1   0",
                          "  0   0   x   x      x   x  a9  a8",
                          " a7  a6  a5  a4     a3  a2   0   0",
                          "  x   x   x   x      x   x   x   x";

        mode                = 0x41;
        delay                = 10;
        blocksize        = 128;
        readsize        = 256;
      ;

    memory "flash"
        paged           = yes;
        size            = 8192;
        page_size       = 128;
        num_pages       = 64;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read_lo         = "  0   0   1   0      0   0   0   0",
                          "  0   0 a13 a12    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 a13 a12    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   x   x      x   x   x   x",
                          "  x   x  a5  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   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6   x   x      x   x   x   x",
                          "  x   x   x   x      x   x   x   x";

        mode                = 0x21;
        delay                = 8;
        blocksize        = 128;
        readsize        = 256;
      ;


    memory "lfuse"
        size            = 1;
        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";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "hfuse"
        size            = 1;
        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";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "efuse"
        size            = 1;

        read            = "0 1 0 1  0 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  0 1 0 0",
                          "x x x x  x x x x  1 1 1 1  1 i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    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";
      ;

    memory "calibration"
        size            = 1;

        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
        ;
  ;

然后就可以使用-p l8a了

出0入0汤圆

 楼主| 发表于 2013-1-3 13:55:44 | 显示全部楼层
顺带提醒一下。SWD和SWC上的上拉电阻至少要更换成4.7k的。否则极易被干扰,导致程序无法写入。不过这次我硬上用0805电阻焊到了0603焊盘上……

出0入0汤圆

 楼主| 发表于 2013-1-3 15:14:51 | 显示全部楼层
avrdude对LGT mkII的支持相当不好,建议使用avarice来高。虽然说写eeprom不太方便。
avarice --program  --erase --file kmlamp.elf --part atmega164p --mkII -j usb

出0入0汤圆

发表于 2013-1-3 23:11:48 | 显示全部楼层
标记一下,备用

出0入0汤圆

发表于 2013-3-5 23:10:15 | 显示全部楼层
你好,请问“首先就是在阿莫这里买一块仿真器,或者自己拿新唐的片子写一个(那个SWD时钟看得头大没分析出来协议),把那个U盘的bootloader写入就行。
然后用镊子捅仿真器的J4。”

U盘的bootloader的固件哪里能找到?

出0入0汤圆

 楼主| 发表于 2013-3-6 16:02:37 | 显示全部楼层
LICHANGAN726 发表于 2013-3-5 23:10
你好,请问“首先就是在阿莫这里买一块仿真器,或者自己拿新唐的片子写一个(那个SWD时钟看得头大没分析出来 ...

在LGT分坛里搜索“仿真器 升级”即可。有boot的固件。如果你直接买仿真器的话就不用bootloader

出0入4汤圆

发表于 2014-2-9 13:58:47 | 显示全部楼层
如此好贴,今天才看到
多谢!!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-5 23:24

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

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