關於從NAND FLASH啟動
來源:互聯網
上載者:User
今天將NAND 全部FORMAT以後,重新用NOR中的UBOOT向NAND中燒寫UBOOT,按道理應該是和NOR 中的UBOOT介面一樣才對。燒寫進去以後發現根本不是,一直提示如下資訊:##### EmbedSky BIOS for SKY2440/TQ2440 #####
Press Space key to Download Mode !
Booting Linux ...
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kern
el to SDRAM done,Warning: this binary is not compressed linux kernel image
zImage magic = 0xffffffff
NOW, Booting Linux......
undefined instruction
pc : [<30f0c550>] lr : [<33d81760>]
sp : 33d3ded4 ip : c000107e fp : bfefdfdd
r10: ffffffff r9 : fbfcb3dc r8 : 33d3ffdc
r7 : fbfbf725 r6 : 00000000 r5 : 000000a8 r4 : 30008000
r3 : c000107c r2 : 30008000 r1 : 000000a8 r0 : 00000000
Flags: Nzcv IRQs off FIQs off Mode SVC_32
Resetting CPU ...*** Warning - bad CRC or NAND, using default environment ##### EmbedSky BIOS for SKY2440/TQ2440 #####
Press Space key to Download Mode !
Booting Linux ...
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kern
el to SDRAM done,Warning: this binary is not compressed linux kernel image
zImage magic = 0xffffffff
NOW, Booting Linux......
undefined instruction
pc : [<30f0c550>] lr : [<33d81760>]
sp : 33d3ded4 ip : c000107e fp : bfefdfdd
r10: ffffffff r9 : fbfcb3dc r8 : 33d3ffdc
r7 : fbfbf725 r6 : 00000000 r5 : 000000a8 r4 : 30008000
r3 : c000107c r2 : 30008000 r1 : 000000a8 r0 : 00000000
Flags: Nzcv IRQs off FIQs off Mode SVC_32
Resetting CPU ...*** Warning - bad CRC or NAND, using default environment怎麼會這樣呢,同樣燒寫的是UBOOT,為什麼會不不同呢,後來一問群主,他說是因為沒有燒寫核心。我說我是沒有燒寫核心啊,我剛才把NAND全格了,然後燒寫了UBOOT,為什麼不一樣。樓主說開機按SPACE鍵,就一樣了,因為NAND FLASH開機預設的是8:boot system,提示的資訊就說找不到核心。這下我明白了。我又做了一個實驗,從NOR啟動,按後選8:boots system 結果個剛才的現象一樣。再看看啟動時的提示資訊:Enter your selection: 8
Start Linux ...
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kern
el to SDRAM done,NOW, Booting Linux......
Uncompressing Linux.............................................................
............................................................. done, booting the
kernel.無論從哪種方式啟動,都是從ox00200000這個地方把kernel(核心)複製到SDRAM的0x30008000中去,(SDRAM的其真實位址是0x30000000)然後開始啟動核心。