搜索
bottom↓
回复: 25

逆向解读编程协议,有兴趣的可以参与!

[复制链接]

出0入0汤圆

发表于 2012-8-29 14:57:55 | 显示全部楼层 |阅读模式
本帖最后由 chengzepeng 于 2012-8-29 15:02 编辑

先上传附件!逻辑文件由那个便宜的USB逻辑分析仪读出,版本:Logic 1.1.15
直接在设置项第一个或者双击文件打开!无安装软件的可以去:http://www.saleae.com/downloads 下载!

压缩包内为逻辑文件,其中写里面包含读逻辑,写数据为512个0x33,

写0-F字符

拉低复位脚一段时间后开始发SPI,

MOSI: E0 5A A5 AA 00        // 进入编程模式
MISO:  00 00 5A 5A 5A

MOSI: E5 53 35 5E 00        // 测试或连接什么的
MISO:  5A 5A 5A 5A 5A       // 返回空闲无意义之类

MOSI: B8 3F 07 00 00       // 估计是读芯片识别ID
MISO:  5A 5A 5A 9A 10

MOSI: BC 3F 07 00 00       // 更新或者返回什么的
MISO:  10 10 10 55 AA

MOSI: A0 00 00 00 00      // 如上
MISO:  AA AA AA 55 AA

MOSI: 93 00 00 00 00     // 未知
MISO:  AA AA AA 55 AA

MOSI: 93 40 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 91 40 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 91 00 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 80 00 00 00 00      //估计是擦除指令
MISO:  AA AA AA 55 AA

后面的是写数据,90开头+地址+两个数据,然后换成98再写一次,最后还换回90再写一次,然后加地址也这样循环,直到写完8个结束进入下一次写,
最后写完全部后释放复位脚隔一段时间再拉低进入读数据模式,

读模式很好理解:

MOSI: E0 5A A5 AA 00        // 进入编程模式
MISO:  00 00 5A 5A 5A

MOSI: B8 00 00 00 00        // 读FLASH
MISO:  5A 5A 5A FF FF

MOSI: BC 00 00 00 00        // 更新寄存器
MISO:  FF FF FF 31 30

。。。。。。。。直到读完8个字节后结束

MOSI: A0 00 00 00 00        // 结束
MISO:  36 36 36 37 36

接着下一个循环读8个字节!

读完后退出释放复位脚!

发送数据结构:第1个数据为指令,第2和第3个是地址,第4和第5个为数据
返回数据结构:第1和第3个都是上次返回的最后那个数据,第4和第5个为本次读回的数据!

本帖子中包含更多资源

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

x

出0入4汤圆

发表于 2012-8-29 15:01:07 | 显示全部楼层
楼主加油,逆向工程是一项很辛苦但也比较有趣的工作。

出0入0汤圆

发表于 2012-8-29 15:04:02 | 显示全部楼层
说实话,都到这份上了厂家真应公布一下协议了.

出0入0汤圆

 楼主| 发表于 2012-8-29 15:11:20 | 显示全部楼层
本帖最后由 chengzepeng 于 2012-8-29 15:14 编辑
sibtck 发表于 2012-8-29 15:04
说实话,都到这份上了厂家真应公布一下协议了.


他如果那么早公布的话就不是国产的了!

出0入0汤圆

发表于 2012-8-29 15:46:43 | 显示全部楼层
谁有看到goodcode公开协议。代码还写的那么猥琐。干脆就不去逆向了……

出0入0汤圆

 楼主| 发表于 2012-8-29 17:24:28 | 显示全部楼层
刚才测试SPI进行连接发现只接受1M以下时钟的SPI通信!
看来想快也快不了!

出0入0汤圆

发表于 2012-8-29 18:11:02 | 显示全部楼层
xwkm 发表于 2012-8-29 15:46
谁有看到goodcode公开协议。代码还写的那么猥琐。干脆就不去逆向了……

我代码哪里写的猥琐了? 自己不愿意付出就等现成的还那么多讲究?

