|
eboot系列问题--------------请教EBOOT.BIB和CONFIG.BIB中的内容!
[复制链接]
config.bib:
; 8000.0000 -+
; | Bootloader Stack (64KB)
; 8001.0000 -+
; | Bootloader RAM (64KB)
; 8002.0000 -+
; | Bootloader Code (256KB)
; 8006.0000 -+
; | GAP (reserved for future)
; 800F.F000 -+
; | ARGS (4KB)
; 8010.0000 -+
; |
; | OS (NK) Code (DEBUG: 37MB, RELEASE: 32MB)
; |
; 8260.0000 -+ **auto-size**
; |
; | OS (NK) RAM (DEBUG: 23MB, RELEASE: 32MB)
; |
; 8400.0000 -+
#define NKSTART 80100000
#define NKLEN 01E00000
#define RAMSTART 81F00000 这两个有什么区别?
#define RAMLEN 02100000
1、请问NKSTART和RAMSTART的区别?
EBOOT.bib:
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
STACK 80000000 00010000 RESERVED
RAM 80010000 00010000 RAM
EBOOT 80020000 00040000 RAMIMAGE
RSVD 80060000 0009F000 RESERVED
ARGS 80FF0000 00001000 RESERVED
CONFIG
AUTOSIZE=OFF
COMPRESSION=OFF
PROFILE=OFF
KERNELFIXUPS=ON
ROMSTART=80020000 这个是什么?
ROMWIDTH=32
ROMSIZE=00040000
OEMaddressTable:
DCD 0x80000000, 0xA0000000, 128 ; MAINSTONEII: SDRAM (128MB).
DCD 0x88000000, 0x5C000000, 1 ; BULVERDE: Internal SRAM (64KB bank 0).
DCD 0x88100000, 0x58000000, 1 ; BULVERDE: Internal memory PM registers.
DCD 0x88200000, 0x4C000000, 1 ; BULVERDE: USB host controller.
DCD 0x88300000, 0x48000000, 1 ; BULVERDE: Memory controller.
DCD 0x88400000, 0x44000000, 1 ; BULVERDE: LCD controller.
DCD 0x88500000, 0x40000000, 32 ; BULVERDE: Memory-mapped registers (peripherals).
DCD 0x8A500000, 0x3C000000, 16 ; BULVERDE: PCMCIA S1 common memory space.
DCD 0x8B500000, 0x38000000, 64 ; BULVERDE: PCMCIA S1 attribute memory space.
DCD 0x8F500000, 0x30000000, 1 ; BULVERDE: PCMCIA S1 I/O space.
DCD 0x8F600000, 0x2C000000, 16 ; BULVERDE: PCMCIA S0 common memory space.
DCD 0x90600000, 0x28000000, 64 ; BULVERDE: PCMCIA S0 attribute memory space.
DCD 0x94600000, 0x20000000, 1 ; BULVERDE: PCMCIA S0 I/O space.
DCD 0x9A500000, 0xE0000000, 1 ; MAINSTONEII: Zero-bank (in reserved slot - no physical memory
DCD 0x9A600000, 0x14000000, 1 ; MAINSTONEII: nCS5: eXpansion board header.
DCD 0x9A700000, 0x10000000, 1 ; MAINSTONEII: nCS4: SMSC 91C111 Ethernet controller.
DCD 0x9A800000, 0x0A000000, 1 ; MAINSTONEII: nCS2 (upper half): 2MB SRAM.
DCD 0x9A900000, 0x08000000, 1 ; MAINSTONEII: nCS2 (lower half): Board registers (FPGA).
DCD 0x9CA00000, 0x00000000, 32 ; MAINSTONEII: nCS0: Boot Flash 32MB).
DCD 0x9EA00000, 0x50000000, 1 ; BULVERDE: Camera peripheral interface.
DCD 0x00000000, 0x00000000, 0 ; end of table
现在的问题是:
我把以前的BOOT中UsbDown移植到新的EBOOT(正在完善中...)中
其中有个函数是将 从PC中下载的内核存储到SDRAM中
PBYTE pImgStart = (PBYTE) RAM_IMAGE_START;
while(Imglen != 0)
{
Bufflen = 1024;
OEM_USBReceiveHandler( (PUCHAR) pImgStart, &Bufflen);
.....
然后解析内核
其中 RAM_IMAGE_START 在原来的BSP中的定义是#define RAM_IMAGE_START 0x96CB8000
而原来的OEMaddressTable:
DCD SDRAM_BASE_C_VIRTUAL, SDRAM_BASE_PHYSICAL, 128 ; (96C0 0000, A000 0000)
; everything SDRAM-related (eboot RAM, eboot RAMIMG, nk RAM, nk RAMIMAGE, nk MEMDEFS, ethdbg buffs)
也就是原来SDRAM的虚拟内存起始位置 + B8000 (为什么 + B8000?)
所以我现在将RAM_IMAGE_START定义为:0x80100000 即:上面分布图中NKSTART的虚拟地址
请问这么定义是否正确呢??
|
|