Ti Am3517 gel Не пинайте сильно, только начинаю изучать Arm
Только увы не могу разобрать с .gel файлом.
У меня корректный файл?
На плате установлено 256Мб SDRAM. В нем нужно указать диапазон адресов SDRAM.
Как я понимаю, адреса SDRAM в должны начинаться с 0x8000_0000
Но в последней строчке .gel Linux_sdk указано:
++
/* !! FOLLOWING MEM SPACE TO BE CONFIGURED PROPERLY !!*/ GEL_MapAddStr(0x68000000, 0, 0x98000000, "R|W" , 0); /* TO BE CONFIGURED */Как я понял, должно быть: GEL_MapAddStr(0x80000000, 0, 0x90000000, "R|W" , 0); /* TO BE CONFIGURED */ Ядро vmlinux.elf от Ti sdk (не менял никаких настроек) собирается по адресу 0xc0008000 и конвертируется в uImage c адресом загрузки и точкой входа 0x8000_8000 Как то все сложно и непонятно. В окошке CCS Disassembly адреса начинаются с 0xc000_0000, их физически не запаяно
0xC01EAA40: E2500001 SUBS R0, R0, #1 0xC01EAA44: 8AFFFFFD BHI 0xC01EAA40 0xC01EAA48: E1A0F00E MOV PC, R14 0xC01EAA4C: E254C001 SUBS R12, R4, #1 0xC01EAA50: 9A000033 BLS 0xC01EAB24 0xC01EAA54: E11C0004 TST R12, R4 0xC01EAA58: 0A000028 BEQ 0xC01EAB00 0xC01EAA5C: E1510004 CMP R1, R4 0xC01EAA60: E3A03000 MOV R3, #0 0xC01EAA64: 3A00000B BCC 0xC01EAA98 0xC01EAA68: E16F2F14 CLZ R2, R4 0xC01EAA6C: E16FCF11 CLZ R12, R1 0xC01EAA70: E042200C SUB R2, R2, R12 0xC01EAA74: E3A0C001 MOV R12, #1 0xC01EAA78: E1A0C21C MOV R12, R12, LSL R2 0xC01EAA7C: E1A02214 MOV R2, R4, LSL R2 0xC01EAA80: E1510002 CMP R1, R2 0xC01EAA84: 2183300C ORRCS R3, R3, R12 0xC01EAA88: 20511002 SUBCSS R1, R1, R2 0xC01EAA8C: 11B0C0AC MOVNES R12, R12, LSR #1 0xC01EAA90: E1A020A2 MOV R2, R2, LSR #1 0xC01EAA94: 1AFFFFF9 BNE 0xC01EAA80 0xC01EAA98: E3510000 CMP R1, #0CCS Disassembly:
0x80008000: E1A00000 MOV R0, R0 0x80008004: E1A00000 MOV R0, R0 0x80008008: E1A00000 MOV R0, R0 0x8000800C: E1A00000 MOV R0, R0 0x80008010: E1A00000 MOV R0, R0 0x80008014: E1A00000 MOV R0, R0 0x80008018: E1A00000 MOV R0, R0 0x8000801C: E1A00000 MOV R0, R0 0x80008020: EA000002 B 0x80008030 0x80008024: 016F2818 CLZEQ R2, R8 0x80008028: 00000000 ANDEQ R0, R0, R0 0x8000802C: 0028AA0C EOREQ R10, R8, R12, LSL #20 0x80008030: E1A07001 MOV R7, R1 0x80008034: E1A08002 MOV R8, R2 0x80008038: E10F2000 MRS R2, CPSR 0x8000803C: E3120003 TST R2, #3 0x80008040: 1A000001 BNE 0x8000804C 0x80008044: E3A00017 MOV R0, #23 0x80008048: EF123456 SWI #1193046 0x8000804C: E10F2000 MRS R2, CPSR 0x80008050: E38220C0 ORR R2, R2, #192Ida:
init:C0008004 MRC p15, 0, R9,c0,c0, 0 .init:C0008008 BL __lookup_processor_type .init:C000800C MOVS R10, R5 .init:C0008010 BEQ __error_p .init:C0008014 BL __lookup_machine_type .init:C0008018 MOVS R8, R5 .init:C000801C BEQ __error_a .init:C0008020 BL __vet_atags .init:C0008024 BL __create_page_tables .init:C0008028 LDR SP, =__mmap_switched .init:C000802C ADR LR, loc_C0008034 .init:C0008030 ADD PC, R10, #0x10 .init:C0008034 .init:C0008034 loc_C0008034 ; DATA XREF: .init_proc+2Co .init:C0008034 B __enable_mmu .init:C0008034 ; End of function .init_proc .init:C0008034 .init:C0008034 ; --------------------------------------------------------------------------- .init:C0008038 off_C0008038 DCD __mmap_switched ; DATA XREF: .init_proc+28r .init:C000803CДазассемблированный IDA Linux и из окошка CCS Disassembly не совпадают :o( Не пинайте сильно новичка. Объясните шаманство с адресацией.