配置config.bib的注意事項以及錯誤分析

一、編譯出NK,但是但是下載NK後不會啓動。

原因:就是DNW設置地址不對,並不是每個NK下載到0x32000000都能運行的。欲知詳情,請看下面。

先看這個能在0x32000000運行的NK的內存映射表

OEMAddressTable
    ;;;-------------------------------------------------------------
    ;;; Virt Addr   Phys Addr   MB
    ;;;-------------------------------------------------------------
    DCD 0x80000000, 0x02000000, 30  ; 30 MB SRAM(SRAM/ROM) BANK 0
    DCD 0x82000000, 0x08000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 1
    DCD 0x84000000, 0x10000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 2
    DCD 0x86000000, 0x18000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 3
    DCD 0x88000000, 0x20000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 4
    DCD 0x8A000000, 0x28000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 5
    DCD 0x8C000000, 0x30000000, 64  ; 64 MB DRAM BANK 0, 1
    DCD 0x90800000, 0x48000000,  1  ; Memory control register
    DCD 0x90900000, 0x49000000,  1  ; USB Host register
    DCD 0x90A00000, 0x4A000000,  1  ; Interrupt Control register
    DCD 0x90B00000, 0x4B000000,  1  ; DMA control register
    DCD 0x90C00000, 0x4C000000,  1  ; Clock & Power register
    DCD 0x90D00000, 0x4D000000,  1  ; LCD control register
    DCD 0x90E00000, 0x4E000000,  1  ; NAND flash control register
    DCD 0x90F00000, 0x4F000000,  1  ; Camera control register 
    DCD 0x91000000, 0x50000000,  1  ; UART control register
    DCD 0x91100000, 0x51000000,  1  ; PWM timer register
    DCD 0x91200000, 0x52000000,  1  ; USB device register
    DCD 0x91300000, 0x53000000,  1  ; Watchdog Timer register
    DCD 0x91400000, 0x54000000,  1  ; IIC control register
    DCD 0x91500000, 0x55000000,  1  ; IIS control register
    DCD 0x91600000, 0x56000000,  1  ; I/O Port register
    DCD 0x91700000, 0x57000000,  1  ; RTC control register
    DCD 0x91800000, 0x58000000,  1  ; A/D convert register
    DCD 0x91900000, 0x59000000,  1  ; SPI register
    DCD 0x91A00000, 0x5A000000,  1  ; SD Interface register
    DCD 0x91B00000, 0x5B000000,  1  ; AC97 Interface register
    DCD 0x91C00000, 0x5C000000,  1  ; ATAPI register cs0 add by fly 
    DCD 0x91D00000, 0x5D000000,  1  ; ATAPI register cs1 add by fly 
    DCD 0x00000000, 0x00000000,  0  ; End of Table (MB MUST BE ZERO!)

    END
現在再來看這個NK對應的config.bib文件的內存分配

MEMORY

;NK 29MB
 NK   8C200000  01D00000  RAMIMAGE----注意這個8C200000剛好對應的是物理地址0x30200000!
;RAM 96MB
 RAM         8E000000  02000000  RAM


; Common RAM areas
 AUD_DMA      8c002000  00002000  RESERVED
 DRV_GLB   8c010000  00010000  RESERVED
 DBGSER_DMA  8c022000  00002000  RESERVED
 SER_DMA   8c024000  00002000  RESERVED
 IR_DMA   8c026000  00002000  RESERVED
 SD_DMA   8c028000  00008000  RESERVED
 EDBG   8c030000  00020000  RESERVED
 CAMERA   8c050000  00110000  RESERVED
 DISPLAY   8c160000  000A0000  RESERVED

注意紅色那行,由此可知,DNW不是隨便亂填就可以下載的,我想這個應該是唯一的,必須看內存映射表以及config.bib的設置。在這裏不想多舉例子,最後我想提醒大家看看這個config.bib的配置,各個部分是不能重疊的。

還有:在WINCE5.0下無法生成NK.nbo,後來在網上看到相關文章,才知道需要修改config.bib這個文件,需要添加如下參數:
ROMSTART
ROMWIDTH
ROMSIZE

三、(1)boot.bib中和config.bib定義的內存段有重複的地方,比如說EBOOT    8c038000  00020000  RAMIMAGE  和
                                                              EDBG    8c030000  00020000  RESERVED  這樣是否有影響,我看到有文章說,EBOOT鏡像在的地方不可以被重寫和覆蓋,但是,這裏卻重複了???

(2)按理說,congfig.bib中的定義和頭文件中定義的地址一致纔對,以下是我從loarder.h中截出來的,請看

// Nk Memory reigions defined in config.bib...
//
#define ROM_RAMIMAGE_START          0x8C100000
#define ROM_RAMIMAGE_SIZE          0x01000000

// Start addresses must match config.bib's RAMIMAGE
#define RAM_START                  0x8d100000
#define RAM_SIZE                    0x00F00000

按照config.bib的定義,以上應該是以下才對

// Nk Memory reigions defined in config.bib...
//
#define ROM_RAMIMAGE_START          8C200000
#define ROM_RAMIMAGE_SIZE          02400000

// Start addresses must match config.bib's RAMIMAGE
#define RAM_START                  8E600000 
#define RAM_SIZE                    01900000 

這個是我的理解錯誤,還是什麼的,請各位大俠指教,我的是wince5.0


          牛人回答


1. eboot所在的位置不能被覆蓋,是指flash中。ram中,當eboot啓動,加載了OS後,系統控制權就交給OS了,eboot就不會再被用到,所以其在RAM中的空間可以被再次利用。這次覆蓋是在OS啓動之後加載驅動時纔會產生。

2. OS的IMG你可以用UEdit打開看一下,前面有一部分是空白區域。這裏定義的起始地址,是對應了有效的可執行OS鏡像的開始。所以跟上面看到的有偏移。

-------------從這個牛人這裏可以看出,如果改動了config.bib,那麼loader.h也要跟着改動了,估計是這樣,不然啓動不了的。先試試

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ymzhou117/archive/2010/04/24/5524214.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章