1,在系统添加对ARM的支持:
进入内核源码顶层目录,修改Makefile文件 大概193行 ARCH ?=(SUBARCH) 和 194 行 CRSS_COMPILE ?=
修改为:ARCH =arm 和 CRSS_COMPILE =arm-linux- 保存退出.
当然也可以第一次使用make menuconfig 命令时 增加如下参数代替前面的步骤 make ARCH =arm CRSS_COMPILE =arm-linux- menuconfig .
2,修改平台输入时钟:
修改内核源码 arch/arm/mach-s3c2440/mach-smdk2440.c 的163行附近 把16.9344MHz 改为12MHz .
3,制作自己板子的配置单:
在源码顶层 make menuconfig 进入配置菜单界面,在配置菜单选择“Load an Alternate Configuration File”
可以在别人配置单的基础上配置,比如输入 arch/arm/configs/s3c2410_defconfig 回车 在System Type 选项下配置2440平台相关.
可以在General setup-->Local ersion -append kernel release 加入自己的信息 .
4,选择是否支持EABI :
Kernel Features ---> 选择 Use the ARM EABI to compile the kernel
选择 Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
4.3.3编译器可以,刚才我测试的时候使用3.4.5的编译器就出错,所以3.4.5的编译器 不要选择这两项.
别的配置太多,就不列举了.
5,修改机器码:
Uboot 设定机器码为168,机器码保存在内核源码 arch/arm/tools/mach-types 文件的大概379行 把S3C2440对应的362改为168.
为什么要改:因为arch/arm/mach-s3c2440/mach-smdk2440.c文件的MACHINE_START(S3C2440,"SMDK2440");的关键字S3C2440,这里的S3C2440
就是机器码所在的位置,我们可以自己修改Uboot的机器码再来修改内核的机器码.
6,保存配置单:
最后选择:Save an Alternate Configuration File 保存为 .config文件后,退出配置单.
make distclean . 使用别人配置好的配置文件,建议复制为 .config文件使用.
7,编译镜像:
输入 #make zImage 编译完毕后会在 arch/arm/boot 目录下生成zImage镜像,然后可以将其烧写到开发板中.
为了方便,可以在arch/arm/boot 下的Makefile58行增加如下内容,将zImage拷贝到内核根目录下:@cp -f arch/arm/boot /zImage zImage.bin.
同时修改内核根目录下的Makefile 1255行的-type f -print | xargs rm -f 后添加如下内容 rm -f zImage.bin.
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzQDM48VMzkDNzkDN1MTMvwFOw8CXyEjMxAjMvw1ckF2bsBXdvwFdl5mLuR2cj5Set1yZtl2Lc9CX6MHc0RHaiojIsJye.png)