将NXP官方Linux kernel移植到自己的开发板

NXP官方kernel编译

1、安装库

sudo apt-get install lzop
2、官网获取kernel包  linux-imx-4.1.15-2.1.0-g8a006db.tar.bz2
解压缩:
tar -vxjf linux-imx-4.1.15-2.1.0-g8a006db.tar.bz2
3、根目录创建脚本文件 mx6ull_alientek_emmc.sh
1 # ! /bin/sh
2 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf - distclean
3 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf - imx_v7_defconfig
4 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf - menuconfig
5 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf - all - j16
赋予运行权限
chmod 777  mx6ull_alientek_emmc.sh
./mx6ull_alientek_emmc.sh
编译的过程中会弹出kernel编译的图形配置界面,
按两下esc退出,继续编译。编译完成界面:
Linux 内核编译完成以后会在 arch/arm/boot 目录下生成 zImage 镜像文件。

NXP官方kernel移植到自己的开发板

将官方的kernel包重命名

mv linux-imx-rel_imx_4.1.15_2.1.0_ga linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek

修改顶层 Makefile

直接在顶层 Makefile 文件里面定义 ARCH CROSS_COMPILE 这两
个的变量值为 arm arm-linux-gnueabihf-

配置并编译 Linux 内核

make clean
make imx_v7_mfg_defconfig   //配置 Linux 内核
make -j16 //编译linux内核
Linux 内核编译完成以后会在 arch/arm/boot 目录下生成 zImage 镜像文件,如果使用设备树
的话还会在 arch/arm/boot/dts 目录下开发板对应的 .dtb( 设备树 ) 文件,比如 imx6ull-14x14-evk.dtb
就是 NXP 官方的 I.MX6ULL EVK 开发板对应的设备树文件。至此我们得到两个文件:
①、 Linux 内核镜像文件: zImage
②、 NXP 官方 I.MX6ULL EVK 开发板对应的设备树文件: imx6ull-14x14-evk.dtb

根文件系统缺失错误

Linux 内核启动以后是需要根文件系统的,根文件系统存在哪里是由 uboot bootargs 环境
变 量 指 定 , bootargs 会 传 递 给 Linux 内 核 作 为 命 令 行 参 数 。 比 如 上 一 小 节 设 置
root=/dev/mmcblk1p2 ,也就是说根文件系统存储在 /dev/mmcblk1p2 中,也就是 EMMC 的分区 2
中。
如果新做的板子,那么第一次上电是没有 根文件系统的
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

添加开发板默认配置文件

arch/arm/configs 目 录 下 的 imx_v7_mfg_defconfig 重 新 复 制 一 份 , 命 名 为
imx_alientek_emmc_defconfig ,命令如下:
cd arch/arm/configs
cp imx_v7_mfg_defconfig imx_alientek_emmc_defconfig
打开 imx_alientek_emmc_defconfig 文件,找到“ CONFIG_ARCH_MULTI_V6=y ”这一行,
将其屏蔽掉
因为 I.MX6ULL ARMV7 架构的,因此要屏蔽掉 V6 相关选项。
使用如下命令来配置正点原子 EMMC 版开发板对应的 Linux 内核了:
make imx_alientek_emmc_defconfig

添加开发板对应的设备树文件

1、进入目录 arch/arm/boot/dts 中,复制一
imx6ull-14x14-evk.dts ,然后将其重命名为 imx6ull-alientek-emmc.dts ,命令如下:
cd arch/arm/boot/dts
cp imx6ull-14x14-evk.dts imx6ull-alientek-emmc.dts/
2、修 改 文 件 arch/arm/boot/dts/Makefile , 找 到 “ dtb-
$(CONFIG_SOC_IMX6ULL) ”配置项,在此配置项中加入“ imx6ull-alientek-emmc.dtb
422 行为“ imx6ull-alientek-emmc.dtb ”,这样编译 Linux 的时候就可以从 imx6ull-alientek
emmc.dts 编译出 imx6ull-alientek-emmc.dtb 文件。

编译测试

创 建 一 个 编 译 脚 本 ,
imx6ull_alientek_emmc.sh ,脚本内容如下:
1 # ! /bin/sh
2 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf - distclean
3 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf
imx_alientek_emmc_defconfig
4 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf - menuconfig
5 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabihf - all - j16
赋予权限和执行
chmod 777 imx6ull_alientek_emmc.sh   //给予可执行权限
./imx6ull_alientek_emmc.sh

修改emm为8bit传输数据

