IMX6Ull驱动学习-“原汁“kernel

1、拷贝一份deconfig文件

拷贝一份defconfig文件

cd arch/arm/configs
cp imx_v7_mfg_defconfig pan_emmc_defconfig

注释掉CONFIG_ARCH_MULTI_V6选项,不然会影响之后驱动开发

CONFIG_ARCH_MULTI_V6=y

使用自己的defconfig文件编译内核

make pan_emmc_defconfig
2、修改一份设备树

2.1、得到设备树

cd arch/arm/boot/dts
cp imx6ull-14x14-evk.dts imx6ull-pan-emmc.dts

2.2、将设备树加入到编译选项

上一步拷贝一份官方的设备树文件之后,还 需 要 修 改 文 件 arch/arm/boot/dts/Makefile , 找 到 dtb-$(CONFIG_SOC_IMX6ULL)配置项,在此配置项中加入imx6ull-pan-emmc.dtb

注:.dts 是设备树源码文件,编译 Linux内核的时候Makefile文件会将其编译为.dtb 文件。

3、使用自己的deconfig和设备树

3.1、使用下面命令先编译出内核镜像

# 深度清理工程
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
# 生成.config文件,之后内核编译会使用.config决定一些编译选项
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- pan_emmc_defconfig
# 图形化界面配置内核 可直接esc退出。因为上一步已经生成了.config
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
# 开始编译内核,使用16核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16# 注:在编译内核的时候一定要注意配置和交叉编译工具链。并且使用ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
# 指定好架构和交叉编译工具

3.2、将得到的zImagedtb文件下载到开发板

# 80800000 这些数字表示的存放地址
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk.dtb
bootz 80800000 - 83000000

注:确保 uboot 中的环境变量 bootargs 内容如下:

# 指定终端,波特率和文件系统的存放地址/dev/mmcblk1p2
console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw

3.3、文件系统找不到问题或者nfs挂载失败

根文件系统存在哪里是由 ubootbootargs 环境变 量 指 定 , bootargs 会 传 递 给 Linux 内 核 作 为 命 令 行 参 数 。上 一 小 节 设 置root=/dev/mmcblk1p2,也就是说根文件系统存储在/dev/mmcblk1p2 中,也就是 EMMC 的分区 2中。

使用网络文件系统nfs,直接设置root的值就可以了。

3.3.1、确定uboot中的bootargs参数

①、使用的是emmc的文件系统 参数应该按照下面设置

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

注:如果使用emmc文件系统的时候一定要确保之前烧录过文件系统。

②、使用网络文件系统nfs,参数如下设置

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs \ nfsroot=192.168.10.100:/home/pan/imx6ull/nfs/rootfs,proto=tcp rw \ ip=192.168.10.50:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off ' 

3.3.2、ubuntu16之后网络文件系统nfs无法正常挂载:

①、修改文件

sudo vi /etc/default/nfs-kernel-server

②、内容如下:

# Number of servers to start up
RPCNFSDCOUNT="-V 2 8"# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information, 
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS="-V 2 --manage-gids"# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=""# Options for rpc.svcgssd.
RPCSVCGSSDOPTS="--nfs-version 2,3,4 --debug --syslog"

③、重启服务

sudo service nfs-kernel-server restart

4、emmc设备驱动配置

设置emmc为8线模式,直接修改设备树

&usdhc2 {pinctrl-names = "default", "state_100mhz", "state_200mhz";pinctrl-0 = <&pinctrl_usdhc2_8bit>;pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;bus-width = <8>;non-removable;status = "okay";};

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

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

相关文章

ifconfig命令找不到 command not found

问题 今天解决虚拟机的网络问题后&#xff0c;使用ifconfig发现报错命令未找到 解决方案 输入yum install ifconfi的程序安装包 yum install ifconfig 如果显示没有可用软件包 ifconfig&#xff0c;错误&#xff1a;。 就输入yum search ifconfig匹配安装包程序 yum searc…

Android WebView打开网址黑屏

1.先说解决方案&#xff1a; // 允许执行JavaScriptbinding.webView.getSettings().setJavaScriptEnabled(true);// 启用硬件加速binding.webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);// 允许混合内容。即使是通过HTTPS加载的页面也可以显示通过HTTP加载的资源。bin…

2024好用的4款3D雕刻软件,快来拿走

3D 雕刻是一种让角色、怪物或任何有机形状栩栩如生的方法。您可以将其视为由粘土制成的真实模型&#xff0c;并可以根据您的意愿推、拉、平滑、抓住或捏它以创建其最终形状。3d 雕刻有哪些软件好用&#xff1f;3d 雕刻软件对电脑要求高吗&#xff1f;电脑带不动3d软件怎么办&am…

【隧道篇 / WAN优化】(7.4) ❀ 03. WAN优化的原理 ❀ FortiGate 防火墙

【简介】相信对WAN优化感兴趣的人都会有疑问&#xff0c;WAN优化真的有作用吗&#xff1f;如果真的有作用&#xff0c;那是根据什么原理呢&#xff1f;让我们来更深入的了解一下。 客户端和服务器端 其实很多人在一开始看到WAN优化这个词&#xff0c;就自然的以为上网速度太慢&…

How Linux Works I - How Linux Start Up

目录 Linux如何启动&#xff1f; 启动信息 内核启动初始化与启动选项 写在前面&#xff1a;上一个专栏中我写完了内核源码层面看Linux&#xff0c;我们把抽象层拉高一点&#xff0c;看看Linux是如何工作的&#xff01; Linux如何启动&#xff1f; BIOS&#xff08;Basic Inpu…

linux基础命令第二篇

