一。
1.准备micro2440原理图及中文数据手册如下:
2.本人使用的LINUX2.6.32.2版本的内核,从网络中直接下载,在ubuntu系统中直接下载使用如下命令:
wget
3.使用tar xvzf linux-2.6.32.2.tar.gz解压缩
4.修改总目录下的makefile文件设定编译工具链接及内核默认的平台为ARM平台,
原:
改:(注:CROSS_COMPILE后面的内容是编译器在系统中的绝对路径,不要搞错)
5.验证LINUX的编译是否能够正常通过,如果通过不了则需要继续修改上面步骤的内容直到正确为止
使用如下命令进行验证:make s3c2410_defconfig然后在make
二。建立自己的目标平台:
1.机器码:(注:内核在启动时,是通过bootloader传入的机器码(MACH_TYPE)确定应启动哪种目标平台。将自己创建平台的机器码添加
到linux-2.6.32.2/arch/arm/tools/mach_types文件中。在此因为本人现在工作项目中使用了TI的DAVINCI系列芯片也在此文件中找到了)有
图有真相请见:
注意如果bootloader传入的机器码跟内核的机器码不匹配,就会出现系统报错。
那么U- boot的机器码定义在哪里呢?如下:u-boot/include/asm-arm/mach-types.h,由此可以想到我前几天在移植uboot时报错说什么机器码
第一次使用,没有被定义,原来原因在这里,LINUX我初学所以呵呵出这样的问题太正常了,还得努力多实践啊。u-boot自2009.06 版本
开始,也已经加入MINI2440的机器码定义。在此就先暂且使用MINI2440了,等全部试验一遍后自己改个其他名字的板子试验一下,毕竟
现在如果使用全新的名字定义的话,还得涉及到重新编译u-boot,先解决掉当前任务再逐步深入吧。
因国外爱好者为mini2440移植添加的主要内容,我们不使用它将他直接删除 路径为:linux-2.6.32.2/arch/arm/mach-s3c2440/mach-mini2440.c,然后再复制一份mach-smdk2440.c改名字为mach-mini2440.c.
找到MACHINE_START,将里面的内容修改为:"MINI2440,"FRIENDLYARM MINI2440 development board""
2.修改时钟源频率
在上面文件中查找160行将原先的晶振改为12000000
3.从SMDK2440到MINI2440
将mach-mini2440.c中所有的smdk2440字样改为mini2440,可以使用gedit软件实现批处理功能。另外将smdk_machine_init()注释掉。
4.编译测试
make mini2440_defconfig
make zImage
重新编译通过的zImage位于arch/arm/boot目录中。
使用超级终端及DNW配合下载zImage文件 选择K下载LINUX内核,下载完毕后再按b运行系统,因为大多数硬件驱动还没有添加所以
系统运行到半截就不运行了,下篇做下一步工作。