I.MX6Q-SDB开发板移植ubuntu

news2024/11/15 13:26:39

I.MX6Q-SDB开发板移植ubuntu

  • 0.前言
  • 一、准备工作
  • 二、ubuntu移植
    • 1.下载ubuntu发布的根文件系统
    • 2.根文件系统的简单修改
    • 3.板卡适配设置
    • 4.打包根文件系统
  • 三、烧写镜像
    • 1.dd命令
    • 2.uuu工具
    • 3.mfgtool工具
    • 4.i.mx6q-sdb的拨码设置:
  • 四、大无语事件


0.前言

  这两天收拾杂货堆,找到一块当年上学时候导师申请到的I.MX6QSDB开发板,原本出厂的时候是在SD卡里刷了个安卓系统,后来我把NXP官方的Yocto linux刷到了emmc里,用来做一些驱动开发的学习,再后来就一直吃灰。现在有了一点捣腾设备的能力,想适配一下ubuntu系统,把之前性能比较低的玩客云换下来。

一、准备工作

  首先从NXP官网下载这块开发板的相关资源文件,包括官方做的Linux6.1工具包和用户手册User Guide。其中官方的Linux工具包中包括了这块开发板的设备树、u-boot以及linux kernel等文件,由于需要自己适配ubuntu,所以rootfs文件就不需要了。User Guide则用来指导一些硬件相关的操作,包括拨码开关设置、镜像烧录地址等。

二、ubuntu移植

  ubuntu的移植本质上是根文件系统的移植,和kernel、u-boot等无关。这部分可以参考这篇文章。

1.下载ubuntu发布的根文件系统

从ubuntu官方的ubuntu-base文件系统网站下载需要的文件。这里笔者下载的是ubuntu22.04版本的根文件系统,需要根据自己的硬件平台及版本需求自行选择。
在这里插入图片描述
在这里插入图片描述

2.根文件系统的简单修改

官方的根文件系统还是稍微有一点简陋,需要先进行一些修改,方便后续移植到板子上的使用。将下载的文件在ubuntu中解压到一个文件夹下,相关的文件如下:
在这里插入图片描述
可以看出和常用的linux根文件目录区别不大,按照移植案例中的步骤,首先使用以下命令安装运行模拟器:

sudo apt install qemu-user-static

然后拷贝CPU架构为ARM的模拟器到根文件系统:

sudo cp /usr/bin/qemu-arm-static ./usr/bin/

接着拷贝主机下的DNS配置文件,没有这个文件无法使用apt-get下载软件:

sudo cp /etc/resolv.conf ./etc/resolv.conf

然后更换源地址:
注:这里更换源地址时建议先备份原本的源地址文件,方便后续出错时恢复。

cp ./etc/apt/sources.list ./etc/apt/sources.list.bak
vim ./etc/apt/sources.list

修改源地址时,将此文件中的ubuntu官方源前缀换成国内源即可,后面的后缀可以不用修改,例如官方源原本是deb http://ports.ubuntu.com/ubuntu-ports/ jammy multiverse,只需要将前面的http://ports.ubuntu.com换成国内的阿里云、清华源、华为源的地址即可。前缀可选:

http://mirrors.aliyun.com
https://mirrors.ustc.edu.cn
https://mirrors.tuna.tsinghua.edu.cn

修改完成后保存并退出,然后按照案例中的流程,将ubuntu主机中的相关目录挂载到此目录下:

sudo mount -t proc /proc ./proc
sudo mount -t sysfs /sysfs ./sys
sudo mount -o bind /dev ./dev
sudo mount -o bind /dev/pts ./dev/pts

然后将文件系统切换到此目录下:

sudo chroot ./

更新并安装相关应用:

apt-get update
apt-get upgrade
apt-get install -y sudo vim kmod net-tools ethtool ifupdown language-pack-en-base rsyslog htop iputils-ping dosfstools systemd

注:如果在更新时报错Couldn’t create temporary file /tmp/apt.conf.AdvpMV for passing ***,如下图所示,在当前窗口执行chmod 777 /tmp即可解决。
在这里插入图片描述

3.板卡适配设置

继续按照案例中的流程走,设置板卡的登录密码、主机名称,并适配串口等。
设置密码:

passwd root

设置主机名称:

echo "usr-name" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 usr-name" >> /etc/hosts

设置串口终端:以串口1为例,它的设备文件名称为ttymxc0,所以使用ln命令创建一个软链接文件指向​​/lib/systemd/system/getty@.service​​:

ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttymxc0.service

注:这里需要根据自己的板卡串口进行修改,可以先启动到官方的u-boot中使用print env命令查看相关参数。
配置网络自启:

echo auto eth0 > /etc/network/interfaces.d/eth0
echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0

最后,退出当前文件系统,取消挂载​​proc、sys、dev、dev/pts​​这四个目录和文件:

