iMX283编译linux源码

3 篇文章 0 订阅

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、编译内核模块

如果内核中有配置为<M>的模块或者驱动,需要在编译内核后再通过 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-ZLG140813\Profiles\MX28 Linux Update\OS Firmware\files\uImage uImage_back

复制生成的uImage到此MfgTool 1.6.2.055-ZLG140813\Profiles\MX28 Linux Update\OS Firmware\files目录下。

(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平台配置内核、编译内核、编译模块、烧写内核的全过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值