嵌入式linux内核配置和编译

2019-07-12 19:52发布

编译环境: 修改linux源代码顶层目录的Makefile,找到下面三项并修改: arch/arm/configs/目录下找到一个xxx_defconfig文件(型号跟你自己的硬件相近),将其拷贝到顶层目录下,并改名为.config 执行make menuconfig 后保存,切记要保存 执行make uImage  在编译过程会出现 error:"mkimage" command not found - U-Boot images will not be built,提示说找不到mkimage命令。mkimage是用来生成uImage的(即在vmlinux上添加头文件),如何解决:找到你uboot的源码路径,在tools目录下有mkimage,执行 cp mkimage /bin/,重新编译 编译成功,用tftp下载到开发板上,运行,出现Error: unrecognized/unsupported machine ID (r1 = 0x000009d8).  无法匹配机器ID,uboot传进去的是tiny6410的机器ID,而现在的配置文件是使用s3c6400_defconfig的配置文件,所以无法匹配,在错误信息下,提示了内核支持的机器ID: 可以看出内核还是支持很多机器ID的,但是没有自己想要的。内核在启动时,是通过bootloader传入的机器码(MACH_TYPE)确定应启动哪种目标平台的. 解决方法:进入linux内核源代码,执行vim arch/arm/mach-s3c64xx/mach-smdk6410.c,找到MACHINE_START(SMDK6410, "SMDK6410")更改为 MACHINE_START(MINI6410, "MINI6410") ,再次编译下载,内核能成功启动。