出0入0汤圆

发表于 2012-8-29 18:48:05 | 显示全部楼层
本帖最后由 xwkm 于 2012-8-29 18:59 编辑
goodcode 发表于 2012-8-29 18:11
我代码哪里写的猥琐了? 自己不愿意付出就等现成的还那么多讲究?


我开始是想分析你的下手。后面发现研究这个价值不大,加上代码反汇编出来乱七八糟。
所以我和楼主一样就开始研究LGTISP的时序。
你的方面我早就放弃了。继续在你的代码上深入是浪费时间。
你不要认为我只拿现成的,你去看看我的博客。再说出你这些话,我发现我决定反汇编你的代码就是一个极大的错误。

出0入0汤圆

发表于 2012-8-29 19:01:37 | 显示全部楼层
chengzepeng 发表于 2012-8-29 17:24
刚才测试SPI进行连接发现只接受1M以下时钟的SPI通信!
看来想快也快不了! ...

51也就那个速度了:(12M)
                SCLK=0;1T
                MOSI=A_7;//低电平时输出一位1T
                SCLK=1;//1T 1uS,传输要3uS
                B_7=MISO;//高电平时接收一位
                SCLK=0;
                MOSI=A_6;
                SCLK=1;
                B_6=MISO;
                SCLK=0;
                MOSI=A_5;
                SCLK=1;
                B_5=MISO;
                SCLK=0;
                MOSI=A_4;
                SCLK=1;
                B_4=MISO;
                SCLK=0;
                MOSI=A_3;
                SCLK=1;
                B_3=MISO;
                SCLK=0;
                MOSI=A_2;
                SCLK=1;
                B_2=MISO;
                SCLK=0;
                MOSI=A_1;
                SCLK=1;
                B_1=MISO;
                SCLK=0;
                MOSI=A_0;
                SCLK=1;
                B_0=MISO;
                SCLK=0;
我这个程序传输一个bit大约需要3uS,基本上也就是0.3MHz最高的水平……

出0入0汤圆

发表于 2012-8-29 19:11:18 | 显示全部楼层
sdcc生成的汇编代码就那样子, 51的汇编代码本来就不好看. 跟我代码猥琐不猥琐有鸟关系.
我回复里已经说了最好直接看官方的.


IDA 6.1工程文件
没IDA 6.1 LGT8F08A_USBASP_V2_20120806.asm 为IDA工程导出文件

时序我没怎么看 基本直接asm to c 完成的 工程内的注释, 函数名仅为个人理解 可能是完全错误的理解



既然你不是拿现成的, 这东西跟源代码已经没多大区别. 而且最重要的按你的话这是官方原装的.

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-8-29 19:17:29 | 显示全部楼层
SPI的速度 我猜芯片是工作在16m二分频 理论上应该是2m 实际测试超过1.6m就不能进入编程模式了 测试发现在isp模式可能会读取rc校准值 也就是说spi的速度在临界的状态 可能因为rc的校准值进入不了编程模式