exit 
sudo umount ./proc
sudo umount ./sys
sudo umount ./dev/pts
sudo umount ./dev

4.打包根文件系统

将根文件系统打包成xxx.tar.bz2格式的文件。
进入到根文件系统所在的目录,执行以下命令:

tar -cvjf my_rootfs.tar.bz2 *

三、烧写镜像

  NXP系列的板子烧写有三种可选方式:dd命令、uuu工具、mfgtool工具。

1.dd命令

  在linux下,将存储介质按照要求进行分区,然后将zImage、dtb文件、u-boot文件、rootfs分别烧写到对应的分区即可。这种方式的优点是方便快捷,直接使用对应的命令即可,而且可以一个一个文件分别烧写。缺点是只能烧写到sd卡设备中。具体的操作方式可以到NXP官方网站,下载对应的User Guide查阅。

2.uuu工具

  uuu工具可以理解为mfgtool的升级版,官方的mfgtool工具只能烧录完整的Yocto镜像,如果想要烧写自己的镜像,需要按照要求打包成对应的文件,或者修改烧写脚本中的逻辑。uuu工具则可以单独烧录u-boot等文件,并且烧写速度有较大提升。
  不过笔者在按照官方介绍进行烧写时,遇到了一些问题:使用uuu工具可以单独烧写u-boot文件,但是不能单独烧写其他的kernel、rootfs等。咨询了一下,官方说如果想用uuu烧写自己的镜像,必须将kernel、dtb、rootfs打包成Yocto形式的.wic文件。又查阅了相关的手册和介绍,如果想要打包成这种格式,需要安装很多工具链及编译环境等,所以最后笔者还是放弃了这种方式。

3.mfgtool工具

  最终笔者还是选择了这种最常用的方式,虽然烧录速度慢一点,但是操作起来也比较方便。笔者下载的是正点原子资源包中的mfgtool,官方下载的在烧写过程中总是找不到设备,不清楚什么原因。将官方资源包中的kernel、dtb和u-boot,以及移植后打包的ubuntu rootfs文件复制到mfgtool的资源文件夹中,运行对应的烧写脚本即可。

4.i.mx6q-sdb的拨码设置:

DIP1 - DIP6烧写介质
11010110emmc
10000010SD卡槽2
01000010SD卡槽3、烧写模式
00000100sata

四、大无语事件

  当笔者烧写到emmc进行启动,并检测无误后,又将官方的原版Yocto镜像写入到了一张sd卡中备用,当笔者启动此镜像时,竟意外发现官方的镜像是基于Debain系统移植的,白白花费两个晚上捣鼓ubuntu,不过也算是积累了开发板移植ubutnu的经验(就这么安慰自己吧)。

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

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

相关文章

密码学【java】初探究加密方式之数字签名

文章目录 前言1 数字签名简介2 基本原理3 数字证书4 网页加密5 edge的网站连接图标6 代码实现7 keytool工具使用7.1 常用命令:7.2 生成私钥公钥[未实践成功]7.3 导出公钥 前言 有关keytool的使用部分,未实现,先记录下来!&#xf…

『python爬虫』12. 模拟登陆之cookie的使用(保姆级图文)

目录 session1. 模拟登陆取得cookie2. 在登录的情况下继续取得书架上的数据3. 在已经有cookie的情况下直接请求总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 session session和我们之前用的request十分相似&…

AWS Lambda - 同步/异步调用,事件源,目标

Hello大家好,我们今天继续讨论AWS Lambda的内容。 同步调用 Lambda函数有三种调用方式。 第一种方式是同步调用。 当我们使用API、CLI以及API网关等调用函数时,就是同步调用。 当您同步调用函数时,Lambda会运行该函数并等待响应&#xff…

微服务---Redis入门篇-Redis的常见命令和客户端使用

Redis快速入门 Redis的常见命令和客户端使用 1.初识Redis Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样&#xf…

易视腾iS-E5-NGH_3798MV100_MT7601_卡刷固件包_当贝纯净桌面

易视腾iS-E5-NGH_3798MV100_MT7601_卡刷固件包_当贝纯净桌面 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件&#xff0…

单链表OJ题:LeetCode--206.反转链表

朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode中206题:反转链表 数 据 结 构:数据结构专栏 作 者:stackY、 C 语 言 :C语言专栏 LeetCode :LeetCode刷题训练营 LeetCod…

TiDB实战篇-数据库热点问题

形成热点的原因 主要是因为数据插入进去的时候是按顺序加数据的。 数据分裂以后还是在一个store上面,就会形成读写热点。 没有走索引全表扫描的情况。 定位热点 如果有热点,那么它的查询语句应该是比较多的,容易在这个地方找到对应的热点问…

Leetcode434. 字符串中的单词数

