编译替换内核_设备树_驱动_IMX6ULL

news2024/12/1 0:26:19

前言:

使用的开发板为韦东山老师的 IMX6ULL

目录

为什么编译驱动程序之前要先编译内核?

1.驱动程序要用到内核文件:

2.编译驱动时用的内核、开发板上运行到内核,要一致:

3.更换板子上的内核后,板子上的其他驱动也要更换:

编译内核步骤

编译内核模块

安装内核和模块到开发板上

1.先在开发板挂载 Ubuntu 的 NFS 目录

2.输入命令 uname -a 显示内核版本修改时间 2020

3.复制文件到开发板上

4.reboot重启后再输入命令 uname -a 显示内核版本修改时间 2023​编辑


为什么编译驱动程序之前要先编译内核?

1.驱动程序要用到内核文件:

比如驱动程序中这样包含头文件:#include ,其中的 asm 是 一个链接文件,指向 asm-arm 或 asm-mips,这需要先配置、编译内核才会生成 asm 这个链接文件。

2.编译驱动时用的内核、开发板上运行到内核,要一致:

开发板上运行到内核是出厂时烧录的,你编译驱动时用的内核是你自己编译的,这两个内核不一致时会导致一些问题。所以我们编译驱动程序前,要把自己 编译出来到内核放到板子上去,替代原来的内核。

3.更换板子上的内核后,板子上的其他驱动也要更换:

板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出来的。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、模块,并且放到板子上去。

编译内核步骤

不同 的 开 发 板 对 应 不 同 的 配 置 文 件 , 配 置 文 件 位 于 内 核 源 码 arch/arm/configs/目录。

内核(kernel) 的编译过程如下(按顺序):

  • make mrproper: Linux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等
  • make 100ask_imx6ull_defconfig:配置给哪个板子编译
  • make zImage -j4: 编译内核 -j4加快编译速度
  • make dtbs: 编译设备树文件

编译完成后生成的文件如下图:

在 arch/arm/boot 目录下生成 zImage 内核文件, 在 arch/arm/boot/dts 目录下生成设备树的二进制文件 100ask_imx6ull-14x14.dtb

把这 2 个文件复制到/home/book/nfs_rootfs 目录下备用,

编译内核模块

进入内核源码目录后,就可以编译内核模块了:

内核模块编译完成后如图:

安装内核模块到 Ubuntu 某个目录下备用

可以先把内核模块安装到 nfs 目录(/home/book/nfs_rootfs)

安装好驱动后的/home/book/nfs_rootfs/目录结构如图 5.6 所示:

安装内核和模块到开发板上

1.先在开发板挂载 Ubuntu 的 NFS 目录

不知道如何挂载可以看 :开发板挂载 Ubuntu 的 NFS 目录

2.输入命令 uname -a 显示内核版本修改时间 2020

3.复制文件到开发板上

在上面 Ubuntu 的/home/book/nfs_rootfs 目录下,已经有了 zImage、 dtb 文件,并且有 lib/modules 子目录(里面含有各种模块)。

接下来要把这些文件复制到开发板上

假设 Ubuntu IP 为 192.168.5.11, 在开发板上执行以下命令(按顺序)

4.reboot重启后再输入命令 uname -a 显示内核版本修改时间 2023

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【使用Python编写游戏辅助工具】第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具

前言 这里是【使用Python编写游戏辅助工具】的第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具。本文主要介绍使用PySide6来实现构建GUI工具。 在前面,我们实现了两个实用的游戏辅助功能: 由键盘监听事件触发的鼠标连…

XSAN数据恢复-存储空间架构迁移时误格式化存储系统的XSAN数据恢复案例

XSAN数据恢复环境: 昆腾存储,MAC OS操作系统,存放视频类数据(MXF、MOV等格式文件)。 XSAN故障&检测: 将存储空间从XSAN架构迁移到STORNEXT架构后,存储空间中数据全部丢失。 故障存储中一共…

【3D图像分割】基于 Pytorch 的 VNet 3D 图像分割3(3D UNet 模型篇)

在本文中,主要是对3D UNet 进行一个学习和梳理。对于3D UNet 网上的资料和GitHub直接获取的代码很多,不需要自己从0开始。那么本文的目的是啥呢? 本文就是想拆解下其中的结构,看看对于一个3D的UNet,和2D的UNet&#x…

QCC TX 音频输入切换+提示声音

QCC TX 音频输入切换提示声音 QCC蓝牙芯片(QCC3040 QCC3056 等等),AUX、I2S、USB输入 蓝牙音频输入,模拟输出是最常见的方式。 也可以再此基础上动态切换输入方式。 针对TX切换EQ,调节音量不能出提示声音问题,可以增…

Spring底层原理(五)

Spring底层原理(五) 本章内容 介绍Aware接口与InitializingBean接口、Bean的初始化与销毁、Scope Aware接口 作用:用于注入一些与容器相关的信息 类名作用BeanNameAware注入Bean的名称BeanFactoryAware注入BeanFactory容器ApplicationContextAware注入ApplicationContext容…