写入数据是比较繁琐的 我也不知道那些命令的目的是干什么的 可能是为了稳定性的考虑
ROM:09AE                     ; 写flash
ROM:09AE                     ; r20(低),r21(高) 目标地址
ROM:09AE                     ; r18(低),r19(高) 缓存地址
ROM:09AE                     ; r22(低),r23(高) 写入字节数
ROM:09AE                     ; r24 flash类型 1:eeprom
ROM:09AE                     ; 一次命令的最大长度小于128 否则出现错误
ROM:09AE
ROM:09AE                     IspWriteFlash:                          ; CODE XREF: sub_A87+17p
ROM:09AE                                                             ; sub_A87+21p ...
ROM:09AE 922F                                push    r2
ROM:09AF 923F                                push    r3
ROM:09B0 924F                                push    r4
ROM:09B1 925F                                push    r5
ROM:09B2 926F                                push    r6
ROM:09B3 927F                                push    r7
ROM:09B4 928F                                push    r8
ROM:09B5 929F                                push    r9
ROM:09B6 92AF                                push    r10
ROM:09B7 92BF                                push    r11
ROM:09B8 92CF                                push    r12
ROM:09B9 92DF                                push    r13
ROM:09BA 92EF                                push    r14
ROM:09BB 92FF                                push    r15
ROM:09BC 930F                                push    r16
ROM:09BD 931F                                push    r17
ROM:09BE 93DF                                push    r29
ROM:09BF 93CF                                push    r28
ROM:09C0 D000                                rcall   loc_9C1
ROM:09C1
ROM:09C1                     loc_9C1:
ROM:09C1 920F                                push    r0
ROM:09C2 B7CD                                in      r28, SPL        ; 保存sp到 r28,r29
ROM:09C3 B7DE                                in      r29, SPH
ROM:09C4 017B                                movw    r14, r22        ; 写入字节数->r14,r15
ROM:09C5 013A                                movw    r6, r20         ; 目标地址->r6,r7
ROM:09C6 2F12                                mov     r17, r18        ; 缓存地址(低)->r17
ROM:09C7 2F03                                mov     r16, r19        ; 缓存地址(高)->r18
ROM:09C8 2E58                                mov     r5, r24         ; 取flash类型到r5
ROM:09C9 9452                                swap    r5
ROM:09CA 0C55                                lsl     r5
ROM:09CB EE50                                ldi     r21, -0x20 ; ' ; 0xe0
ROM:09CC 2255                                and     r5, r21         ; r5 flash命令
ROM:09CD E021                                ldi     r18, 1
ROM:09CE 1652                                cp      r5, r18         ; r5永远不可能为1?
ROM:09CF F411                                brne    loc_9D2         ; 如果 r5 <> 1跳转
ROM:09D0 940E 090C                           call    ispBeginProgramming ; 操作开始?, 无返回值 MOSI 0xE5 0x53 0x35 0x5E 0x00
ROM:09D2
ROM:09D2                     loc_9D2:                                ; CODE XREF: IspWriteFlash+21j
ROM:09D2 2D85                                mov     r24, r5
ROM:09D3 6980                                ori     r24, -0x70      ; 90
ROM:09D4 01B3                                movw    r22, r6         ; 目标地址->r22,r23
ROM:09D5 E040                                ldi     r20, 0
ROM:09D6 E050                                ldi     r21, 0
ROM:09D7 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:09D7                                                             ; r22(低),r23(高) 目标地址
ROM:09D7                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:09D7                                                             ;
ROM:09D7                                                             ; 无返回值
ROM:09D9 ED40                                ldi     r20, -0x30 ; ' ; D0
ROM:09DA 2E44                                mov     r4, r20
ROM:09DB 2845                                or      r4, r5          ; r5 flash命令
ROM:09DC 2D84                                mov     r24, r4         ; r4 与 d0 或的命令
ROM:09DD 01B3                                movw    r22, r6         ; 目标地址->r22,r23
ROM:09DE E040                                ldi     r20, 0
ROM:09DF E050                                ldi     r21, 0
ROM:09E0 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:09E0                                                             ; r22(低),r23(高) 目标地址
ROM:09E0                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:09E0                                                             ;
ROM:09E0                                                             ; 无返回值
ROM:09E2 0117                                movw    r2, r14         ; 写入字节数->r2,r3
ROM:09E3 9436                                lsr     r3
ROM:09E4 9427                                ror     r2              ; 写入字节数/ 2 计算需要执行的flash读取命令次数
ROM:09E5 2F81                                mov     r24, r17        ; 缓存地址(低)->r24
ROM:09E6 2F90                                mov     r25, r16        ; 缓存地址(高)->r25
ROM:09E7 019C                                movw    r18, r24        ; 缓存地址->r18,r19
ROM:09E8 0159                                movw    r10, r18        ; 缓存地址->r10,r11
ROM:09E9 0143                                movw    r8, r6          ; 目标地址->r8,r9
ROM:09EA 821B                                std     Y+3, r1
ROM:09EB 821A                                std     Y+2, r1
ROM:09EC 24CC                                clr     r12
ROM:09ED 24DD                                clr     r13
ROM:09EE 2D35                                mov     r19, r5         ; 取flash命令
ROM:09EF 6D38                                ori     r19, -0x28      ; 0xd8
ROM:09F0 8339                                std     Y+1, r19
ROM:09F1 C023                                rjmp    loc_A15
ROM:09F2                     ; ---------------------------------------------------------------------------
ROM:09F2
ROM:09F2                     loc_9F2:                                ; CODE XREF: IspWriteFlash+6Cj
ROM:09F2 01F5                                movw    r30, r10        ; 缓存地址->R30,R31 Z寄存器
ROM:09F3 80F1                                ldd     r15, Z+1        ; 装载数据高字节到r15
ROM:09F4 24EE                                clr     r14             ; 清零r14
ROM:09F5 8180                                ld      r24, Z          ; 装载数据低字节到r24
ROM:09F6 2F28                                mov     r18, r24        ; 数据低8位->r18
ROM:09F7 E030                                ldi     r19, 0
ROM:09F8 292E                                or      r18, r14        ; r18数据低8位 r19数据高8位
ROM:09F9 293F                                or      r19, r15
ROM:09FA 833B                                std     Y+3, r19        ; 存储写入数据字到sram中
ROM:09FB 832A                                std     Y+2, r18
ROM:09FC 2D84                                mov     r24, r4         ; cmd1 0xD0 | flashType
ROM:09FD 01B8                                movw    r22, r16        ; 目标地址
ROM:09FE 01A9                                movw    r20, r18        ; 写入数据字
ROM:09FF 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:09FF                                                             ; r22(低),r23(高) 目标地址
ROM:09FF                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:09FF                                                             ;
ROM:09FF                                                             ; 无返回值
ROM:0A01 8189                                ldd     r24, Y+1        ; cmd2 0xD8 | flashType
ROM:0A02 01B8                                movw    r22, r16        ; 取目标地址
ROM:0A03 814A                                ldd     r20, Y+2
ROM:0A04 815B                                ldd     r21, Y+3
ROM:0A05 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:0A05                                                             ; r22(低),r23(高) 目标地址
ROM:0A05                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:0A05                                                             ;
ROM:0A05                                                             ; 无返回值
ROM:0A07 2D84                                mov     r24, r4         ; cmd1 0xD0 | flashType
ROM:0A08 01B8                                movw    r22, r16        ; 取目标地址
ROM:0A09 814A                                ldd     r20, Y+2
ROM:0A0A 815B                                ldd     r21, Y+3
ROM:0A0B 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:0A0B                                                             ; r22(低),r23(高) 目标地址
ROM:0A0B                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:0A0B                                                             ;
ROM:0A0B                                                             ; 无返回值
ROM:0A0D 9408                                sec
ROM:0A0E 1CC1                                adc     r12, r1
ROM:0A0F 1CD1                                adc     r13, r1
ROM:0A10 E082                                ldi     r24, 2
ROM:0A11 E090                                ldi     r25, 0
ROM:0A12 0EA8                                add     r10, r24
ROM:0A13 1EB9                                adc     r11, r25
ROM:0A14 0148                                movw    r8, r16         ; 目标地址->r8, r9
ROM:0A15
ROM:0A15                     loc_A15:                                ; CODE XREF: IspWriteFlash+43j
ROM:0A15 0186                                movw    r16, r12
ROM:0A16 0D06                                add     r16, r6
ROM:0A17 1D17                                adc     r17, r7
ROM:0A18 14C2                                cp      r12, r2
ROM:0A19 04D3                                cpc     r13, r3
ROM:0A1A F2B8                                brcs    loc_9F2         ; 开始写字(word)
ROM:0A1B 2D85                                mov     r24, r5         ; 取flash命令
ROM:0A1C 6580                                ori     r24, 0x50
ROM:0A1D 01B4                                movw    r22, r8
ROM:0A1E 814A                                ldd     r20, Y+2
ROM:0A1F 815B                                ldd     r21, Y+3
ROM:0A20 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:0A20                                                             ; r22(低),r23(高) 目标地址
ROM:0A20                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:0A20                                                             ;
ROM:0A20                                                             ; 无返回值
ROM:0A22 2D85                                mov     r24, r5         ; 取flash命令
ROM:0A23 6180                                ori     r24, 0x10
ROM:0A24 01B4                                movw    r22, r8
ROM:0A25 814A                                ldd     r20, Y+2
ROM:0A26 815B                                ldd     r21, Y+3
ROM:0A27 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:0A27                                                             ; r22(低),r23(高) 目标地址
ROM:0A27                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:0A27                                                             ;
ROM:0A27                                                             ; 无返回值
ROM:0A29 E080                                ldi     r24, 0
ROM:0A2A 01B4                                movw    r22, r8
ROM:0A2B 814A                                ldd     r20, Y+2
ROM:0A2C 815B                                ldd     r21, Y+3
ROM:0A2D 940E 08AB                           call    ispWriteFlashCmd ; r24=命令
ROM:0A2D                                                             ; r22(低),r23(高) 目标地址
ROM:0A2D                                                             ; r20(低),r21(高) 写入数据字(word)
ROM:0A2D                                                             ;
ROM:0A2D                                                             ; 无返回值
ROM:0A2F 900F                                pop     r0
ROM:0A30 900F                                pop     r0
ROM:0A31 900F                                pop     r0
ROM:0A32 91CF                                pop     r28
ROM:0A33 91DF                                pop     r29
ROM:0A34 911F                                pop     r17
ROM:0A35 910F                                pop     r16
ROM:0A36 90FF                                pop     r15
ROM:0A37 90EF                                pop     r14
ROM:0A38 90DF                                pop     r13
ROM:0A39 90CF                                pop     r12
ROM:0A3A 90BF                                pop     r11
ROM:0A3B 90AF                                pop     r10
ROM:0A3C 909F                                pop     r9
ROM:0A3D 908F                                pop     r8
ROM:0A3E 907F                                pop     r7
ROM:0A3F 906F                                pop     r6
ROM:0A40 905F                                pop     r5
ROM:0A41 904F                                pop     r4
ROM:0A42 903F                                pop     r3
ROM:0A43 902F                                pop     r2
ROM:0A44 9508                                ret

