搜索
bottom↓
回复: 35

基于51内核的LGTISP

[复制链接]

出0入0汤圆

发表于 2012-8-19 03:16:25 | 显示全部楼层 |阅读模式


上位机, 固件, 电路图


蛋疼的东西

解决鸡生蛋蛋疼鸡的问题.

只完成了
功能:
1.FLASH 读/写
2.熔丝 读

其它功能也不想完成了本来没啥用的玩意, 随便找个51开发板临时搭建一下用用而已.
电平转换电路网上找的实际测试是能用的, MISO还是有倒灌电流的, 不过很小. 没测试直接连接会不会烧掉lgtmcu
附件里的固件是基于stc89c52的, 使用6T模式. 明天在发个普通的12T的

3:07:45 进入编程模式成功...
3:07:45 读取Flash地址 0000 完成..
...
3:07:53 读取Flash地址 0FE0 完成...
3:07:53 全部Flash读取完成.

读8kflash8秒左右

本帖子中包含更多资源

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

x

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-8-19 03:59:31 | 显示全部楼层
太牛屄了!!!.........

出0入0汤圆

发表于 2012-8-19 06:17:20 | 显示全部楼层
有源码就更好了

出0入0汤圆

发表于 2012-8-19 06:59:45 来自手机 | 显示全部楼层
牛b,帮顶

出0入0汤圆

发表于 2012-8-19 07:16:10 | 显示全部楼层
牛X,你怎么知道ISP的协议的

出0入0汤圆

发表于 2012-8-19 09:20:51 | 显示全部楼层
楼主挺牛的
头像被屏蔽

出0入0汤圆

发表于 2012-8-19 11:19:30 | 显示全部楼层
不错 帮顶

出0入0汤圆

发表于 2012-8-19 11:24:20 来自手机 | 显示全部楼层
这个好,楼主继续努力。

出0入0汤圆

发表于 2012-8-19 11:47:18 来自手机 | 显示全部楼层
好 这个决对支持

出0入0汤圆

 楼主| 发表于 2012-8-19 12:21:45 | 显示全部楼层
本帖最后由 goodcode 于 2012-8-19 16:04 编辑



LGT8XISP(51x) 1.01 Build 120819
16:02:21 功能:
16:02:21 1.FLASH 读/写
16:02:21 2.EEPROM 读/写
16:02:21 3.熔丝 读/写

12T单片机用57600波特率 6T单片机用115200波特率

附件包含上位机, 下位机6t,12t两个版本固件

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-8-19 19:10:29 | 显示全部楼层
值得顶一下。

出0入0汤圆

发表于 2012-8-19 23:59:12 | 显示全部楼层
一直关注isp的diy版,终于有高手出来了,顶起!

出0入0汤圆

发表于 2012-8-20 00:25:24 | 显示全部楼层


这下可以考虑买几片lgt耍耍了,,,,学avr吃独食,可不是个好路子,,,

出0入0汤圆

发表于 2012-8-20 01:43:20 | 显示全部楼层
怎么两个附件都无法下载

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-8-26 06:01:00 | 显示全部楼层
本帖最后由 xwkm 于 2012-8-26 07:18 编辑

求LZ联系方式,我Q 562467068。如果能P一份协议就好了……我在linux下面,估计只能用并口搞了……

出0入0汤圆

发表于 2012-8-27 09:46:46 | 显示全部楼层
太牛了,这下不用买专门的ISP了

出0入0汤圆

发表于 2012-8-27 13:20:55 | 显示全部楼层
1T 的STC 工具可以烧录12T的固件,ISP连接正常,报无法进编程模式。用ATMEL 4051 烧录12T的固件,串口ISP无反应。LZ可知是什么原因阿?

出0入0汤圆

 楼主| 发表于 2012-8-27 15:11:03 | 显示全部楼层
stc 1t 单片机可能是不行, 因为用的软spi 1t的速度可能太快, 有逻辑分析仪可以看看spi输出的速率是多少超过1600000bps 就不能进入编程模式了

至于ATMEL4051 不知道你看我的电路图和4051的数据手册了没有
1.没有P0口, 这个我重新改IO定义倒是没问题,
2.ram只有128字节, 程序需要至少256字节的芯片支持 这个我尝试过 没有办法优化到128字节ram的芯片上