Pycharm 对容器中的 Python 程序断点远程调试

pycharm如何连接远程服务器的docker容器有两种方法: 第一种:pycharm通过ssh连接已在运行中的docker容器 第二种:pycharm连接docker镜像,pycharm运行代码再自动创建容器 本文是第一种方法的教程,第二种请点击以上的链接…

JavaScript中BOM与DOM

BOM window对象 所有的浏览器都支持window对象,他表示浏览器窗口, 所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。 全局变量是 window 对象的属性。全局函数是 window 对象的方法。 接下来要讲的HTML DOM 的 document 也是…

遥遥领先,免费开源的django4-vue3前后端分离项目

星域后台管理系统前端介绍 🌿项目简介 本项目前端基于当下流行且常用的vue3作为主要技术栈进行开发,融合了typescript和element-plus-ui,提供暗黑模式和白昼模式两种主题以及全屏切换,开发bug少,简单易学&#xff0c…

攻略合集!游戏要领你一定要知道!

大家好!作为游戏玩家,我们都希望在游戏中能够成为顶尖的高手。为了帮助大家更好地掌握游戏的要领,我要分享一些实用的攻略和技巧。 首先,不同游戏有不同的技巧和要领。对于《绝地求生》来说,我们需要注重观察和战略规划…

C++和 C 混合编程处理

原因是因为有很多功能是用 C 语言开发的,而 C是兼容 C 的,C应该能直接使用这些功能,那么我们把 C调用 C 实现的功能的这个做法,称为混合编程 但是用 C 开发的功能,很可能已经用 C 编译器编程成目标文件(或打包成库了)…

Zinx框架-游戏服务器开发001:zinx框架的安装

文章目录 1 zinx下载地址1.1 zinx框架的源码路径:1.2 安装好之后动态库的位置 2 Zinx框架运行的基本概况3 测试Zinx-框架的基本使用3.0 流程预览3.1 初始化框架3.2 标准输入回显标准输出的编写思路3.2.1 回显Echo3.2.2 写标准输入stdin通道类,用通道输入…

协同办公系统:企业提质增效的利器

随着科技的不断发展,企业对于提高工作效率、优化管理流程、降低成本的需求日益迫切。协同办公系统应运而生,成为了许多企业提质增效的利器。那么,协同办公系统究竟是如何帮助企业实现这些目标的呢?本文将从以下几个方面进行详细阐…

【基于MRA:自适应高频融合和注入系数优化:Pansharpening】

Pansharpening Based on Adaptive High-Frequency Fusion and Injection Coefficients Optimization (基于自适应高频融合和注入系数优化的全色锐化) 全色锐化的目的是将多光谱(MS)图像与全色(PAN)图像融…

【实战Flask API项目指南】之六 数据库集成 SQLAlchemy

实战Flask API项目指南之 数据库集成 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握 Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 在上一篇文章中,我们实现了…

私有化部署即时通讯软件WorkPlus,全面适配信创环境

对于企业而言,保护数据的安全至关重要。WorkPlus即时通讯软件允许企业在自己的服务器上部署一套私有化的聊天工具,确保数据完全受控于企业内部。通过私有化部署,企业可以有效地管理和保护敏感信息,防止数据泄露和滥用。 另外&…

React基础知识02

一、通过属性来传值(props) react中可以使用属性(props)可以传递给子组件,子组件可以使用这些属性值来控制其行为和呈现输出。 例子: // 1.1 父组件 import React, { useState } from react // 1.2引入子…

浅谈安科瑞直流电表在荷兰光伏充电桩系统中的应用

摘要:本文介绍了安科瑞直流电表在荷兰光伏充电桩系统中的应用。主要用于充电桩的电流电压电能的计量。 Abstract: This article introduces the application of Acrel DC meters in PV charging pile system in Netherlands.The device is measuring current,volt…

腾讯云域名备案后,如何解析到华为云服务器Linux宝塔面板

一、购买域名并且进行备案和解析,正常情况下,购买完域名,如果找不到去哪备案,可以在腾讯云上搜索“备案”关键词就会出现了,所以这里不做详细介绍,直接进行步骤提示: 二、申请ssl证书&#xff0…

mysql简单备份和恢复

版本:mysql8.0 官方文档 :MySQL :: MySQL 8.0 Reference Manual :: 7 Backup and Recovery 1.物理备份恢复 物理备份是以数据文件形式备份。这种方式效率高点,适合大型数据库备份。物理备份可冷备可热备。 使用mysqlbackup 命令进行物理备…

命名数据网络(NDN)介绍

命名数据网络的由来 IP网络最开始其解决的问题是两个实体间点对点通信需求,实现资源共享。(简单知道即可) 随着互联网的发展,互联网用户对internet的需求现已经发生了巨大变化。目前面临着以下挑战 首先是随着以内容为中心&…