出0入0汤圆

发表于 2012-8-30 11:15:12 | 显示全部楼层
我们可以技术支持做专业的编程器的朋友。

出0入0汤圆

 楼主| 发表于 2012-8-30 13:34:10 | 显示全部楼层
logicgreen 发表于 2012-8-30 11:15
我们可以技术支持做专业的编程器的朋友。

连个编程协议都不给还叫支持?

出0入0汤圆

发表于 2012-8-30 14:31:37 | 显示全部楼层
to:logicgreen  能提供协议给我们吗?我来搞个专业的。

出0入0汤圆

发表于 2012-8-30 15:10:00 | 显示全部楼层
我们没有公布LGT8X系列调试和ISP协议并不是因为我们不想公布, 考虑到第一版协议中的某些不可扩展的原因,
我们将在后续的版本中更新相关协议, 而且也将会把ISP接口与调试接口都合并到SWD接口协议上。所以以后将不会支持SPI接口的ISP工具。
考虑以上因素, 才没有急于公布目前的协议。 我们会在下一款产品发布后公布调试和ISP协议。

出0入0汤圆

发表于 2012-8-30 16:17:51 | 显示全部楼层
zhifeng 发表于 2012-8-30 14:31
to:logicgreen  能提供协议给我们吗?我来搞个专业的。

