移植的基本思路是:先編譯後調試
首先修改配置文件,如:Makefile 、 Kconfig等。這樣就可以進行內核的配置,然後可以編譯。
編譯完之後,開始從代碼上一步步的進行調試。
修改配置文件:
./arch/mips/Kconfig
這個構架相關的配置文件實則上就是主配置文件,作用是在make menuconfig的時候定義好一些宏,這些宏的作用就是為了加入平台相關的代碼而作的一些內核配置選擇。
首先作一個基本的認識:
menu/endmenu 表示主菜單中菜單選項的開始與結束,也就是說中間部分是在這個菜單選項被打開後顯示出來的。
choice/endchoice 表示菜單裡的某個子菜單,屬於某個子菜單是通過depends on A為指定(假設是A),也就是說這部分內容是依賴於A。
config 表示是一個條目,例如,config A。那麼配置完之後,會在auto.config文件中生成一個CONFIG_A的宏。
select 表示使能這個條目,或者說這個條目依賴於這個config。
depends on 表示這個config依賴於這個條目。
1)在menu “”Machine selection”添加:
config SOC32101_BOARDS
bool "Support for SOC CAS SOC3210 1 generic boards"
select SYS_HAS_CPU_SOC32101
select DMA_NONCOHERENT
select BOOT_ELF32
select BOARD_SCACHE
select HW_HAS_PCI
select ISA
select IRQ_CPU
select GENERIC_IOMAP
select SYS_SUPPORTS_32BIT_KERNEL
select SYS_SUPPORTS_64BIT_KERNEL
select SYS_SUPPORTS_LITTLE_ENDIAN
select SYS_SUPPORTS_HIGHMEM
help
ICT experimental board, which uses ict fpga north bridge
and soc32101 CPU.
choice
prompt "subsystem type"
depends on SOC32101_BOARDS
config SOC_SOC
bool "soc32101 gc soc support"
endchoice
2)在menu “CPU selection”中添加
choice
prompt "CPU type"
default CPU_SOC32101 #修改默認CPU
config CPU_SOC32101 #添加CPU
bool "SOC32101"
depends on SYS_HAS_CPU_SOC32101
select CPU_SUPPORTS_32BIT_KERNEL
... ...
endchoice
PS:通過上面兩步的配置,我們得到了三個宏:CONFIG_SOC32101_BOARDS、CONFIG_SOC_SOC、CONFIG_CPU_SOC32101,它們在./include/config/auto.conf裡定義。