今天,自己又重新移植了一遍内核。感受颇多,原本已经烂熟于心的东西,忽然都不明白了。
看来,随着时间的增长,人们看东西的视角也不同。原本是本着一颗,做东西的心情,移植
成功就好,好使就行,不会太关注,为什么,怎么来的。
今天移植想的问题却又不一样了。好吧,那就详细的讨论一下吧。
看本文之前,建议,先自己好好的做一遍内核移植
http://blog.csdn.net/zhaole20094463/article/details/6882266
按照上面链接写的,试一试,否则,看这篇博客就会云里雾里了。
好吧,我们来总结一下。
在上文的移植中,我们总共修改了这样几个文件。
Makefile 添加对arm的支持
arch/arm/mach-s3c2440/mach-smdk2440.c 修改平台时钟
arch/arm/tools/mach-types 修改机器码
arch/arm/plat-s3c24xx/commond-smdk.c 移植nandflash驱动
当然 我们还忘了一个最重要的,.config
也就是这一步
cp arch/arm/configs/s3c2410_defconfig .config 复制一下对于S3C2410/2440的通用配置
我在写上面博客的时候,对移植理解还不深,就是记下了一个成功的方法。
所以把这一步放在了很后面的步骤,不过现在看来,恰恰错了。
应该把这一步放在首位。现在我们来讨论一下,为什么要放在首位。
我们在配置内核的时候,要执行make menuconfig
这个命令调用的文件便是.config。它打开了我们移植内核的配置单。
长久以来,我们都在迷惑一些问题那就是为什么我们要修改以上几个文件中的内容,为什么修改别的不行。
这些问题在.config 文件中找到了答案。
正如我以上所说,我们在移植内核的时候先要进行配置,选择配置单,也就是make menuconfig的操作。我们
先进到内核源码中看看。
arch/arm/plat-s3c24xx/commond-smdk.c 移植nandflash驱动
先说这一项,进入到arch/arm/plat-s3c2440/目录
打开该目录下面的Makefile
在最后一行查看到有这样一行代码
obj-$(CONFIG_MACH_SMDK)+= common-smdk.o
这句话的意思是: