|
楼主 |
发表于 2008-12-20 19:38:19
|
显示全部楼层
精华来了。。。
;=================================================================================================================
00203780 4778 BX PC ; jump to 0x00203784 ARM mode!!!
00203782 46C0 ; Fill Blank
;-----------------------------------------------------------------------------------------------------------------
00203784 E92D07F0 STMDB SP!, {R4,R5,R6,R7,R8,R9,R10}
00203788 E59DC01C LDR R12, [SP, #+28]
0020378C E59D4020 LDR R4, [SP, #+32]
00203790 E3E050EF MVN R5, #0xEF ; R5 = 0xFFFFFF10
00203794 E3C55FC0 BIC R5, R5, #0x300 ; R5 = AT91C_PMC_PCER (0xFFFFFC10)
00203798 E3A06F49 MOV R6, #0x124 ; R6 = 0x124
0020379C E5856000 STR R6, [R5, #+0] ; AT91C_PMC_PCER (0xFFFFFC10) = 0x00000124 enable SSC,SPI,PIOA
002037A0 E3E050FB MVN R5, #0xFB ; R5 = 0xFFFFFF04
002037A4 E3C55EB0 BIC R5, R5, #0xB00 ; R5 = AT91C_PIOA_PDR (0xFFFFF404)
002037A8 E3A06A70 MOV R6, #0x70000 ; R6 = 0x00070000
002037AC E5856000 STR R6, [R5, #+0] ; AT91C_PIOA_PDR (0xFFFFF404) = 0x00070000 PA18 TDO,PA17 TDI,PA16 TCK disable I/O
002037B0 E3A06080 MOV R6, #0x80 ; R6 = 0x00000080
002037B4 E5826000 STR R6, [R2, #+0] ; AT91C_SPI_CR (0xFFFE0000) = 0x00000080 reset SPI
002037B8 E59F60B8 LDR R6, [PC, #+184] ; [0x203878] =0x200220
002037BC E5966000 LDR R6, [R6, #+0]
002037C0 E5826004 STR R6, [R2, #+4] ; AT91C_SPI_MR (0xFFFE0004) = [0x200220]
002037C4 E59F60B0 LDR R6, [PC, #+176] ; [0x20387C] =0x200224
002037C8 E5966000 LDR R6, [R6, #+0]
002037CC E5826030 STR R6, [R2, #+48] ; AT91C_SPI_CSR (0xFFFE0030) = [0x200224]
002037D0 E3A06001 MOV R6, #0x1
002037D4 E5826000 STR R6, [R2, #+0] ; AT91C_SPI_CR (0xFFFE0000) = 0x00000001 SPIEN
002037D8 E3A07C80 MOV R7, #0x8000
002037DC E5837000 STR R7, [R3, #+0] ; AT91C_SSC_CR (0xFFFD4000) = 0x00008000 reset SSC
002037E0 E5836004 STR R6, [R3, #+4] ; AT91C_SSC_CMR (0xFFFD4004) = 0x00000001 SSC clock = 24MHz
002037E4 E3A07007 MOV R7, #0x7 ; R7 = 7
002037E8 E583701C STR R7, [R3, #+28] ; AT91C_SSC_TFMR (0xFFFD401C) = 0x00000007 DATLEN = 7 (8 bit)
002037EC E3A08002 MOV R8, #0x2 ; R8 = 2
002037F0 E5838018 STR R8, [R3, #+24] ; AT91C_SSC_TCMR (0xFFFD4018) = 0x00000002 CKS = TK Pin PA16
002037F4 E3A08F40 MOV R8, #0x100 ; R8 = 0x00000100
002037F8 E5838000 STR R8, [R3, #+0] ; AT91C_SSC_CR (0xFFFD4000) = 0x00000100 TXEN = 1
002037FC E4D08001 LDRB R8, [R0], #+1 ; R8 = [R0]
00203800 E5838024 STR R8, [R3, #+36] ; AT91C_SSC_THR (0xFFFD4024) = [R0]
00203804 E3A08880 MOV R8, #0x800000 ; R8 = 0x00800000
00203808 E285900C ADD R9, R5, #0xC ; R9 = AT91C_PIOA_OER (0xFFFFF410)
0020380C E5898000 STR R8, [R9, #+0] ; AT91C_PIOA_OER (0xFFFFF410) = 0x00800000 PA23 TCK output enable
00203810 E3859030 ORR R9, R5, #0x30 ; R9 = AT91C_PIOA_CODR (0xFFFFF434)
00203814 E5898000 STR R8, [R9, #+0] ; AT91C_PIOA_CODR (0xFFFFF434) = 0x00800000 PA23 = 0
00203818 E285A02C ADD R10, R5, #0x2C ; R10 = AT91C_PIOA_SODR (0xFFFFF430)
0020381C E58A8000 STR R8, [R10, #+0] ; AT91C_PIOA_SODR (0xFFFFF430) = 0x00800000 PA23 = 1
00203820 E5898000 STR R8, [R9, #+0] ; AT91C_PIOA_CODR (0xFFFFF434) = 0x00800000 PA23 = 0
00203824 E58A8000 STR R8, [R10, #+0] ; AT91C_PIOA_SODR (0xFFFFF430) = 0x00800000 PA23 = 1
00203828 E5898000 STR R8, [R9, #+0] ; AT91C_PIOA_CODR (0xFFFFF430) = 0x00800000 PA23 = 0
0020382C E58A8000 STR R8, [R10, #+0] ; AT91C_PIOA_SODR (0xFFFFF430) = 0x00800000 PA23 = 1
00203830 E3859010 ORR R9, R5, #0x10 ; R9 = AT91C_PIOA_ODR (0xFFFFF414)
00203834 E5898000 STR R8, [R9, #+0] ; AT91C_PIOA_ODR (0xFFFFF414) = 0x00800000 PA23 TCK output disable
00203838 E3A08021 MOV R8, #0x21 ; R8 = 0x00000021
0020383C E5838010 STR R8, [R3, #+16] ; AT91C_SSC_RCMR (0xFFFD4010) = 0x00000021 CKI = 1, CKS = TK clock
00203840 E5837014 STR R7, [R3, #+20] ; AT91C_SSC_RFMR (0xFFFD4014) = 0x00000007 DATLEN = 7 (8bit)
00203844 E5836000 STR R6, [R3, #+0] ; AT91C_SSC_CR (0xFFFD4000) = 0x00000080 RXEN = 1
00203848 E3A06C60 MOV R6, #0x6000 ; R6 = 0x00006000
0020384C E5856000 STR R6, [R5, #+0] ; AT91C_PIOA_PDR (0xFFFFF404) = 0x00006000 PA13 TMS,PA14 TCK disable i/o
00203850 E5821108 STR R1, [R2, #+264] ; AT91C_SPI_TPR (0xFFFE0108) = R1
00203854 E5830108 STR R0, [R3, #+264] ; AT91C_SSC_TPR (0xFFFD4108) = R0
00203858 E583C100 STR R12, [R3, #+256] ; AT91C_SSC_RPR (0xFFFD4100) = R12
0020385C E2440001 SUB R0, R4, #0x1 ; R0 = R4 - 1
00203860 E583010C STR R0, [R3, #+268] ; AT91C_SSC_TCR (0xFFFD410C) = R4 - 1
00203864 E5834104 STR R4, [R3, #+260] ; AT91C_SSC_RCR (0xFFFD4104) = R4
00203868 E28700FA ADD R0, R7, #0xFA ; R0 = 0x101 = 257
0020386C E5830120 STR R0, [R3, #+288] ; AT91C_SSC_PTCR(0xFFFD4120) = 0x00000101 TXTEN = 1 RXTEN = 1
00203870 E8BD07F0 LDMIA SP!, {R4,R5,R6,R7,R8,R9,R10}
00203874 E12FFF1E BX LR
;-----------------------------------------------------------
00203878 00200220 DW 0x00200220
0020387C 00200224 DW 0x00200224
;=================================================================================================================
本贴被 taoist 编辑过,最后修改时间:2008-12-20,19:50:09. |
|