可以联系我。QQ42236699

出0入0汤圆

 楼主| 发表于 2012-8-30 17:10:43 | 显示全部楼层
编程协议总结:


协议结构:

指令位:第1个数据和第2个数据的高两位(7:6),第2个的第5位是FLASH和EEPROM选择,0为FLASH,1为iEEPROM。
地址位:第2个的(4:0),地址为0x00~0x1F,32个,共128分页,总字节32*128*2=8K。
分页位:第3个为分页数。
数据位:第4个为数据低8位,第5个为数据高8位,数据为16位。


指令:


MOSI: E0 5A A5 AA 00        // 进入编程模式
MISO:  00 00 5A 5A 5A

MOSI: E5 53 35 5E 00
MISO:  5A 5A 5A 5A 5A

MOSI: E5 53 35 5E 00       
MISO:  5A 5A 5A 5A 5A

MOSI: B8 3F 07 00 00
MISO:  5A 5A 5A 9A 10

MOSI: BC 3F 07 00 00
MISO:  10 10 10 55 AA

MOSI: A0 00 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 93 00 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 93 40 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 91 40 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 91 00 00 00 00
MISO:  AA AA AA 55 AA

MOSI: 80 00 00 00 00        // 到了这里后就擦除完毕了
MISO:  AA AA AA 55 AA

