搜索
bottom↓
回复: 284

让我们一起DIY OUR-LINK之续帖(本帖只讨论技术)【恢复】

[复制链接]

出0入0汤圆

发表于 2009-1-4 10:15:02 | 显示全部楼层 |阅读模式
没想到,原来的帖子那么火,重开一帖,只讨论技术,买板子请去老帖



老规矩。。。为免追杀,请使用company,V5,V6,V7,V8,Pro,OUR-LINK等字眼

出0入0汤圆

发表于 2009-1-4 10:22:42 | 显示全部楼层
枪个板凳座先,看着楼下盖高楼,taoist 高手啊,几天没去那个贴都盖到500楼了

出0入0汤圆

 楼主| 发表于 2009-1-4 10:27:02 | 显示全部楼层
有人很想知道RTCK是如何实现的。。。



首先,RTCK的概念



RTCK -- return TCK,仅可综合的内核(-S)有此管脚,我们来看图:





 (原文件名:RTCK.JPG) 



从图上看,TCK延迟了3个clock就成为了RTCK,换句话说。。。测一下RTCK与TCK之间的延迟就知道CPU的速度了。。。

出0入0汤圆

发表于 2009-1-4 10:30:34 | 显示全部楼层
枪个板凳座先,看着楼下盖高楼

本贴被 _yu-ming 编辑过,最后修改时间:2009-01-04,10:31:20.

出0入0汤圆

 楼主| 发表于 2009-1-4 10:31:29 | 显示全部楼层
好了。。。看看V8是如何实现的。。。



RTCK_check:                                                 ; 子程序名(taoist加)



    地址    机器码    汇编代码                              ; taoist加的注释



  00203958  B5F0      PUSH         {R4,R5,R6,R7, LR}        ; 子程序开始,保护寄存器

  0020395A  F7FF      ; pre BL/BLX                          ; 为了4字节对齐而填充的垃圾

  0020395C  FFF9      BL           0x203950                 ; 调用位于0x203950的子程序,进一步调用0x001069CC,用于禁止IRQ中断

  0020395E  4F21      LDR          R7, [PC,#0x084]          ; R7 = [0x2039E4] =PIOA_PER (0xFFFFF400) 赋值

  00203960  2400      MOV          R4, #0                   ; R4 = 0 赋值

  00203962  2540      MOV          R5, #64                  ; R5 = 0x40 赋值

  00203964  2601      MOV          R6, #1

  00203966  0336      LSL          R6, R6, #12              ; R6 = 0x1000 赋值,R6用作计数器

  00203968  63BC      STR          R4, [R7, #56]            ; AT91C_PIOA_ODSR (0xFFFFF438) = 0  拉低TCK

  0020396A  46C0      NOP                                   ; 延时

  0020396C  6BF8      LDR          R0, [R7, #60]            ; R0 = AT91C_PIOA_PDSR (0xFFFFF43C)     第1次读PA6

  0020396E  6BF9      LDR          R1, [R7, #60]            ; R1 = AT91C_PIOA_PDSR (0xFFFFF43C)     第2次读PA6

  00203970  6BFA      LDR          R2, [R7, #60]            ; R2 = AT91C_PIOA_PDSR (0xFFFFF43C)     第3次读PA6

  00203972  6BFB      LDR          R3, [R7, #60]            ; R3 = AT91C_PIOA_PDSR (0xFFFFF43C)     第4次读PA6

;-----------------------------------------------------------

  00203974  6BFC      LDR          R4, [R7, #60]            ; R4 = AT91C_PIOA_PDSR (0xFFFFF43C)     第5....次读PA6

  00203976  422C      TST          R4, R5                   ; 

  00203978  D004      BEQ          0x203984                 ; 若PA6为0,则跳到0x203984

;-----------------------------------------------------------

  0020397A  1E76      SUB          R6, R6, #1               ; 计数器减1

  0020397C  D1FA      BNE          0x203974                 ; 4096次到,则跳到0x203974

;-----------------------------------------------------------

  0020397E  2000      MOV          R0, #0

  00203980  1E40      SUB          R0, R0, #1               ; 赋return值为-1(error)

  00203982  E010      B            0x2039A6                 ; 跳到0x2039A6

;-----------------------------------------------------------

  00203984  4228      TST          R0, R5

  00203986  D020      BEQ          0x2039CA                 ; if(first PA6 == 0) then goto 0x2039CA

;-----------------------------------------------------------

  00203988  4229      TST          R1, R5

  0020398A  D020      BEQ          0x2039CE                 ; if(second PA6 == 0) then goto 0x2039CE

;-----------------------------------------------------------

  0020398C  422A      TST          R2, R5

  0020398E  D020      BEQ          0x2039D2                 ; if(third PA6 == 0) then goto 0x2039D2

;-----------------------------------------------------------

  00203990  422B      TST          R3, R5

  00203992  D020      BEQ          0x2039D6                 ; if(fourth PA6 == 0) then goto 0x2039D6

;-----------------------------------------------------------

  00203994  2101      MOV          R1, #1

  00203996  0309      LSL          R1, R1, #12              ; R1 = 4096

  00203998  1B88      SUB          R0, R1, R6               ; R0 = 4096 - R6

  0020399A  2109      MOV          R1, #9                   ; R1 = 9

  0020399C  4348      MUL          R0, R1                   ; R0 = (4096 - R6) * 9

  0020399E  2115      MOV          R1, #21                  ; R1 = 21

  002039A0  4348      MUL          R0, R1                   ; R0 = (4096 - R6) * 9 * 21 = (4096 - R6) * 189

  002039A2  30C8      ADD          R0, #200

  002039A4  3073      ADD          R0, #115                 ; R0 = (4096 - R6) * 189 + 315   根据计数器的残值计算时间

;-----------------------------------------------------------

  002039A6  2440      MOV          R4, #64

  002039A8  0224      LSL          R4, R4, #8               ; R4 = 0x4000

  002039AA  63BC      STR          R4, [R7, #56]            ; AT91C_PIOA_ODSR (0xFFFFF438) = 0x4000 即令PA14 TCK = 1

  002039AC  2601      MOV          R6, #1

  002039AE  0336      LSL          R6, R6, #12              ; R6 = 0x1000(4096)  重赋计数器

;-----------------------------------------------------------

  002039B0  1E76      SUB          R6, R6, #1               ; R6--

  002039B2  D007      BEQ          0x2039C4

;-----------------------------------------------------------

  002039B4  6BFC      LDR          R4, [R7, #60]            ; R4 = AT91C_PIOA_PDSR (0xFFFFF43C)  读PA6

  002039B6  422C      TST          R4, R5

  002039B8  D0FA      BEQ          0x2039B0                 ; if(PA6 == 0) then goto 0x2039B0

;-----------------------------------------------------------

  002039BA  1C04      MOV          R4, R0                   ; R4 = R0

  002039BC  F7FF      ; pre BL/BLX

  002039BE  FFCA      BL           0x203954                 ; call 0x001069B8   Enable_IRQ

;-----------------------------------------------------------

  002039C0  1C20      MOV          R0, R4                   ; R0 = R4

  002039C2  BDF0      POP          {R4,R5,R6,R7, PC}

;-----------------------------------------------------------

  002039C4  2000      MOV          R0, #0

  002039C6  1E40      SUB          R0, R0, #1               ; R0 = 0xFFFFFFF(-1)    RTCK always be 0 or 1

  002039C8  E7F7      B            0x2039BA

;-----------------------------------------------------------

  002039CA  2000      MOV          R0, #0                   ; R0 = 0

  002039CC  E7EB      B            0x2039A6

;-----------------------------------------------------------

  002039CE  207E      MOV          R0, #126                 ; R0 = 0x7E = 126ns

  002039D0  E7E9      B            0x2039A6

;-----------------------------------------------------------

  002039D2  20BD      MOV          R0, #189                 ; R0 = 0xBD = 189ns

  002039D4  E7E7      B            0x2039A6

;-----------------------------------------------------------

  002039D6  20FC      MOV          R0, #252                 ; R0 = 0xFC = 252ns

  002039D8  E7E5      B            0x2039A6

;-----------------------------------------------------------

  002039DA  0000      FB                                    ; 字节对齐填充的垃圾

  002039DC  001069CC  DW           0x001069CC               ; 文字池

  002039E0  001069B8  DW           0x001069B8

  002039E4  FFFFF400  DW           0xFFFFF400





本贴被 taoist 编辑过,最后修改时间:2009-01-04,16:22:34.

出0入0汤圆

发表于 2009-1-4 10:44:17 | 显示全部楼层
额,抢个地板砖吧

出0入0汤圆

发表于 2009-1-4 10:58:35 | 显示全部楼层
开始深入讲技术了,好好听讲ing.....

出0入0汤圆

发表于 2009-1-4 11:13:40 | 显示全部楼层
只好抢个地下室了

出0入0汤圆

发表于 2009-1-4 11:14:20 | 显示全部楼层
认真听课~~

出0入0汤圆

发表于 2009-1-4 11:15:46 | 显示全部楼层
学习中

出0入0汤圆

发表于 2009-1-4 11:30:16 | 显示全部楼层
认真听课~~ 

出0入0汤圆

发表于 2009-1-4 11:47:09 | 显示全部楼层
这样的话,具体USB协议部分在搞清楚之后反而要丢到一边去了。

出0入0汤圆

 楼主| 发表于 2009-1-4 12:48:02 | 显示全部楼层
to 【11楼】 YourARM 你的样子



精华不在USB协议。。。否则company干嘛公开呢。。。是吧。。。

出0入0汤圆

发表于 2009-1-4 12:48:58 | 显示全部楼层
谢谢 taoist



原来*l*ink是这么计算rtck



要是在读写内存的时候target cpu进入低时钟模式,那么得从新计算rtck



不然就会有问题



本贴被 k0059 编辑过,最后修改时间:2009-01-04,13:26:58.

出0入0汤圆

 楼主| 发表于 2009-1-4 13:19:57 | 显示全部楼层
to 【13楼】 k0059 



请勿出现敏感字眼。。。。。。

出0入0汤圆

发表于 2009-1-4 13:51:21 | 显示全部楼层
学习中

出0入0汤圆

发表于 2009-1-4 14:40:23 | 显示全部楼层
有没有可能弄到ARM JTAG状态机的文档?

出0入0汤圆

发表于 2009-1-4 14:44:36 | 显示全部楼层
问个不太相关的问题,RDI(例如MDK324的,)是不是就是个通讯协议而已???

出0入0汤圆

发表于 2009-1-4 14:44:52 | 显示全部楼层
认真听课~~ 

出0入0汤圆

 楼主| 发表于 2009-1-4 14:55:28 | 显示全部楼层
to 【16楼】 YourARM 你的样子



???



看ARM的结构白皮书就行了。。。灰常详细。。。

出0入0汤圆

发表于 2009-1-4 15:18:44 | 显示全部楼层
啊,TAP controller state transitions:



 (原文件名:TAP controller state transitions.JPG) 

出0入0汤圆

发表于 2009-1-4 15:32:08 | 显示全部楼层
taoist,写点可以看懂的注释吧?

出0入0汤圆

 楼主| 发表于 2009-1-4 15:47:30 | 显示全部楼层
to 【21楼】 bigarmer  



这个。。。难度有点大哎。。。我已经加了很多注释了。。。。。。



等下班回家我想想咋写。。。。。。

出0入0汤圆

发表于 2009-1-4 15:58:44 | 显示全部楼层
你发的这些反汇编代码和注释感觉像天书,如果是你自己看的话可能还有点头绪,别人根本看不明白,何况是点零碎的片段,发挥不了大家群策群力的作用,上次你发的V8中判断芯片CHIP ID的那段,我硬是没看懂!

出0入0汤圆

 楼主| 发表于 2009-1-4 16:26:36 | 显示全部楼层
to 【23楼】 bigarmer 



本来反汇编的代码就是天书。。。

如果你对Thumb的汇编很熟,加上我的注释,应该能看懂



加了点注释,不知道你能不能看懂,实在看不懂。。。我也没办法了。。。

出0入42汤圆

发表于 2009-1-4 16:56:03 | 显示全部楼层
应该还是看得懂,毕竟不肯能像ARM入门指南一样写,时间和精力不允许。只是目前发出来的还不够系统和完全,taoist已经领悟很多了。

出0入0汤圆

发表于 2009-1-4 18:52:13 | 显示全部楼层
 002039AA  63BC      STR          R4, [R7, #56]            ; AT91C_PIOA_ODSR (0xFFFFF438) = 0x4000 即令PA14 TCK = 1 

  002039AC  2601      MOV          R6, #1 

  002039AE  0336      LSL          R6, R6, #12              ; R6 = 0x1000(4096)  重赋计数器 

;----------------------------------------------------------- 

  002039B0  1E76      SUB          R6, R6, #1               ; R6-- 

  002039B2  D007      BEQ          0x2039C4 

;----------------------------------------------------------- 

  002039B4  6BFC      LDR          R4, [R7, #60]            ; R4 = AT91C_PIOA_PDSR (0xFFFFF43C)  读PA6 

  002039B6  422C      TST          R4, R5 

  002039B8  D0FA      BEQ          0x2039B0                 ; if(PA6 == 0) then goto 0x2039B0 

;----------------------------------------------------------- 

  002039BA  1C04      MOV          R4, R0                   ; R4 = R0 

  002039BC  F7FF      ; pre BL/BLX 

  002039BE  FFCA      BL           0x203954                 ; call 0x001069B8   Enable_IRQ 

;----------------------------------------------------------- 

  002039C0  1C20      MOV          R0, R4                   ; R0 = R4 

  002039C2  BDF0      POP          {R4,R5,R6,R7, PC}



这一部分把TCK拉高了,然后用R6当计数,一直等到RTCK变高,然后就使能中断,然后返回,,好像没有什么用呀??计到的数好像也没 有什么用呀?还有那几个数126ns,189ns是怎么得出来的呢?

出0入0汤圆

发表于 2009-1-4 18:53:36 | 显示全部楼层
留名一下吧,期待。。。。。。。

出0入0汤圆

发表于 2009-1-4 19:32:49 | 显示全部楼层
占个位置先

出0入0汤圆

发表于 2009-1-4 20:13:03 | 显示全部楼层
taoist能否看出来RTCK_check函数在那里情况下调用了



1. 每次check target状态的时候调用一次?

2. 每次操作jtag tap机出错了,再调用RTCK_check来校准下TCK ?



还是在jtag_rw_ireg, jtag_rw_dreg的时候用了另外的方法来操作RTCK ?

出0入0汤圆

发表于 2009-1-4 20:25:27 | 显示全部楼层
关于RTCK和TCK,RTCK是两个异步系统中,TCK经过CLK同步之后返回给Jlink用于进一步操作,用于消除亚稳态。两个门电路实际上是沿检测电路。一般FPGA的设计都有涉及到的。

出0入0汤圆

 楼主| 发表于 2009-1-4 20:31:02 | 显示全部楼层
to 【30楼】 gurocky 



请勿出现敏感字眼!!!!!

出0入0汤圆

 楼主| 发表于 2009-1-4 20:39:52 | 显示全部楼层
AT91SAM7S64/256晶振18.432MHz,通过PLL倍频到48MHz,则每个机器周期为20.83333ns

执行LDR指令、NOP指令(实际也是LDR指令)需要3个机器周期,即62.5ns,company按63ns计算

这样就可以计算RTCK的延时了,举2个例子:



 (原文件名:rtck.JPG) 

出0入0汤圆

 楼主| 发表于 2009-1-4 20:50:32 | 显示全部楼层
to 【29楼】 k0059 

 

1)执行EMU_CMD_MEASURE_RTCK_REACT命令

2)执行EMU_CMD_READ_MEM_ARM79命令

3)执行EMU_CMD_READ_MEM命令

4)执行EMU_CMD_WRITE_MEM_ARM79命令

5)执行EMU_CMD_WRITE_MEM命令



目前已知这些。。。具体细节还要慢慢啃。。。

出0入0汤圆

发表于 2009-1-4 20:56:49 | 显示全部楼层
这里有twentyone大侠写的JTAG原理,可以参考着看。。。

twentyone大侠写的,感觉很不错ourdev_571644.pdf(文件大小:531K) (原文件名:ARM JTAG 调试原理.pdf) 

出0入0汤圆

发表于 2009-1-4 21:53:02 | 显示全部楼层
我认为应该想办法搞一些原始的资料,比如协议呀,原理呀!利用网络的力量开发开源的设备和软件,可能意义更大!

出0入42汤圆

发表于 2009-1-5 08:04:19 | 显示全部楼层
【35】楼的可以去看看OpenOCD。

出0入0汤圆

发表于 2009-1-6 12:19:12 | 显示全部楼层
看了下j*l*i*n*k在实现jtag时序的时候,用了spi, ssc来完成jtag时序的



但是又有时候用了GPIO模式,比如在测量RTCK放回的时间的时候



这样切来切去的没问题吗

出0入0汤圆

 楼主| 发表于 2009-1-6 12:37:27 | 显示全部楼层
to 【38楼】 k0059  



分段处理的。。。



1)speed < 6000 Hz,使用GPIO方式

2)6000 Hz <= speed < 188416 Hz,使用SPI + SSC方式

3)speed>= 188416 Hz,使用SPI + SSC + DMA方式

出0入0汤圆

发表于 2009-1-6 12:50:11 | 显示全部楼层
之前一直想学习USB知识的,现在发觉这也是个很好的切入点。



阅读USB文档时感觉枯燥无味的东西,有针对性地学,吸收得挺快。

出0入0汤圆

发表于 2009-1-6 15:35:09 | 显示全部楼层
【39楼】 taoist 

   提个建议,是不是不要再在这里讨论了,有些居心不良的人已经开始,用这里的资源在谋取非法的利益了,这些人也太不厚道了。。。。。。。。。竟然还有原厂的丝印,可恶之极呀!!!

出0入0汤圆

 楼主| 发表于 2009-1-6 15:47:36 | 显示全部楼层
我没有权利限制别人不谋利,成品卖100块左右基本就是工本费和辛苦费了。。。



也许V4.00a就已经是大家可以免费升级的最后一版了。。。



偶而啃了啃pro,pro就没那么简单可以轻松攻破了。。。

本贴被 taoist 编辑过,最后修改时间:2009-01-06,15:49:07.

出0入0汤圆

发表于 2009-1-6 15:57:33 | 显示全部楼层
【41楼】 _yu-ming



不是写了吗?这个贴只讨论技术,是调试的技术,不是破解的技术吧。。这个暂时没有办法“盈利”吧。。。



反正不能专门找个地方讨论这个东西吧。。。

出0入0汤圆

 楼主| 发表于 2009-1-6 16:04:16 | 显示全部楼层
其实。。。我很想学学PC端。。。自己搞个DLL。。。这样,就可以完全设计真正属于自己的OUR-LINK



目前看起来,V8还有很多问题。。。



1)RTCK测量不准

2)不支持XScale,ARM11,Cortex-A8等。。。

3)速度最高只有12MHz,小日本的PalmICE 2 可以跑到40MHz,而且可以逐Hz调

