好久没捣鼓linux 了, 参照下边的文章
http://blog.csdn.net/zbffff/article/details/12029105
尝试了下移植linux 内核。
自己的操作步骤是:(大致是按照参考文章操作的)
一.修改平台输入时钟和机器码
修改内核源码arch/arm/mach-s3c2440/mach-smdk2440.c”文件的大概162行或163行,把16.9344MHz改为12MHz,因为TQ2440使用的就是12MHz的外部时钟源输入,即把16934400改为12000000。
在TQ2440使用的uboot中设定了机器码为168,所以内核这里需要修改机器码,否则会
出现不能启动的情况。机器码保存在内核源码的“arch/arm/tools/mach-types”文件中,在大概379行,把
原来的362改为168保存即可。
二.利用默认配置单做配置单
#make menuconfig ARCH=arm CROSS_COMPILE=arm-sdutyl-linux-gnueabi-
在“Load an Alternate Configuration File”回车,输入arch/arm/configs/s3c2410_defconfig,点OK
然后返回到配置界面,进入到“SystemType”选项下的配置单:
然后配置各个平台如下所示
SystemType --->
S3C2410Machines --->
[*]SMDK2410/A9M2410
[]IPAQH1940
[]AcerN30
[]SimtecElectronicsBAST(EB2410ITX)
[]NexVisionOTOMBoard
[]AMLM5900Series
[]ThorcomVR1000
[]QT2410
S3C2412Machines --->
[]SMDK2413
[]SMDK2412
[]VMSTMS
S3C2440Machines --->
[]SimtecElectronicsANUBIS
[]SimtecIM2440D20(OSIRIS) module
[]HPiPAQrx3715
[*]SMDK2440
[]NexVision NEXCODER 2440 Light Board
[*]SMDK2440withS3C2440CPUmodule
S3C2442Machines --->
[]SMDM2440withS3C2442CPUmodule
S3C2443Machines --->
[]SMDK2443
配置完毕这个地方后,退回到最初的配置单。
在配置单中添加自己的信息
然后配置选项,配置如下
(Generalsetup --->
[*]Promptfordevelopmentand/orincompletecode/drivers
(-Sdutyl)Localversion-appendtokernelrelease
[*]SystemVIPC
(17)Kernellogbuffersize(16=>64KB,17=>128KB)
-*-Namespacessupport
ChooseSLABallocator(SLUB(UnqueuedAllocator)) --->
选择是否支持EEAABBII
然后对是否支持EABI进行选择,配置如下:
KernelFeatures --->
Memorysplit(3G/1Guser/kernelsplit) --->
[]PreemptibleKernel(EXPERIMENTAL)
[*]UsetheARMEABItocompilethekernel
[*] AllowoldABIbinariestorunwiththiskernel(EXPERIMENTAL)
[]HighMemory Support(EXPERIMENTAL)
Memorymodel(FlatMemory) --->
[]AddLRUlisttotracknon-evictablepages
(4096)Lowaddressspacetoprotectfromuserallocation
说明:如果您使用的4.3.3的编译器(也就是支出EABI的编译器),
那么就选中它;如果您使用3.4.5或以下的编译器,那么就不要选中它。
然后保存自己的配置单为.config
三、编译(此时编译出来的内核仅能引导,后边还有驱动的移植, 明天有时间再弄)
#make menuconfig ARCH=arm CROSS_COMPILE=arm-sdutyl-linux-gnueabi-
四、下载编译出来的zImage 到内核,可以加载内核,但是驱动什么的都还没有移植。