Linux 内核驱动里面 EMMC 默认是 4 线模式的, 4 线模式肯定没有 8 线模式的速度快,所
以本节我们将 EMMC 的驱动修改为 8 线模式。修改方法很简单,直接修改设备树即可,打开文
imx6ull-alientek-emmc.dts ,找到如下所示内容
734 & usdhc2 {
735 pinctrl - names = "default" ;
736 pinctrl - 0 = <& pinctrl_usdhc2 >;
737 non - removable ;
738 status = "okay" ;
739 };
修改为如下内容:
734 & usdhc2 {
735 pinctrl - names = "default" , "state_100mhz" , "state_200mhz" ;
736 pinctrl - 0 = <& pinctrl_usdhc2_8bit >;
737 pinctrl - 1 = <& pinctrl_usdhc2_8bit_100mhz >;
738 pinctrl - 2 = <& pinctrl_usdhc2_8bit_200mhz >;
739 bus - width = < 8 >;
740 non - removable ;
741 status = "okay" ;
742 };
修改1.8V供电到3.3V供电
734 & usdhc2 {
735 pinctrl - names = "default" , "state_100mhz" , "state_200mhz" ;
736 pinctrl - 0 = <& pinctrl_usdhc2_8bit >;
737 pinctrl - 1 = <& pinctrl_usdhc2_8bit_100mhz >;
738 pinctrl - 2 = <& pinctrl_usdhc2_8bit_200mhz >;
739 bus - width = < 8 >;
740 non - removable ;
741 no-1-8-v ;
742 status = "okay" ;
743 };
741 行就是加入的“ no-1-8-v ”选项。
修改完成以后保存一下 imx6ull-alientek-emmc.dts ,然后使用命令“ make dtbs ”重新编译一
下设备树,编译完成以后使用新的设备树重启 Linux 系统即可。不需要重新编译linux内核。
  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 将Linux内核移植开发板需要进行以下步骤: 1. 了解开发板的硬件架构和规格,包括处理器类型、内存大小、存储设备等。 2. 下载适合开发板Linux内核源代码,并根据开发板的硬件架构进行配置。 3. 编译内核源代码,生成内核镜像文件。 4. 将内核镜像文件烧录到开发板的存储设备中。 5. 配置开发板的启动选项,使其能够启动Linux内核。 6. 测试Linux内核在开发板上的运行情况,包括网络、存储、输入输出等功能。 需要注意的是,不同的开发板和内核版本可能存在差异,需要根据具体情况进行调整和配置。 ### 回答2: Linux内核移植开发板是一项重要的任务,在嵌入式系统开发中扮演着至关重要的角色。随着Linux在嵌入式领域的应用,内核移植开发板的需求也越来越多。下面是关于如何移植Linux内核到开发板的简要介绍。 第一步,下载开发板的开发工具链。在选择开发工具链时,需要根据开发板的处理器选择相应的工具链,也要根据开发环境是否在Windows、Linux或MacOS下而选择相应的版本。开发工具链的安装和配置是移植内核的一个很重要的步骤。 第二步,下载Linux内核源码。可以从内核官网下载最新的内核源码,也可以从开发板厂商提供的SDK中获得。获取到内核源码后,需要进行解压。 第三步,配置内核。内核的配置是一个非常重要的步骤。可以通过make menuconfig命令进入内核配置界面进行配置。在配置中,需要设置硬件架构信息、设备驱动程序、文件系统等相关内容。通过配置内核,可以保证内核与硬件相容,保证系统稳定性和可靠性。 第四步,编译内核。在进行编译内核之前,需要进行交叉编译器的配置。具体的编译过程是先进行内核的编译,再进行模块的编译,最后进行根文件系统的制作。 第五步,烧写内核。在编译完内核后,需要将内核烧写进开发板中。可以通过JTAG或SD卡等方式将内核烧写到开发板中。烧写完成后,可以通过终端窗口连接到开发板的内核中进行调试和测试。 总之,移植Linux内核到开发板需要认真、细致地进行,具有一定的技术难度。但只有经过内核移植的嵌入式系统才能实现最优的嵌入式产品性能和功耗优化。 ### 回答3: 将Linux内核移植开发板是一项复杂而又重要的任务。Linux内核是一个庞大的系统,包含着许多不同的组件和模块,因此在进行内核移植时需要有一定的技术和经验。本文将简要介绍内核移植的过程。 首先要准备的是正确的开发工具和环境。通常,内核移植需要使用到交叉编译工具链和调试器,同时需要准备开发板的硬件和软件环境。通过正确的配置和安装,可以保证内核移植过程中所需要的工具和环境具有正确的版本和配置。 其次,需要对内核的源代码进行修改和编译。在进行内核移植时,需要对源代码进行一系列的修改,以适应开发板的硬件和软件环境。这些修改包括修改内核配置选项,编写硬件驱动程序,调整内存映射和中断控制等等。同时,对于不同的开发板,内核源代码的修改也会有所不同。完成修改后,需要使用交叉编译工具链编译内核源代码,生成可执行程序。 最后,将编译后的内核程序烧录到开发板中。烧录内核程序通常需要使用到一些特定的工具和操作,例如使用串口或特定的 flash 工具。通过正确的操作,可以将编译后的内核程序烧录到开发板中,并启动内核系统。在启动过程中,可以通过串口或其他接口进行调试和查看输出信息,以确保内核系统的正常启动。 总之,内核移植是一项需要耗费时间和精力的工作,需要具备丰富的经验和技术。通过正确的准备和操作,可以成功将 Linux 内核移植开发板上,为嵌入式系统的开发和应用提供强大的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值