出0入0汤圆

发表于 2009-1-6 16:12:20 | 显示全部楼层
插班生来听课了

出0入0汤圆

发表于 2009-1-6 16:28:36 | 显示全部楼层
【44楼】 taoist



有同想法。。。做OUR-Link。。不过还只是想法而已。。正在学习。。如果你哪天你开始动手。。记得叫上我。。

出0入0汤圆

发表于 2009-1-6 23:13:22 | 显示全部楼层
taoist:

 请问在EWARM中有什么办法将反汇编内容保存下来?

还有就是在反汇编是怎么两数据段也反成代码了?

如:从0x102050~01020a5地址开始的这段.我想应该是一段数据段的.



请赐教,在此先谢谢了!

本贴被 zpwang 编辑过,最后修改时间:2009-01-06,23:27:30.

出0入0汤圆

 楼主| 发表于 2009-1-7 09:28:27 | 显示全部楼层
to 【48楼】 zpwang 



在反汇编窗口,mouse 右键 copy window contents,只能一屏一屏copy



IAR是不区分指令还是数据的,这需要人工判断

出0入0汤圆

发表于 2009-1-7 13:05:46 | 显示全部楼层
 To:taoist



  謝謝了!呵呵,這真是痛苦的事。建議還是用IDA 好點。

