SGMGH-44A2A-YR41內(nèi)核的移植bootloader初始化完系統(tǒng)硬件后,把Linux內(nèi)核從外部存儲介質(zhì)中導(dǎo)入內(nèi)存里,然后,就將控制權(quán)交給Linux內(nèi)核,由內(nèi)核來繼續(xù)完成系統(tǒng)的引導(dǎo)工作。 如果內(nèi)核里沒有支持用戶所使用的開發(fā)板,那么用戶就需要自己手工修改Linux的內(nèi)核,做一些相關(guān)的移植工作,要關(guān)注的是對開發(fā)板的硬件外設(shè)部分的處理,包括內(nèi)核對板子硬件基本信息的處理,板上硬件設(shè)備的初始化、中斷的分配等。
開發(fā)板級別的SGMGH-44A2A-YR41內(nèi)核移植zui方便的方法是利用內(nèi)核里已有的且與用戶使用的硬件平臺zui接近的開發(fā)板為模板,在此基礎(chǔ)上再做修改。我們使用的開發(fā)板與IBM walnut開發(fā)板類似,主要的外設(shè)包括硬盤、USB設(shè)備等都是利用PCI總線接口轉(zhuǎn)接(PCI轉(zhuǎn)IDE,PCI轉(zhuǎn)USB),所以內(nèi)核的移植工作主要有兩部分, 一為bootloader和內(nèi)核之間板子硬件信息的傳遞,二為PCI外設(shè)的初始化。
3.2.1 SGMGH-44A2A-YR41與Linux內(nèi)核的配合 U-BOOT在初始化完硬件設(shè)備后,把內(nèi)核裝入內(nèi)存,然后程序指針跳轉(zhuǎn)到內(nèi)核所在位置處的同時,會傳遞一些參數(shù)給內(nèi)核來使用,其中就包括有board_info數(shù)據(jù)結(jié)構(gòu),內(nèi)容包括板子的CPU主頻、SDRAM和flash大小、ip地址、MAC地址等,Linux會利用這些參數(shù)來初始化系統(tǒng)。但Linux內(nèi)核與U-BOOT的開發(fā)并不是同一個組織,要修改Linux內(nèi)核的相關(guān)部分來匹配U-BOOT傳遞過來的數(shù)據(jù),對于我們所使用的PowerPC,U-BOOT是利用五個通用寄存器(r3,r4,r5,r6,r7)來傳遞參數(shù),我們需要修改通過r3寄存器傳遞過來的board_info數(shù)據(jù)結(jié)構(gòu)(定義在Linux內(nèi)核里arch/ppc/platforms/cs2000.h),使之與U-BOOT源代碼里u-boot-1.1.1/include/asm-ppc/u-boot.h里定義的bd_info數(shù)據(jù)結(jié)構(gòu)內(nèi)容*,這樣內(nèi)核才不會對SGMGH-44A2A-YR41傳遞過來的board_info數(shù)據(jù)結(jié)構(gòu)進行錯誤解讀。
3.2.2 PCI外設(shè)初始化部分的修改 Linux內(nèi)核初始化PCI部分的主要過程為:掃描整個PCI總線,找到連接在總線上的所有設(shè)備,根據(jù)各PCI設(shè)備配置空間寄存器的信息,給各PCI設(shè)備統(tǒng)籌分配I/O空間,memory空間,以及IRQ中斷號。對于x86平臺,這部分工作其實已經(jīng)在BIOS部分做過,Linux內(nèi)核只需調(diào)用BIOS生成的配置即可,但對于我們嵌入式Linux系統(tǒng),沒有BIOS,這部分工作Linux內(nèi)核要自己做。而對于各個不同的開發(fā)板,需要補充到標準的PCI初始化代碼里的內(nèi)容有兩部分,一為PCI設(shè)備配置空間寄存器的訪問方式,另一為PCI中斷的配置。
Weidmuller Connect Power Power Supply 992889 0024 Used
EDYNE HYSON SEAL KIT TNK5.5 56-209-7000 NEW
Lot of 10 Fuji SZ-A31 SZ1A31 Electric Auxiliary Contact Block Used
CCS POWER SUPPLY PB-2430 USED NICE
FUJI 6RI30FE-080 A50L-2001-0232 FANUC POWER MODULE USED
FANUC A16B-1212-0030/02B DETECTOR ADAPTER BOARD USED
Norgren B07-201-M3EG FILTER REGULATOR USED NICE
Sola SDP 2-24-100T Power Supply Used Nice
CHRYSLER MOPAR 2.4L ENGINE TIMING COVER 04884409AA NEW IN BAG
GE FANUC IC693CHS391D 10-SLOT BASE USED
Lot of Bushing Maurey SH24MM (QTY 2)/Brwoning P1 24 MM (QTY3) New In Box
Allen Bradley 8000-VAD 900036 Rev-10 Circuit Board Used
ALLEN BRADLEY CIRCUIT BOARD UPX 635537 REV-2 USED
Control Concepts Islatrol Plus IC+105 Active Tracking Filter Used Nice
LOT OF 6 NEW BUSSMANN LPJ-1-6/10SP FUSE LPJ1610SP
co Light Transmitter LR NG 15 M New In Box
SIEMENS INTERFACE MODULE 3RK2400-1FE00-0AA2 USED
LOT OF 11 CLIMAX PREMIUM C-100-BO 1" ID STEEL SHAFT COLLAR BLACK OXIDE NEW
Allen Bradley Strobe Beacon Light 855E-24DN4 w/ 855E-BCB Series A Used
RITTAL ENCLOSURE INTERNAL THERMOSTAT SK3110 LOT OF 5 USED
LOT OF 3 LS MMS-32H 10 AMP MANUAL MOTOR STARTER USED
NUMATICS 152SS600K SOLENOID VALVE NEW IN BAG
Honeywell BZE6-2RQ Micro Switch Limit Switch BZE62RQ NEW IN BOX
Lot of 2 Kasuga TIFB740MH Interface Terminal Block Used Nice
Square D Molded Case Circuit Breaker FAL22060 Used Nice
ALLEN BRADLEY NEMA SIZE 1 REVERSING STARTER 120V COIL 505-BOD SERIES C USED
LOT OF 3 SIEMENS SIMATIC S7 INPUT MODULE 6ES7 131-4BB00-0AB0 WITH BASE USED NICE
?