出0入0汤圆

发表于 2012-8-27 16:59:34 | 显示全部楼层
谢LZ阿, 今天拿了片89c52rc,将3.3v的npn/pnp 的驱动部分省略, 直接将LGT的引脚和 P0 接,开始担心LGT 会炸飞, 还带了钢盔,, ,测试LZ的 上位机 工作 正常, 读写fuse/eeprom/flash 都可以, 烧了个流水灯 也正常。 好像 LGT在5v 下 电平 也可接受的

用4051,我反汇编了LZ的HEX文件, 将P0 口 改了P1 口的,主要问题是 4051 串口ISP无反应。

托LZ的福, 总算有LGT的ISP用了。

出0入0汤圆

发表于 2012-8-27 17:03:35 | 显示全部楼层
哦,4051的128ram是小了,可惜STC11F04E 又太快了, 89c52rc 又太大了。 能用就好。

出0入0汤圆

 楼主| 发表于 2012-8-27 19:35:21 | 显示全部楼层
它只是个桥而已

出0入0汤圆

 楼主| 发表于 2012-8-27 19:44:34 | 显示全部楼层
halloocc 发表于 2012-8-27 16:59
谢LZ阿, 今天拿了片89c52rc,将3.3v的npn/pnp 的驱动部分省略, 直接将LGT的引脚和 P0 接,开始担心LGT 会 ...

虽然有直接用5v连接的冲动, 但是我始终没有测试, 因为我那芯片是焊接在洞洞板上 要是烧了重新焊接会崩溃

4051的主要问题是在ram 程序用了idata如果非要降低ram的使用连着上位机都要修改 是相当麻烦

STC11F04E 这个既然你能找到端口设定相信你也找到了ispTransmit_sw'

                            509 ;Allocation info for local variables in function 'ispTransmit_sw'
                            510 ;------------------------------------------------------------
                            511 ;out_byte                  Allocated to registers r7
                            512 ;i                         Allocated to registers r6
                            513 ;------------------------------------------------------------
                            514 ;        isp.c:218: uchar ispTransmit_sw(uchar out_byte)
                            515 ;        -----------------------------------------
                            516 ;         function ispTransmit_sw
                            517 ;        -----------------------------------------
   0047                     518 _ispTransmit_sw:
   0047 AF 82               519         mov        r7,dpl
                            520 ;        isp.c:221: do
   0049 7E 08               521         mov        r6,#0x08
   004B                     522 00103$:
                            523 ;        isp.c:223: MOSI = out_byte & 0x80;
   004B EF                  524         mov        a,r7
   004C 33                  525         rlc        a
   004D 92*00               526         mov  _ispTransmit_sw_sloc0_1_0,c
   004F 92 80               527         mov        _P0_0,c
                            528 ;        isp.c:224: out_byte <<= 1;
   0051 EF                  529         mov        a,r7
   0052 2F                  530         add        a,r7
   0053 FF                  531         mov        r7,a
                            532 ;        isp.c:225: MCLK = 1;
   0054 D2 82               533         setb        _P0_2
                            534 ;        isp.c:227: if(MISO)
   0056 30 83 01            535         jnb        _P0_3,00102$
                            536 ;        isp.c:228: out_byte += 1;
   0059 0F                  537         inc        r7
   005A                     538 00102$:
                            539 ;        isp.c:229: MCLK = 0;
   005A C2 82               540         clr        _P0_2
                            541 ;        isp.c:231: while(--i);
   005C DE ED               542         djnz        r6,00103$
                            543 ;        isp.c:232: return out_byte;
   005E 8F 82               544         mov        dpl,r7
   0060 22                  545         ret

原型

uchar ispTransmit_sw(uchar out_byte)
{
    uchar i=8;
    do
    {
        MOSI = out_byte & 0x80;
        out_byte <<= 1;
        MCLK = 1;
        /* __asm nop __endasm; */ /* for slow peripherals */
        if(MISO)
            out_byte += 1;
        MCLK = 0;
    }
    while(--i);
    return out_byte;
}

如果io定义没问题, 插nop就是了

真希望lgt手册上写兼容5v的电平

出0入0汤圆