出0入0汤圆

发表于 2009-1-7 13:26:06 | 显示全部楼层
非常非常感谢taoist,希望能早日开始我们自己的our-link,真正的our-link。来这听课,希望能有帮的上忙的一天。

出0入0汤圆

发表于 2009-1-7 22:00:41 | 显示全部楼层
如果V8_4.00a的APP中不包含升级程序

为何不在升级前降回3.96再升级呢

假设company出了一个4.01版

而4.00a不包含升级程序

先把our-link降回稍早一点的版本,利用早期版本的升级程序升级

升级到4.01

除非our-link必须逐级升,不能跳级,即使是这样,也有可能能蒙骗过去

我没有our-link,以上仅为凭空猜想

出0入0汤圆

 楼主| 发表于 2009-1-7 22:13:11 | 显示全部楼层
to 【52楼】 h2feo4 无机酸

 

思路错了



V8任何一个版本,APP都不包含升级程序

升级程序在BOOT里,不需要降级

出0入0汤圆

发表于 2009-1-7 23:04:47 | 显示全部楼层
 to Taoist,



上传我在IDA中反汇编的文件,不知对你是否有参考意义.我是做硬件的对软件半桶水也没有.吃不烂它.



点击此处下载 ourdev_577464.rar(文件大小:66K) (原文件名:v8400.rar) 