雷迪斯and the乡亲们 欢迎你们来到 奇幻的编程世界 8.history命令 作用&#xff1a;查看和控制历史命令纪录 保存位置&#xff1a;&#xff1a;~/.bash_history &#xff08;1&#xff09;在启动终端的时候&#xff0c;会自动从&#xff1a;~/.bash_history 中读取历史命令…

端口复用详解

2、多线程并发服务器的步骤 1 #include <stdio.h> 2 #include <sys/socket.h>//socket 3 #include <netinet/in.h>//struct sockaddr_in 4 #include <arpa/inet.h>//inet_pton inet_addr 5 #include <string.h>//bzero 6 #include <stdlib.h…

AUTOCRAWLER : A Progressive Understanding Web Agent for WebCrawler Generation

AUTOCRAWLER&#xff1a;用于生成 WebCrawler 的渐进式理解 Web 代理 Fudan University;Alibaba Holding-Aicheng Technology-Enterprise Abstract&#xff1a; 网络自动化是一项重要技术&#xff0c;它通过自动化常见的网络操作来完成复杂的网络任务&#xff0c;提高效率并…

【优选算法】——双指针——15. 三数之和

目录 1.题目 2.解法&#xff08;排序双指针&#xff09;&#xff1a; 算法思路&#xff1a; 3.代码实现 1.题目 15. 三数之和 提示 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足…

Clickhouse判断是否在范围中

isIPAddressInRange a表 name range id ------- 美国 ‘172.10.1.1/24’ 1 b表 ip name 172.10.11.2 test 现在去判断b表中的test是在哪个范围 isIPAddressInRange(a.ip, b.range) 判断是否为IPv4还是IPv6 isIPv4String isIPv6String 转换IP toIPv4 toIPv4OrDefault(s…

RT-Thread移植到STM32F407

1、获取RT-Thread源码 首先到rtthread官网下载rt-thread nano后解压 解压后打开后内容如下。 2、系统结构 各文件夹的作用如下&#xff1a; Rt-Thread-nano源码结构 文件夹描述bsp板级支持包components/finshRT-Thread组件docs文档信息include头文件libcpu/arm与arm处理器相…

根文件系统的其他测试

文章目录 一、hello测试程序编写二、程序后台运行1.在后台运行方法2.中文显示测试3.开机自动启动测试 一、hello测试程序编写 &#x1f4a6;我们使用 Linux 的目的就是运行我们自己的软件&#xff0c;我们编译的应用软件一般都使用动态库&#xff0c;使用动态库的话应用软件体…

vue 钩子函数updated什么时候触发

触发时机 updated是Vue生命周期钩子函数之一&#xff0c;在组件的数据变化导致虚拟DOM重新渲染并应用到实际DOM之后触发。具体来说&#xff0c;updated会在以下几种情况下被触发&#xff1a; 初始渲染完成后&#xff1a;当组件首次渲染完成并将虚拟DOM渲染到实际DOM之后&#…

获取两个时间之间的月份

工具类 public static List<String> getMonthBetweenDate(Date startDate, Date endDate) {ArrayList<String> result new ArrayList<String>();SimpleDateFormat sdf new SimpleDateFormat("yyyy.MM");//格式化&#xff0c;调整为自己需要的格…

摩菲Murphy显示器显示表 总线编程器维修PV780B

Murphy仪器维修包括&#xff1a;摩菲数字显示器&#xff1b;摩菲监视仪表&#xff1b;摩菲CAN总线控制器等维修 维修故障包括&#xff1a;黑屏、指示灯无显示&#xff0c;触摸屏上电无反应&#xff0c; 上电蓝屏、白屏&#xff0c;通电几分钟后屏幕变为蓝屏&#xff0c;主板故…

班级综合测评|基于Springboot+vue的班级综合测评管理系统(源码+数据库+文档)

目录 基于Springbootvue的“智慧食堂”系统 一、前言 二、系统设计 三、系统功能设计 1 管理员功能模块 2学生功能模块 3教师功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…

应用系统集成企业微信的技术方案和最佳实践

本文以springbootvue技术开发的低代码平台为案例&#xff0c;介绍应用系统如何集成企业微信&#xff0c;包括同步企业微信组织用户、单点登录、消息发送等。 在线体验&#xff1a;http://www.yunchengxc.com 1、准备应用 1.1、注册企业微信账号 作为企业微信的企业管理员&a…

铅离子/镉离子绿色荧光探针,具有高特异性高灵敏度

基本信息&#xff1a; 中文名称&#xff1a;铅离子/镉离子绿色荧光探针 英文名称&#xff1a;Leadmium TM Green AM dye 外观&#xff1a;固体或粉末状 规格&#xff1a;10mg、25mg、50mg (可支持定制&#xff09; 纯度&#xff1a;95% 储存条件&#xff1a;-20C避光避湿…

46. UE5 RPG 增加角色受击反馈

在前面的文章中&#xff0c;我们实现了对敌人的属性的初始化&#xff0c;现在敌人也拥有的自己的属性值&#xff0c;技能击中敌人后&#xff0c;也能够实现血量的减少。 现在还需要的就是在技能击中敌人后&#xff0c;需要敌人进行一些击中反馈&#xff0c;比如敌人被技能击中后…

JVM中类加载过程中如何验证文件格式

在JVM中&#xff0c;类加载过程中的验证阶段主要是为了确保加载的Class文件是符合虚拟机规定的Class文件格式&#xff0c;并且没有安全方面的问题。验证阶段主要包括四个部分&#xff1a;文件格式验证、元数据验证、字节码验证和符号引用验证。 关于文件格式验证&#xff0c;这…