发表于 2012-8-27 19:58:36 | 显示全部楼层
楼主看看新唐的N79E8132是否合用,SOP16封装,内部22.1184M时钟,工作电压2.4~5.5V,
不知道为啥不能上传文件

出0入0汤圆

发表于 2012-8-28 07:24:55 | 显示全部楼层
goodcode 发表于 2012-8-27 19:44
虽然有直接用5v连接的冲动, 但是我始终没有测试, 因为我那芯片是焊接在洞洞板上 要是烧了重新焊接会崩溃
...

你的SPI函数写的太慢了。可以先把ACC的8个位拉出来。然后依次从高到低发送。并且拉出B的8个位来,从高到低接收。

出0入0汤圆

发表于 2012-8-28 07:31:52 | 显示全部楼层
本帖最后由 xwkm 于 2012-8-28 07:36 编辑

我早就反汇编了你的玩意。

找到了SPI的发送。然后顺带找到了命令发送以及串口计数:

cjne        R6, #5Ah, label74 这个是检测6单元是否是0x5A,如果是那么就正确。
猜想r6 给分配到result上去了。push r6是因为spi要用。
下面的貌似是给芯片发送ENABLE

你的串口我挂上了监听看,4个byte一条命令,每条命令0x5A开头

串口初始化:

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-8-28 07:33:44 | 显示全部楼层
那个var1是counter,计数串口来的,主程序一直检测,大于三就CLR,继续执行,可是现在基本上找不出那一段是写熔丝和写数据的……读出的可能已经找到了,写入的还在找,

出0入0汤圆

发表于 2012-8-28 07:38:22 | 显示全部楼层
P0去掉上拉电阻完全可以直接链接LGT,只要保证LGT有上拉,或者P0上拉到3.3V

出0入0汤圆

发表于 2012-8-28 09:14:22 | 显示全部楼层
very good !!!

出0入0汤圆

 楼主| 发表于 2012-8-28 14:50:22 | 显示全部楼层
我那个51开发板p0已经上拉断不开, 理论上使用p0开漏加上拉也是可以的 没测试过
这个51版本没考虑过优化 spi函数只是网上拷贝 编译器sdcc

这种小尺寸的东西发布二进制跟发布源码本来区别就不大, 唯一的区别就是前者你要多付出一些才能看懂而已.

为什么不发布协议源代码也许你全部逆向完会懂

单独逆向下位机不容易理解, 建议你配合上位机通讯协议来逆向, 先分析上位机的协议格式和命令id, 下位机找到命令处理的分支一切就简单了.



出0入0汤圆

发表于 2012-8-28 17:42:18 | 显示全部楼层
goodcode 发表于 2012-8-28 14:50
我那个51开发板p0已经上拉断不开, 理论上使用p0开漏加上拉也是可以的 没测试过
这个51版本没考虑过优化 spi ...


我也是用sdcc的……
至于我还要费劲跟你的程序。LGT手上也没有。也不方便调试,你还是开了源吧……
P0上拉直接把电阻焊下来/做个开关就行了。
逆向用MCU8051IDE跟踪程序还顺便开虚拟串实在是太麻烦了……

出0入0汤圆

发表于 2012-8-28 17:51:31 | 显示全部楼层
楼主,再补上一个Bootloader就完整了。

出0入0汤圆

 楼主| 发表于 2012-8-28 22:16:43 | 显示全部楼层
xwkm 发表于 2012-8-28 17:42
我也是用sdcc的……
至于我还要费劲跟你的程序。LGT手上也没有。也不方便调试,你还是开了源吧……
P0上 ...

逆向用ida

出0入0汤圆

 楼主| 发表于 2012-8-28 22:20:45 | 显示全部楼层
okplay 发表于 2012-8-28 17:51
楼主,再补上一个Bootloader就完整了。

这个我有个蛋疼的想法没实现过只是猜的
在flash空间尾端放置bootloader代码, bootloader在写入flash修改写入代码的复位中断到bootloader区段, 还要找个地方放flash写入代码的原复位中断.

出0入0汤圆

发表于 2012-8-29 10:07:55 | 显示全部楼层
goodcode 发表于 2012-8-28 22:16
逆向用ida

在linux下用mcu8051ide

出0入0汤圆

发表于 2012-12-2 15:53:55 来自手机 | 显示全部楼层
小手一抖,经验拿走

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-25 11:02

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

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