出0入0汤圆

 楼主| 发表于 2009-1-8 08:47:08 | 显示全部楼层
to 【54楼】 zpwang 



个人觉得,IDA反出来的东西没有任何参考价值。。。

根本看不懂。。。



解铃还须系铃人,用IAR写的,就要用IAR反它。。。:)



本贴被 taoist 编辑过,最后修改时间:2009-01-08,08:49:49.

出0入0汤圆

发表于 2009-1-8 11:31:26 | 显示全部楼层
【53楼】 taoist 



你说“V8任何一个版本,APP都不包含升级程序 ”,但是前几天听论坛里的shaoshunda网友说他搞定V8的升级了。

见另外一个帖子的【588楼】楼,难道shaoshunda在忽悠大家?!

出0入0汤圆

 楼主| 发表于 2009-1-8 11:37:57 | 显示全部楼层
to 【56楼】 bigarmer 



他有没有忽悠大家我不知道。

反正要搞定还是没那么容易的。。。我想他应该在调试USB



给大家看一下update部分的代码:





;=================================================================================================================

; EMU_CMD_UPDATE()

; {

;     sent_USB(1);

;     delay_ms(100);

;     [0x200040] = 0x12344321;

;     processor_reset();

; }

EMU_CMD_UPDATE:

  00105778  B500      PUSH         {LR}

  0010577A  2001      MOV          R0, #1                   ; R0 = 1

  0010577C  F001      ; pre BL/BLX

  0010577E  F800      BL           0x106780                 ; call 0x106780     USB发送1字节

  00105780  2064      MOV          R0, #100                 ; R0 = 100

  00105782  F001      ; pre BL/BLX

  00105784  FAA5      BL           0x106CD0                 ; call 0x106CD0     delay 100ms

  00105786  4803      LDR          R0, [PC,#0x00C]          ; R0 = [0x105794] =0x200040

  00105788  4903      LDR          R1, [PC,#0x00C]          ; R1 = [0x105798] =0x12344321    通知BOOT

  0010578A  6001      STR          R1, [R0, #0]             ;                               [0x200040] = 0x12344321

  0010578C  F000      ; pre BL/BLX

  0010578E  FC0A      BL           0x105FA4                 ; call 0x105FA4     processor_reset

  00105790  BD00      POP          {PC}

  00105792  0000      FB

  00105794  00200040  DW           0x00200040

  00105798  12344321  DW           0x12344321

;=================================================================================================================

出0入0汤圆

 楼主| 发表于 2009-1-8 11:51:05 | 显示全部楼层
另外:



INITTAB:

  0010995C  000034A6  DW           0x000034A6               ; long   Size;  /* Number of bytes to initialize */

  00109960  00200070  DW           0x00200070               ; char*  Dst;   /* Destination. If Dst==Src, then init to 0 */

  00109964  00200070  DW           0x00200070               ; char*  Src;   /* Source address. Usually in ROM. */



  00109968  000007DC  DW           0x000007DC               ; long   Size;  /* Number of bytes to initialize */

  0010996C  00203518  DW           0x00203518               ; char*  Dst;   /* Destination. If Dst==Src, then init to 0 */

  00109970  00109180  DW           0x00109180               ; char*  Src;   /* Source address. Usually in ROM. */



  00109974  0000002B  DW           0x0000002B               ; long   Size;  /* Number of bytes to initialize */

  00109978  00200044  DW           0x00200044               ; char*  Dst;   /* Destination. If Dst==Src, then init to 0 */

  0010997C  0010998C  DW           0x0010998C               ; char*  Src;   /* Source address. Usually in ROM. */







可以从上述的inittab看出,0x200044是常量区的开始,证明APP的没有使用0x200040-0x200043

因此,V8的升级在BOOT中



Boot中可能是这样处理的:



初始化完成后,判断复位类型,如果是软件复位,且[0x200040] == 0x12344321,则启动USB接收,将新的APP放到备份区后,执行COPY





我对USB不熟,有这方面的大虾可以试试。。。

出0入0汤圆

发表于 2009-1-8 11:51:54 | 显示全部楼层
调试USB?真有这么大的决心?期待一下! 

出0入0汤圆

 楼主| 发表于 2009-1-8 11:53:34 | 显示全部楼层
to 【59楼】 bigarmer 



表光期待呀。。。

出0入0汤圆

发表于 2009-1-8 11:55:59 | 显示全部楼层
木有办法呀!有个建议,找个S128或者S256测试一下之前的方法看可行否?

出0入0汤圆

 楼主| 发表于 2009-1-8 11:57:11 | 显示全部楼层
to 【61楼】 bigarmer



不升级的早N年就搞定了。。。S64就行了

出0入0汤圆

发表于 2009-1-8 12:40:25 | 显示全部楼层
TO 【58楼】 taoist



我已经搞定了它的USB升级协议,我用的是7S64没有备份直接更新APP,现在已经可以升级了。

如果用S256那就完美了

出0入0汤圆

发表于 2009-1-8 12:43:24 | 显示全部楼层
TO 【56楼】 bigarmer

TO 【57楼】 taoist



我没有忽悠大家



我没有发布,是因为我怕被company追杀

本贴被 shaoshunda 编辑过,最后修改时间:2009-01-08,12:48:04.

出0入0汤圆

 楼主| 发表于 2009-1-8 13:05:43 | 显示全部楼层
to 【64楼】 shaoshunda 

 

发给偶试试?

出0入0汤圆

发表于 2009-1-8 13:28:20 | 显示全部楼层
to 【64楼】 shaoshunda  发给我一份,我试试看看怎样,我的实验板明天就能到了。yjwpm@126.com

本贴被 _yu-ming 编辑过,最后修改时间:2009-01-08,13:29:29.

出0入0汤圆

发表于 2009-1-8 17:20:56 | 显示全部楼层
使用ERASE引脚擦除JLINK板子上的7S64后,好像再也连不了JTAG了,设置PA0 PA1 PA2 TST JTAGSEL也不行,怎么回事啊,有兄弟碰到过没?

出0入0汤圆

发表于 2009-1-8 20:18:16 | 显示全部楼层
to shaoshunda,

你的V8我也想用用.不知可否赐与. 呵呵,我只会伸手. zpwang69@163.com

出0入0汤圆

发表于 2009-1-8 20:19:05 | 显示全部楼层
要是做OUR-link,我参与……

出0入0汤圆

发表于 2009-1-8 20:52:49 | 显示全部楼层
这里有一个AT91SAM7 bootload.
http://www.okarm.com/bbs/dispbbs.asp?boardID=2&ID=844&page=5

出0入0汤圆

 楼主| 发表于 2009-1-8 21:08:58 | 显示全部楼层
to 【70楼】 zpwang  

不错的资料。。。学习中。。。3KU

出0入0汤圆

发表于 2009-1-8 22:13:23 | 显示全部楼层
这是一个很好的学习ARM汇编和编程技巧的地方。
但汇编确实太难了,这两个帖子的内容需要很长时间才能消化,还不知道是否会消化不良。
学习中......

出0入0汤圆

 楼主| 发表于 2009-1-9 08:56:26 | 显示全部楼层
今天上海很冷。。。希望我们的帖子不要更冷。。。

鼓动一下大家的士气


 (原文件名:pro.JPG) 

出0入0汤圆

 楼主| 发表于 2009-1-9 09:03:36 | 显示全部楼层
革_命尚未成功,同志仍需努力!

出0入0汤圆

发表于 2009-1-9 09:33:03 | 显示全部楼层
TO monkey.liu 

我的 v8 boot 已经改用keil 来写了,代码只有3K多。
我原来的v8是用IAR 的USB框架来写的,已经写好了,代码6K多,而且速度很慢。
看到了你的贴子“最简单的,也是最高效的:Atmel的AT91SAM7S-BasicUSB的BULK USB速度经测试可达到1MB/s”之后,
就想改成“AT91SAM7S-BasicUSB”的框架。在IAR里面按照你的方法改,发现不行,电脑蓝屏重启,只能放弃IAR投奔keil。 

另外:
      升级的USB通讯协议是通过抓v7的USB升级包来得到的。

本贴被 shaoshunda 编辑过,最后修改时间:2009-01-09,09:37:44.

出0入0汤圆

发表于 2009-1-9 09:46:36 | 显示全部楼层
【73楼】 taoist

         目前v8上电后直接从boot升级固件是OK的,但是从APP跳到boot升级固件,握手失败(握手超时)无法升级。

         你的Pro是可以升级的吗?

本贴被 shaoshunda 编辑过,最后修改时间:2009-01-09,09:47:42.

出0入0汤圆

发表于 2009-1-9 09:48:29 | 显示全部楼层
taoist,不错,能否给多点信息,比如主芯片啥的。
shaoshunda,咋没上线呢? 

出0入0汤圆

发表于 2009-1-9 09:50:44 | 显示全部楼层
TO 【77楼】 bigarmer

Pro 用的7X256,俺已经从DLL里面提取出Pro APP了,并且确定了它在7X256里面的存放位置。

现在是“严冬”,公司开始禁用QQ了。
俺昨晚加班没上QQ,sorry!!!

本贴被 shaoshunda 编辑过,最后修改时间:2009-01-09,09:54:39.

出0入0汤圆

发表于 2009-1-9 09:56:11 | 显示全部楼层
OK,没关系,谢谢!
能告知一下,Pro APP的起始地址吗?

出0入0汤圆

发表于 2009-1-9 09:56:19 | 显示全部楼层
看来俺要向taoist看齐投奔Pro了

出0入0汤圆

发表于 2009-1-9 09:57:47 | 显示全部楼层
TO 【79楼】 bigarmer 

从64K之后开始存放

出0入0汤圆

发表于 2009-1-9 10:04:11 | 显示全部楼层
谢谢!
我的也OK了。

出0入0汤圆

 楼主| 发表于 2009-1-9 10:28:48 | 显示全部楼层
to 【76楼】 shaoshunda 

升级等你了。。。哈哈哈哈。。。偶USB不熟,同时反汇编V8,flasher,pro,哎。。。哪有时间学USB。。。

pro只是玩玩的。。。还有很多问题待解决。。。
I/O定义都改掉了。。。网络现在还不通。。。MAC地址还有问题。。。

所以。。。革_命尚未成功,同志仍需努力

出0入0汤圆

发表于 2009-1-9 10:29:59 | 显示全部楼层
【73楼】 taoist 

新版本的,增加了很多功能啊。给我们介绍下啊。

出0入0汤圆

 楼主| 发表于 2009-1-9 10:46:47 | 显示全部楼层
to 【84楼】 shian0551

pro支持TCP/IP调试,可通过网页调试

具体功能可以看新版的manual

出0入0汤圆

发表于 2009-1-9 10:59:56 | 显示全部楼层

 (原文件名:armpro.jpg) 

出0入0汤圆

发表于 2009-1-9 11:14:48 | 显示全部楼层
TO 【57楼】 taoist 

processor_reset(); 

在processor_reset里面具体做了哪些工作

出0入0汤圆

 楼主| 发表于 2009-1-9 11:26:49 | 显示全部楼层
to 【87楼】 shaoshunda 
 

processor_reset
  00105FA4  B500      PUSH         {LR}
  00105FA6  F000      ; pre BL/BLX
  00105FA8  FD0F      BL           0x1069C8                 ; call 0x1069C8     Disable_IRQ
  00105FAA  F001      ; pre BL/BLX
  00105FAC  F961      BL           0x107270                 ; call 0x107270     check remap
  00105FAE  4802      LDR          R0, [PC,#0x008]          ; R0 = [0x105FB8] =RSTC_RCR (0xFFFFFD00)
  00105FB0  4902      LDR          R1, [PC,#0x008]          ; R1 = [0x105FBC] =0xA5000001
  00105FB2  6001      STR          R1, [R0, #0]             ; RSTC_RCR (0xFFFFFD00) = 0xA5000001  processor reset
  00105FB4  E7FE      B            0x105FB4                 ; while(1)
  00105FB6  46C0      FB
  00105FB8  FFFFFD00  DW           0xFFFFFD00
  00105FBC  A5000001  DW           0xA5000001

本贴被 taoist 编辑过,最后修改时间:2009-01-09,11:27:36.

出0入0汤圆

 楼主| 发表于 2009-1-9 11:35:26 | 显示全部楼层
to 【86楼】 kvcs 
 
Firmware build: Jan 5 2009 12:20:29  ???

什么版本的???

出0入0汤圆

发表于 2009-1-9 11:37:22 | 显示全部楼层
TO 【88楼】 taoist


有空的时候俺再整整。

TO 【73楼】 taoist

你的板子是自己打的板子,还是买的demo板

本贴被 shaoshunda 编辑过,最后修改时间:2009-01-09,11:39:18.

出0入0汤圆

发表于 2009-1-9 11:41:07 | 显示全部楼层
TO 【86楼】 kvcs

Pro 搞定了?
还是买的?

出0入0汤圆

 楼主| 发表于 2009-1-9 12:18:21 | 显示全部楼层
to 【90楼】 shaoshunda

mcuzone买的EK空板...焊了几个片子

出0入0汤圆

发表于 2009-1-9 12:24:20 | 显示全部楼层
To shaoshunda 我用了您的V7的固件怎么升级不成功呢?停留在如下图的位置就不动了,板子上的灯一直在闪,,??

 (原文件名:未命名5.JPG) 

出0入0汤圆

发表于 2009-1-9 12:26:25 | 显示全部楼层
TO 【92楼】 taoist

 我也去买一块板子回来整一整,看一下boot能不能搞定。

出0入0汤圆

发表于 2009-1-9 12:30:03 | 显示全部楼层
TO 【93楼】 _yu-ming 

你用的什么样的板子

出0入0汤圆

发表于 2009-1-10 11:02:48 | 显示全部楼层

 (原文件名:v8.JPG) 

V8完美升级截图,从3.96d升级到4.00

出0入0汤圆

发表于 2009-1-10 11:05:00 | 显示全部楼层

 (原文件名:v8 updata.JPG) 

V8完美升级截图,从4.00升级到4.01a

出0入0汤圆

发表于 2009-1-10 11:06:58 | 显示全部楼层
发两张V8完美升级截图,活跃一下贴子气氛,哈哈

按照 【58楼】 taoist 的方法没有搞定,我是按照自己的方法搞定的。用的是7S64。

本贴被 shaoshunda 编辑过,最后修改时间:2009-01-10,12:06:57.

出0入42汤圆

发表于 2009-1-10 11:20:13 | 显示全部楼层
可否透露点思路?

本贴被 ahfong2006 编辑过,最后修改时间:2009-01-10,11:21:23.

出0入0汤圆

发表于 2009-1-10 11:40:47 | 显示全部楼层
学习!!!!

出0入0汤圆

发表于 2009-1-10 12:01:05 | 显示全部楼层
TO 【99楼】 ahfong2006 
 
本帖已经有了,自己啃一啃吧!

boot的代码是要完全自己写的,包括USB部分。

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

本版积分规则

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

GMT+8, 2024-5-6 19:37

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

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