iMX8MM linux5.15.32移植
iMX8MM linux5.15.32移植
- 1. 添加板子
- 1.1 添加配置文件
- 1.2 添加设备树
- 2. 修改设备树
- 2.1 修改网卡
- 2.2 修改SD卡
- 2.3 关闭屏幕
- 3. 编译验证
- 3.1 编译
- 3.2 验证
- 4. 总结
我移植的板子是讯为i.MX8MM开发板,参考板为官方 8MMINILPD4-EVK开发板。
- iMX8MM uboot2021.04 linux5.15.32移植
- iMX8MM启动流程
- iMX8MM u-boot2021.04移植
- iMX8MM linux5.15.32移植
- iMX8MM buildroot-2022.02.5构建根文件系统
1. 添加板子
Linux移植我们只需要添加配置文件和设备树。
1.1 添加配置文件
官方是相同arm架构的板子公用一个配置文件,自己板子的配置文件最好单独存一份,每次修改配置最好保存,在源码目录下执行下列命令创建我们自己板子的配置文件。
$ cd arch/arm64/configs/
$ cp imx_v8_defconfig imx8mm_topeet_defconfig
1.2 添加设备树
复制参考板的设备树文件,在源码目录下执行下列命令创建我们自己板子的设备树文件。
$ cd arch/arm64/boot/dts/freescale/
$ cp imx8mm-evk.dts imx8mm-topeet.dts
$ cp imx8mm-evk.dtsi imx8mm-topeet.dtsi
修改arch/arm64/boot/dts/freescale/imx8mm-topeet.dts文件
// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dts#include "imx8mm-evk.dtsi"
// 改为
#include "imx8mm-topeet.dtsi"//根节点下的这两个属性改为
/ {model = "FSL i.MX8MM TOPEET board";compatible = "fsl,imx8mm-topeet", "fsl,imx8mm";
};
修改arch/arm64/boot/dts/freescale/Makefile文件
# 在文件最后加下面一行
dtb-$(CONFIG_ARCH_MXC) += imx8mm-topeet.dtb
2. 修改设备树
这部分和uboot一样,修改网卡和SD卡的一个引脚。
2.1 修改网卡
讯为i.MX8MM开发板使用的phy芯片和官方iMX8MM EVK开发板是同系列,只有设计上略有不同。讯为i.MX8MM开发板的phy芯片复位引脚接到了GPIO2_IO10上,所以要对phy配置复位引脚。因为这个引脚官方开发板被usdhc1用在了WiFi上,我们先不使用WiFi把usdhc1失能掉。
// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dtsi&iomuxc {pinctrl_fec1: fec1grp {fsl,pins = </* MX8MM_IOMUXC_SAI2_RXC_GPIO4_IO22 0x19 */MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x19>;};
};
// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dts&usdhc1 {// status这个属性改为disabledstatus = "disabled";
};
2.2 修改SD卡
讯为i.MX8MM开发板和官方iMX8MM EVK开发板SD卡,只有SD2_DET引脚不同。讯为i.MX8MM开发板SD2_DET引脚接到了GPIO2_IO12上,所以要对SD配置CD引脚。
// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dtsi&usdhc2 {// 更改cd引脚属性cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
};&iomuxc {pinctrl_usdhc2_gpio: usdhc2grpgpiogrp {fsl,pins = <MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x1c4>;};
};
2.3 关闭屏幕
因为我没有屏幕,所以需要失能屏幕。
// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dtsi&lcdif {status = "disabled";
};&mipi_dsi {status = "disabled";
};
3. 编译验证
3.1 编译
利用之前安装的工具链,执行下列命令完成编译。
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- imx8mm_topeet_defconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j12
3.2 验证
进入uboot命令行设置服务器地址,并保存。
=> setenv serverip 192.168.0.100
=> saveenv
把arch/arm64/boot/Image
和arch/arm64/boot/dts/freescale/imx8mm-topeet.dtb
复制到tftp服务器文件夹中,重启开发板会自动下载linux镜像和设备树并启动。
linux启动成功,无法挂载NFS文件系统。
4. 总结
linux移植就完成了,下面将利用buildroot构建一个根文件系统。本文仅供学习参考,如有问题欢迎指正。
移植源码获取:
git clone https://github.com/Sonboy97/linux.git -b imx
iMX8MM linux5.15.32移植相关推荐
- 基于linux5.15.5的IMX 参考手册 --- 12
基于linux5.15.5的IMX 参考手册 - 12 6.4.5 EPDC(电泳显示控制器接口) 6.4.5.1介绍 电泳显示控制器(EPDC)是一种直接驱动有源矩阵EPD控制器,设计用于驱动支持多 ...
- 基于linux5.15.5的IMX 参考手册 --- 10
基于linux5.15.5的IMX 参考手册 - 10 6.3显示控制器 6.3.1 DPU (Display Processing Unit) 6.3.1.1介绍 显示处理单元(DPU)旨在支持视频 ...
- 基于linux5.15.5的IMX 参考手册 --- 9
基于linux5.15.5的IMX 参考手册 - 9 第六章 视频 6.1捕捉概述 6.1.1 介绍 i.MX捕获驱动程序支持通过V4L2接口与相机传感器控制器和接口.应用程序不能直接使用相机驱动程序 ...
- davinci DM365-DM368开发攻略—linux-2.6.32移植
本文最始出自http://www.360doc.com/content/12/0318/16/532901_195392228.shtml 一.介绍linux-2.6.32: Linux-2.6.32 ...
- ubuntu20 下从linux 5.14.0-1045 源码编译 linux-5.15.56 内核
ubuntu20 下从linux 5.14.0-1045 源码编译 linux-5.15.56 内核 原以为会是很简单的事,结果还是颇废一番周折.很多情况是没有遇到过得.所以这里记录一下. 问题记录的 ...
- STM32CUBEIDE(15)----移植兆易创新SPI Nor Flash之GD25Q64Flash
spi概述 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的 ...
- 基于linux5.15.5的IMX 参考手册 ---20
基于linux5.15.5的IMX 参考手册 - 20 10.2.3 MMDC 10.2.3.1测试名称 •mmdc2 10.2.3.1.1位置 / unit_test / MMDC / 10.2.3 ...
- RK3399驱动开发 | 15 - RTC实时时钟芯片HYM8563S调试(基于linux5.4.32内核)
文章目录 一.Linux RTC设备驱动框架 二.HYM8563实时时钟芯片 1. 简介 2. 引脚图 3. 连接原理图 三.设备驱动调试 1. 设备树节点描述 2. 使能内核驱动 3. 测试 四.h ...
- Ubuntu-Base在iMX8MM平台上的移植
先说废话↓ 转眼大学快过完了,已经开始了毕业设计的开发.笔者的毕业设计是一个运行ARM-Linux的第一人称控制机器人,为了挑(zhe)战(mo)一下自己,选择了一个性能很美丽的平台--iMX8MM, ...
- linux5支持32,Red Hat发布RHEL5.3 可支持32颗虚拟CPU
近日,Red Hat发布了适用于企业用户的Red Hat Enterprise Linux 5.3,当前稳定版的第三个更新.新的更新增加了新特性,增强了扩展性,支持OpenJDK和Intel Neha ...
最新文章
- mysql+keepalived必须要lvs吗_MySQL 双主热备 + LVS + Keepalived 高可用操作记录
- 千万级的mysql数据库与sql优化方法
- emoji .png_根据我对3.5GB聊天记录的分析,Emoji开发人员使用最多
- Koa 中实现 chunked 数据传输
- java如何确保单线程_java是如何解决单线程之间的通信问题呢?这篇文章给你答案...
- WeTest功能优化第3期:业内首创,有声音的云真机
- js实现select跳转
- Java多线程编程系列-多线程基础
- 分布式锁没那么难,手把手教你实现 Redis 分布锁!|保姆级教程
- 程序员如何接私活?十年码农悄悄告诉你
- 下载docker镜像包
- photoshop cc 2014(附完整软件和方法)
- *理解JavaWeb目录结构
- Canvas-2d fillRect
- R语言:基本变量及其之间关系探索分析
- UE4 键盘按键实现开关门
- php启动 大量sess文件,关于PHP中Session文件过多的有关问题
- 【190411】VC++ 双摄像头视频监控捕捉程序源代码
- Android手机如何更改hosts文件
- 如何做到两个IP地址是否属于同一网段?
热门文章
- Java工程师成神之路(2019正式版)
- PLC液压控制系列之比例流量阀结构分析
- 纯Java代码实现 企业微信钉钉 机器人群+告警
- 高考方向计算机基础试题题库,计算机基础考试题库 计算机基础考试题库(含答案).doc...
- 极域电子教室功能讲解-电子教室
- JDK1.7 jdk7安装和环境变量配置(Windows环境)
- android 显示系统时间,Android 实时获取当前时间并显示
- 自己动手开发多线程异步 MQL5 WEBREQUEST
- java 获取jsessionid_如何从JSESSIONID加载Java HttpSession?
- 2016noip-问题求解超级详细解