以下是进入写模式:

MOSI: 90 80 00 00 00        // 进入写模式,在写模式里面必须每次传输都要把地址和页数发送,最后的两个数据可以为0
MISO:  AA AA AA 55 AA

MOSI: 90 C0 00 00 00        // 如上
MISO:  AA AA AA 55 AA

进入该页写:

MOSI:90 C0 00
MOSI:98 C0 00     
MOSI:90 C0 00

每一个地址写上面这三个一次,数据相同,

写完一页后写:

MOSI:90 43 00     // 把第2个的第7位清掉
MOSI:90 03 00     // 继续把第2个的第6位也清掉
MOSI:80 03 00     // 这里应该是退出写了吧。

循环到上面写页处继续下下一页数据!


读数据:

MOSI:B8 00 00     // 写读指令和地址
MOSI:BC 00 00     // 这回在MISO会返回数据

增加地址,

直到读完一页后退出
MOSI:A0 00 00     // 这里应该是退出读了吧。

循环回去更改页数继续读,直到把所有页读完!



出0入0汤圆

 楼主| 发表于 2012-8-30 17:33:04 | 显示全部楼层
1M的SPI下可以把8K数据在1秒钟写和读完!

出0入0汤圆

发表于 2012-8-30 17:57:11 | 显示全部楼层
to:logicgreen 已加你的qq

出0入0汤圆

 楼主| 发表于 2012-8-30 18:06:59 | 显示全部楼层
zhifeng 发表于 2012-8-30 17:57
to:logicgreen 已加你的qq

没有!
好像我被无视了!

基本的命令搞懂了!
详细的就不是很清楚,

弄个编程器还是可以的!

出0入0汤圆

发表于 2012-8-30 22:08:54 | 显示全部楼层
to:chengzepeng 我们也可以交流呀

出0入0汤圆

 楼主| 发表于 2012-8-30 22:35:05 | 显示全部楼层
zhifeng 发表于 2012-8-30 22:08
to:chengzepeng 我们也可以交流呀

联系上了!

出0入0汤圆

发表于 2012-8-31 07:48:12 | 显示全部楼层
EEPROM的编址从0x20-0x3F,一共64个字节一个页。共有7页
FLASH的编值从0x00-0x1F,也是64字节一个页,共有128页,

出0入0汤圆

发表于 2013-1-11 00:13:38 | 显示全部楼层
mark, lgt isp

出0入0汤圆

发表于 2013-3-2 23:03:53 | 显示全部楼层
logicgreen 发表于 2012-8-30 16:17
可以联系我。QQ42236699

其实我期待智峰支持你们的东西  嘿嘿

出0入0汤圆

发表于 2013-3-2 23:04:45 | 显示全部楼层
zhifeng 发表于 2012-8-30 22:08
to:chengzepeng 我们也可以交流呀

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

本版积分规则

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

GMT+8, 2024-5-11 21:34

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

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