ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
322621
++ (12.04.2012 19:18, просмотров: 648)
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, #0
CCS 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, #192
Ida:
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( Не пинайте сильно новичка. Объясните шаманство с адресацией.
image
++