Every day a leetcode 题目来源:434. 字符串中的单词数 解法1:istringstream 我们知道,C默认通过空格(或回车)来分割字符串输入,即区分不同的字符串输入。 istringstream类用于执行C风格的串流的输入操…

Flowable入门

Flowable初体验 Flowable是什么 Flowable 是一个使用 Java 编写的轻量级业务流程引擎,常用于需要人工审批相关的业务,比如请假、报销、采购等业务。 为什么要使用工作流呢? 对于复杂的业务流程,通过数据库的状态字段难以控制和…

软考信管高级——质量管理

质量管理内容 质量保证QA(过程符合要求/过程改进) (1)按项目计划开展质量活动,使项目过程和产品符合质量要求,即按计划做质量; (2)提高项目干系人对项目将要满足质量要求的信心; (3)按过程改进计划进行过程改进&…

金兰组织 | 2023金兰解决方案集经营管理篇正式发布

为助力企业创新管理、提质增效,人大金仓携手金兰组织成员单位,于近期发布多项经营管理领域的联合解决方案,共享创新应用成果。 /人大金仓高级副总裁宋瑞/ 人大金仓高级副总裁宋瑞在致辞中表示:“联合解决方案创新是指通过把不同领…

利用谷歌云Pub/Sub 实现多任务并行分发处理方案

背景 目前老梁团队负责的Global Data Integration Platform每天有大量文件需要从来自不同地区的上游下载文件并进行处理后再发送到不同下游。老梁的数据集成平台集群有6个服务器节点,老梁希望所有机器的资源都能利用上,提升大量文件并行处理能力&#x…

C# Microsoft.ClearScript.V8脚本使用

1、ClearScript支持的功能和适用场景 微软的.net是非常强大和灵活的,除了C#体系脚本扩展,也支持其他流行的脚本扩展,Microsoft.ClearScript.V8就是一个.NET绑定到Google V8的脚本引擎。它允许.NET应用程序直接从JavaScript代码中调用函数&am…

Redis布隆过滤器的原理和应用场景,解决缓存穿透

目录 专栏导读一、布隆过滤器BloomFilter是什么二、布隆过滤器BloomFilter能干嘛?三、布隆过滤器使用场景1、解决缓存穿透问题2、黑名单3、网页爬虫对URL的去重,避免爬取相同的URL地址四、操作布隆过滤器BloomFilter1、使用布隆过滤器2、删除key3、判断是否存在五、代码实例1…

黑客开始使用双 DLL 侧载来逃避检测

一个名为“Dragon Breath”、“Golden Eye Dog”或“APT-Q-27”的 APT 黑客组织正在展示一种新趋势,即使用经典 DLL 旁加载技术的多种复杂变体来逃避检测。 这些攻击变体从一个初始向量开始,该向量利用一个干净的应用程序,最常见的是 Telegr…

vue_组件基础

单文件组件 Vue 单文件组件&#xff08;又名 *.vue 文件&#xff0c;缩写为 SFC&#xff09;是一种特殊的文件格式&#xff0c;它允许将 Vue 组件的模板、逻辑 与 样式封装在单个文件中 <template><h3>单文件组件</h3> </template><script> ex…

asp.net+c#操作系统课程在线教学平台

1&#xff0e;系统登录&#xff1a;系统登录是用户访问系统的路口&#xff0c;设计了系统登录界面&#xff0c;包括用户名、密码和验证码&#xff0c;然后对登录进来的用户判断身份信息&#xff0c;判断是管理员用户还是普通用户。 2&#xff0e;系统用户管理&#xff1a;不管是…

答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议

简介 本期答疑解惑将和大家一起认识SSL/TLS 协议。请尝试回答以下几个问题&#xff1a; 使用浏览器访问https网站和http网站有什么不同&#xff1f;SSL协议作用于网络模型的哪一层&#xff1f;你知道CSDN&#xff0c;博客园正在使用的是什么类型的SSL证书吗&#xff1f;SSL&a…

汇编实现LED循环点亮(延时子程序模板)

在单片机P2口外接8个发光二极管(低电平驱动)。试编写一个汇编程序&#xff0c;实现LED循环点亮功能:P2.0-P2.1-P2.2-P2.3-…-P2.7-P2.6-P25-…-P2.0的顺序&#xff0c;无限循环。要求采用软件延时方式控制闪烁时间间隔(约50ms)。 首先进行电路设计 电路原理图设计 利用 Prot…

php+vue影视电影视频点播推荐avxhe系统

影视推荐系统的主要使用者分为管理员和用户&#xff0c;实现功能包括管理员&#xff1a;首页、个人中心、用户管理、公告信息管理、电影分类管理、影视推荐管理、付费点播管理、点播信息管理、管理员管理、系统管理&#xff0c;用户&#xff1a;首页、个人中心、付费点播管理、…