news 2026/9/4 7:06:44

Imx6ull内核开发环境搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Imx6ull内核开发环境搭建
  • 虚拟机环境
  1. 搭建虚拟机环境

电脑型号:

surface pro6 i5-8250U 8G内存256G硬盘

WIN11(先用官方镜像U盘重装家庭版,然后升级专业版):

版本 Windows 11 专业版

版本号 25H2

安装日期 ‎2026/‎8/‎24

操作系统版本 26200.9168

功能包 Windows 功能体验包 1000.26100.344.0

虚拟机版本:

WSL 版本: 2.7.12.0

内核版本: 6.18.33.2-2

WSLg 版本: 1.0.73.2

MSRDC 版本: 1.2.7214

Direct3D 版本: 1.611.1-81528511

DXCore 版本: 10.0.26100.1-240331-1435.ge-release

Windows: 10.0.26200.9168

ubuntu版本:22.04

WSL网络配置 Mirrored,这样局域网的开发板可以直接访问WSL-ubuntu的服务器

2. 搭建tftp服务器

sudo apt-get install tftpd-hpa

sudo vi /etc/default/tftpd-hpa 后添加:TFTP_DIRECTORY="/home/lian/tftpboot"

(关闭防火墙,对应目录自己创建,权限放宽,把zImage和dtb拷进来)

sudo service tftpd-hpa restart 启动

3. 搭建nfs服务器

sudo apt-get install nfs-kernel-server

sudo vi /etc/exports 添加 /home/lian/nfs *(rw,sync,no_root_squash) 前面是自己的nfs目录,记得把目录权限打开;

4. 搭建编译环境

sudo apt install -y make bison flex libssl-dev lzop libncurses5-dev gcc

  • 交叉工具

https://mirrors.cstcloud.cn/armbian-releases/_toolchain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

TOOCHAIN="/home/lian/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin"

export PATH=$PATH:$TOOCHAIN

注意这里要用绝对路径不然make 找不到

  • Uboot

未测试

git clone GitHub - nxp-imx/uboot-imx: i.MX U-Boot · GitHub -b rel_imx_4.1.15_2.1.0_ga

make mx6ull_14x14_evk_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

uboot中相关配置如下:(我是用imx6ull直连电脑,电脑IP设置为192.168.3.9)

serverip=192.168.3.9

netmask=255.255.255.0

ipaddr=192.168.3.99

bootargs=console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.3.9:/home/lian/nfs,vers=3,proto=tcp ip=192.168.3.99::192.168.3.1:255.255.255.0::eth0:off rootwait

bootcmd=tftp 80800000 zImage; tftp 83800000 imx6ull-14x14-evk.dtb; bootz 80800000 - 83800000

  • Linux

git clone GitHub - nxp-imx/linux-imx: i.MX Linux kernel · GitHub -b rel_imx_4.1.15_2.1.0_ga

make ARCH=arm imx_v7_defconfig

make ARCH=arm menuconfig 确认自己开发的芯片:

System Type ---> [*] Freescale i.MX family ---> [*] i.MX6 ULL support

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

编译报错重复yylloc,把其中一个加extern即可

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

cp arch/arm/boot/zImage /home/lian/tftpboot/

cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb /home/lian/tftpboot/

  • 文件系统

https://busybox.net/downloads/busybox-1.35.0.tar.bz2

make menuconfig:

Settings ---> --- Build Options () Cross compiler prefix (NEW)

然后输入arm-linux-gnueabihf-

Settings ---> --- Build Options [*] Build static binary (no shared libs) 静态库链接

make -j12

make install

cp _install/* ~/nfs/ -a

cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib ~/nfs/ -a //这是交叉编译工具的库

mkdir dev proc mnt sys tmp root

mkdir etc/init.d -p

vim etc/init.d/rcS 输入以下内容:

#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib export PATH LD_LIBRARY_PATH mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s

chmod 777 etc/init.d/rcS

vim etc/fstab

# proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0

vim etc/inittab

::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -a

vim etc/profile

#!/bin/sh export HOSTNAME=SmartCar export USER=root export HOME=root export PS1="[$USER@$HOSTNAME \W]\# " PATH=/bin:/sbin:/usr/bin:/usr/sbin LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH export PATH LD_LIBRARY_PATH

  • Vscode开发Linux环境搭建

通过vscode打开WSL的内核目录

VSCODE中安装clangd插件,并且弹窗提醒安装WSL的clangd插件

在wsl中安装bear

make clean

bear -- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

  • 驱动编译脚本

ifeq($(KERNELRELEASE),)

X86_KERNEL_BUILD= /1ib/modules/$(shelluname -r)/build

ARM_KERNEL_BUILD= /home/lian/kernel/linux-imx

MODULE_PATH=$(shellpwd)

arm_module:

make -C$(ARM_KERNEL_BUILD)M=$(MODULE_PATH)modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

cp myDriver.ko /home/lian/nfs/test/

x86_module:

make -C$(X86_KERNEL_BUILD)M=$(MODULE_PATH)mOdules

clean:

make -C$(X86_KERNEL_BUILD)M=$(MODULE_PATH)clean

else

obj-m = myDriver.o

endif

解释:ARM_KERNEL_BUILD是Linux源码目录,myDriver对应驱动代码myDriver.c

输入make arm_module就会编译驱动代码,并且拷贝到/home/lian/nfs/test/目录

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 7:06:30

模拟IC版图验证实战:DRC/LVS常见错误排查与Calibre修复指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 7:04:14

嵌入式调试笔记<7>MODBUS协议详解与调试实战

嵌入式调试笔记 一、MAX13487芯片产生数据回环问题 二、Keil在线调试过程中遇到的问题 三、使用VScdoe开发STM32单片机 四、VANTPEK可调电源接负载电压被拉低 五、用CD74HC4067扩展16路ADC采集及两个调试坑 六、4档旋转开关省IO采集,与Modbus中float的拆分还原 七、…

作者头像 李华
网站建设 2026/9/4 7:03:34

Mediapipe实时健康监护系统:从算法检测到行为干预的完整闭环

简介:这是一份面向计算机及相关专业本科生的优质课程设计资源,聚焦于基于摄像头的实时健康监护场景,解决久坐办公或学习中的疲劳状态识别与不良坐姿提醒问题。资源包含9个文件(4个核心Python模块、1个配置文件yml、1个依赖说明txt…

作者头像 李华
网站建设 2026/9/4 7:02:33

TM7711高精度滤波算法实战:从厨房秤到嵌入式信号处理

简介:本资源是一份面向嵌入式开发工程师与IoT设备开发者的技术实践代码包,聚焦TM7711高精度称重传感器在厨房秤场景下的0.1克级稳定读数实现问题。针对传感器原始数据易受噪声干扰、内码跳动大于5等典型工程痛点,提供经实际验证的C语言滤波算…

作者头像 李华
网站建设 2026/9/4 7:00:01

51单片机智能电饭锅控制逻辑设计与工程落地

简介:本资源是一套面向嵌入式初学者与电子类课程设计者的51单片机实践项目,聚焦智能电饭锅控制系统开发,覆盖硬件仿真、软件编程与闭环控制逻辑实现全过程。压缩包共45个文件,含5个C源程序(主控逻辑与传感器驱动&#…

作者头像 李华