移植linux内核到i.MX6ULL过程 本文描述移植NXP官方 linux 5.4 内核到i.MX6ULL开发板。 一、NXP官方linux内核 1. 下载 NXP官方linux仓库地址为:https://github.com/Freescale/linux-fslc/tree/5.4-2.1.x-imx。 选择该分支下载zip包即可,不要整个仓库下载,太大了:
2. 编译 安装库: 设置临时环境变量(编译器版本为7.5.0): 清理构建: 查看arch/arm/configs目录下imx6ull相关的单板:
配置: 配置好之后编译: 编译成功后,进入目录可以看到编译出的linux镜像,在dts目录下是编译出的设备树文件,找找evk的设备树:
3. 下载到开发板 将内核镜像和设备树文件拷贝到tftp根目录中: 接下来在开发板上进入uboot,确保bootargs环境变量的值如下: 加载这两个文件: 启动内核: 4. 启动结果分析 因为EMMC中有出厂烧写的文件系统,所以Linux内核成功挂载了根文件系统,启动成功,但是也有一些问题:LCD屏幕无显示;网卡eth0报错,但是可以到ip,可以ping通主机; 接下来,我们就基于NXP官方提供的linux,针对正点原子imx6ull开发板进行一些配置参数的修改,修复LCD和网络问题。
二、移植linux内核 1. 新建单板 (1)新建单板配置文件 进入 arch/arm/configs 目录,复制一份新的单板文件: (2)新建设备树文件 进入 arch/arm/boot/dts 目录,复制一份新的设备树文件: 查看该文件,依赖于evk板子的设备树,需要将该文件也复制一份出来:
再查看有没有依赖,竟然还有一级:
修改依赖:
将该文件也复制一份出来: 接着修改同级目录下的Makefile,添加新建的文件:
(3)编译测试 使用新的内核和设备树启动,方便起见,设个环境变量,下次直接用命令启动: 启动: 内核启动没啥问题。 2. 修改网络驱动 (1)修改LAN8720A的复位引脚驱动 修改设备树文件,搜索 GPIO5_IO07、GPIO5_IO08,发现已被spi4使用,删除这两行后,代码如下: 接着再找到spi4,删除与这两个GPIO相关的代码,删除后如下: 接着将复位引脚加入到 pinctrl_enet1 节点的描述中:
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去! 无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。 这里找小助理0领取:
接着将复位引脚加入到 pinctrl_enet2 的代码中:
接着搜索fec1和fec2节点,添加网络驱动复位引脚使用,添加的代码如下:
(2)修改LAN8720的PHY地址 修改mdio节点中的地址:
至此,设备树修改完成。 (3)修改fec_main.c文件 修改文件,找到函数fec_probe,在函数开头添加如下代码: (4)修改PHY驱动源码 修改文件,添加两个头文件: 然后找到函数,修改之后如下: 此时编译内核可以通过。 (5)配置Linux内核,使能LAN8720驱动 使能:
保存到.config,然后退出。 (6)编译测试 重新编译内核,使用新的内核和设备树启动,测试网络是否正常。
ping主机测试:
至此,网络驱动修改成功。 3. 修改LCD驱动 本文用的是正点原子 7′ RGB屏幕,分辨率1024*600,设备树中找到lcdif节点的补充描述,改一下屏幕参数和时序即可:
重新编译设备树,启动,可以看到LCD左上角显示企鹅logo:
在uboot的bootargs参数中加入,即可新注册一个终端到LCD:
———— END ———— 文章链接:移植linux内核到i.MX6ULL过程转载自:嵌入式Linux文章来源:Mculover666,作者mculover666文章链接:移植linux内核到i.MX6ULL过程 版权申明:本文来源于网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/60000.html