移植的基本思路是:先编译后调试
首先修改配置文件,如: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里定义。