iMX283编译linux源码

2019-07-13 06:38发布

1、介绍 学习嵌入式linux,工作中少不了添加各种功能、模块,这时就需要从新编译源码。 按照书本上或者网络上的教程来编译往往会遇到各种各样的问题,先总结一下配置编译linux的流程,以防止将来忘记,加深记忆。   2、配置内核 进入linux内核源码顶层目录输入: make ARCH=arm menuconfig 进入配置界面,根据需求选择功能。(Y选择、空格清空、M编译为module 配置结束后一定在配置界面末尾选中“Save an Alternate Configuration File”,最后退出选择yes保存。   3、编译内核 内核配置结束后,输出make命令即可开始编译内核。如果没有修改 Makefile 文件并指定ARCH CROSS_COMPILE 参数,则须在命令行中指定: make ARCH=arm CROSS_COMPILE=arm-linux- 这里我的arm gcc版本是3.4.1,这里踩了个大坑,原来我的arm gcc4.5.2的编译源码就会报错: WARNING: modpost: Found 5 section mismatch(es). To see full details build your kernel with: 'make CONFIG_DEBUG_SECTION_MISMATCH=y'   GEN     .version   CHK     include/generated/compile.h   UPD     include/generated/compile.h   CC      init/version.o   LD      init/built-in.o   LD      .tmp_vmlinux1 drivers/built-in.o: In function `flexcan_mb_bottom': hid-quirks.c:(.text+0x7951c): undefined reference to `__bswapsi2' drivers/built-in.o: In function `flexcan_mbm_isr': hid-quirks.c:(.text+0x79800): undefined reference to `__bswapsi2' drivers/built-in.o: In function `flexcan_mbm_xmit': hid-quirks.c:(.text+0x79ac4): undefined reference to `__bswapsi2' make: *** [.tmp_vmlinux1] 错误 1 arm gcc换成4.4.1的也一样报错,最后查到arm gcc 3.4.1linux2.6.35.3才是绝配。 这里编译可以加上-jN”多核编译,加快速度,这里我是虚拟机单核的故未加。   4、生成uImage 编译结束后要生成uImage,书本上网络上多种生成uImage方法,最简单的就是make后面加上uImage make ARCH=arm CROSS_COMPILE=arm-linux- uImage   5、编译内核模块 如果内核中有配置为的模块或者驱动,需要在编译内核后再通过 make modules 命
令编译这些模块或者驱动: make ARCH=arm CROSS_COMPILE=arm-linux- modules 编译得到.ko结尾的模块文件。   6、内核模块整合 编译完内核模块后,执行modules_install后,可将编译得到的全部模块安装到某一目录下,并且还会生成模块的依赖关系文件。 Make ARCH=arm CROSS_COMPILE=arm-linux- INSTALL_MOD_PATH=/home/vmuser/桌面/module_111 modules_install 这里在module_111文件夹下生成2.6.35.3-571-gcca29a0文件夹,复制这个文件夹到开发板/lib/modules文件夹下,覆盖原文件夹或先删除源文件夹。 这一步很重要,执行这一步可以免去内核加载模块的时候出现的各种问题。   7、iMX283烧录uImage 采用USB烧录,因为我原有就是linux系统故不擦除NAND Flash USB固件烧写软件用飞思卡尔官方提供的MfgTool 首先备份原有目录下的uImageMfgTool 1.6.2.055-ZLG140813ProfilesMX28 Linux UpdateOS FirmwarefilesuImage uImage_back 复制生成的uImage到此MfgTool 1.6.2.055-ZLG140813ProfilesMX28 Linux UpdateOS Firmwarefiles目录下。 (1) EasyARM-i.MX283A 设置为 USB 启动方式( 使用短路器短接 JP4 JP6
跳线,保持 JP1 JP2 JP3 JP5 跳线的断开);
2)使用 MiscroUSB 线缆连接 EasyARM-i.MX283A USB OTG 接口和主机。 打开MfgTool.exe,带PC识别后点击主菜单中的 Options→Configuration…菜单项,打开 MfgTool 的配置界面。 [图片上传不上] 按照图中选择: [图片上传不上]
点击开始,待状态窗口显示操作完成后拔掉电源,恢复原样。 文档上说该软件不支持Windows 8,回去试一试Windows10是否能用。   8、总结 上述为iMX283平台配置内核、编译内核、编译模块、烧写内核的全过程。