xwkm 发表于 2013-1-3 02:42:01

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

本帖最后由 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变翠绿了。

zgxcom123 发表于 2013-1-3 09:28:21

支持一下!很不错!!!

bigfatfish 发表于 2013-1-3 09:44:38

收藏备用。
谢谢楼主

xwkm 发表于 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 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      = 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   xa9a8",
                        " a7a6a5a4   a3a2a1a0",
                        "o   o   o   o      o   o   o   o";

        write         = "1   1   0   0      0   0   0   0",
                        "0   0   x   x      x   xa9a8",
                        " a7a6a5a4   a3a2a1a0",
                        "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   0a1a0",
                          "i   i   i   i      i   i   i   i";

        writepage        = "1   1   0   0      0   0   1   0",
                          "0   0   x   x      x   xa9a8",
                          " a7a6a5a4   a3a2   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 a10a9a8",
                        " a7a6a5a4   a3a2a1a0",
                        "o   o   o   o      o   o   o   o";

      read_hi         = "0   0   1   0      1   0   0   0",
                        "0   0 a13 a12    a11 a10a9a8",
                        " a7a6a5a4   a3a2a1a0",
                        "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   xa5a4   a3a2a1a0",
                        "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   xa5a4   a3a2a1a0",
                        "i   i   i   i      i   i   i   i";

      writepage       = "0   1   0   0      1   1   0   0",
                        "0   0 a13 a12    a11 a10a9a8",
                        " a7a6   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 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";
      min_write_delay = 9000;
      max_write_delay = 9000;
      ;

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

    memory "efuse"
      size            = 1;

      read            = "0 1 0 10 0 0 00 0 0 01 0 0 0",
                        "x x x xx x x xo o o oo o o o";

      write         = "1 0 1 01 1 0 01 0 1 00 1 0 0",
                        "x x x xx x x x1 1 1 11 i i i";
      min_write_delay = 9000;
      max_write_delay = 9000;
      ;

    memory "signature"
      size            = 3;
      read            = "0011   0000   xxxx   xxxx",
                        "xxxx   xx a1 a0   oooo   oooo";
      ;

    memory "calibration"
      size            = 1;

      read            = "0 0 1 11 0 0 0   0 0 0 xx x x x",
                        "0 0 0 00 0 0 0   o o o oo o o o";
      ;
;

然后就可以使用-p l8a了

xwkm 发表于 2013-1-3 13:55:44

顺带提醒一下。SWD和SWC上的上拉电阻至少要更换成4.7k的。否则极易被干扰,导致程序无法写入。不过这次我硬上用0805电阻焊到了0603焊盘上……

xwkm 发表于 2013-1-3 15:14:51

avrdude对LGT mkII的支持相当不好,建议使用avarice来高。虽然说写eeprom不太方便。
avarice --program--erase --file kmlamp.elf --part atmega164p --mkII -j usb

freeboyxd 发表于 2013-1-3 23:11:48

标记一下,备用

LICHANGAN726 发表于 2013-3-5 23:10:15

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

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

xwkm 发表于 2013-3-6 16:02:37

LICHANGAN726 发表于 2013-3-5 23:10 static/image/common/back.gif
你好,请问“首先就是在阿莫这里买一块仿真器,或者自己拿新唐的片子写一个(那个SWD时钟看得头大没分析出来 ...

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

sunliezhi 发表于 2014-2-9 13:58:47

如此好贴,今天才看到{:lol:}
多谢!!

lxy818 发表于 2014-2-9 17:10:14

楼主强人啊,唯鲁有才。
页: [1]
查看完整版本: 个性LGT仿真器打造 & 在Ubuntu下使用攻略