Это если линковать с адреса 0. если линковать со стартовым адресом 0x60000000, там там будет адрес порта E.
Вот что показывает IDA при загрузке в него готового бинарника. Вроде там так раз указатель на константу в FLASH(стартовый адрес 0x00000000). Ошибаюсь?
ROM:60000000 43 DCB 0x43 ; C ROM:60000001 52 DCB 0x52 ; R ROM:60000002 55 DCB 0x55 ; U ROM:60000003 53 DCB 0x53 ; S ROM:60000004 ; --------------------------------------------------------------------------- ROM:60000004 5C F2 9F E5 LDR PC, =loc_60000058 ROM:60000008 ; --------------------------------------------------------------------------- ROM:60000008 00 00 A0 E1 NOP ROM:6000000C 00 00 A0 E1 NOP ROM:60000010 00 00 A0 E1 NOP ROM:60000014 00 00 A0 E1 NOP ROM:60000018 00 00 A0 E1 NOP ROM:6000001C 00 00 A0 E1 NOP ROM:60000020 00 00 A0 E1 NOP ROM:60000024 00 00 A0 E1 NOP ROM:60000028 00 00 A0 E1 NOP ROM:6000002C 00 00 A0 E1 NOP ROM:60000030 00 00 A0 E1 NOP ROM:60000034 00 00 A0 E1 NOP ROM:60000038 00 00 A0 E1 NOP ROM:6000003C 00 00 A0 E1 NOP ROM:60000040 24 12 9F E5 LDR R1, =0x80840020 ROM:60000044 00 20 91 E5 LDR R2, [R1] ROM:60000048 FC 20 02 E2 AND R2, R2, #0xFC ROM:6000004C 03 20 82 E3 ORR R2, R2, #3 ROM:60000050 00 20 81 E5 STR R2, [R1] ROM:60000054 ROM:60000054 loc_60000054 ; CODE XREF: ROM:loc_60000054j ROM:60000054 FE FF FF EA B loc_60000054 ROM:60000058 ; ---------------------------------------------------------------------------
... ... ...
ROM:60000268 58 00 00 60 off_60000268 DCD loc_60000058 ; DATA XREF: ROM:60000004r ROM:6000026C 20 00 84 80 dword_6000026C DCD 0x80840020 ; DATA XREF: ROM:60000040r ROM:6000026C ; ROM:loc_60000058r ROM:60000270 FC 50 01 80 dword_60000270 DCD 0x800150FC ; DATA XREF: ROM:60000068r ROM:60000274 55 AA 00 00 dword_60000274 DCD 0xAA55 ; DATA XREF: ROM:60000078r ROM:60000278 00 00 94 80 dword_60000278 DCD 0x80940000 ; DATA XREF: ROM:6000007Cr ROM:6000027C 28 00 21 00 dword_6000027C DCD 0x210028 ; DATA XREF: ROM:60000088r ROM:60000280 00 00 06 80 dword_60000280 DCD 0x80060000 ; DATA XREF: ROM:6000009Cr ROM:60000284 18 00 08 80 dword_60000284 DCD 0x80080018 ; DATA XREF: ROM:60000114r
Ничего не понимаю... в стартате Reset_Handler этот код работает... Где то я гоню.(?)
вот показан код и для прерывания и при исполнении из флэш(Reset_Handler).
У ARM же нет никаких сегментов? чем будет отличаться при исполнении код из rom и ram?
или вот эта команда LDR R1, =0x80840020 указывает СМЕЩЕНИЕ? блин...
60000038 00 00 A0 E1 NOP ROM:6000003C 00 00 A0 E1 NOP ROM:60000040 24 12 9F E5 LDR R1, =0x80840020 ROM:60000044 00 20 91 E5 LDR R2, [R1] ROM:60000048 FC 20 02 E2 AND R2, R2, #0xFC ROM:6000004C 03 20 82 E3 ORR R2, R2, #3 ROM:60000050 00 20 81 E5 STR R2, [R1] ROM:60000054 ROM:60000054 loc_60000054 ; CODE XREF: ROM:loc_60000054j ROM:60000054 FE FF FF EA B loc_60000054 ROM:60000058 ; --------------------------------------------------------------------------- ROM:60000058 ROM:60000058 loc_60000058 ; CODE XREF: ROM:60000004j ROM:60000058 ; DATA XREF: ROM:off_60000268o ROM:60000058 0C 12 9F E5 LDR R1, =0x80840020 ROM:6000005C 00 20 91 E5 LDR R2, [R1] ROM:60000060 FC 20 02 E2 AND R2, R2, #0xFC ROM:60000064 00 20 81 E5 STR R2, [R1] ROM:60000068 00 D2 9F E5 LDR SP, =0x800150FC ROM:6000006C 00 00 0F E1 MRS R0, CPSR ROM:60000070 C0 00 80 E3 ORR R0, R0, #0xC0 ROM:60000074 00 F0 29 E1 MSR CPSR_cf, R0 ROM:60000078 F4 01 9F E5 LDR R0, =0xAA55
|