【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十二章 Debian文件系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


第七十二章 Debian文件系统

作为linux开发平台,iTOP-STM32MP157也可以移植debian系统。下面让我们一步步的构建Debian系统。

72.1 安装所需的工具

首先使用如下命令安装所需工具

sudo apt-get install binfmt-support qemu qemu-user-static debootstrap   

我们在此选用debootstrap 完成第一二阶段。

Debootstrap是debian/ubuntu下的一个工具,用来构建一套基本的系统(根文件系统)。生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多,当然功能也没那么强大,因此,只能说是“基本的系统”。

qemu是模拟器,是为了在宿主机上模拟开发板的环境

72.2 根文件系统制作

制作Debian系统在网上也有很多相关的教程,基本流程和前一章节“第十七章 制作Ubuntu文件系统“相同,在这里我们就不进行一点点的制作,而直接使用Linaro 公司制作好的。该公司提供的Debian源码下载地址为

Linaro Releases

进入网址之后找到linaro-jessie-alip-20161117-32.tar.gz进行下载

由于该网站属于国外网站,下载速度较慢,我们已经将相应的压缩包下载下来。存放路径为“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\04_debian文件系统\01_官网源码”。如下图所示: 

72.3 Debian可烧写文件系统的制作

将我们下载好的源码通过SSH或者其他方式拷贝到虚拟机ubuntu上,如下图所示:

 

然后使用命令

tar -vxf linaro-jessie-alip-20161117-32.tar.gz

来对该压缩文件进行解压,如下图所示:

 

解压完成如下图所示: 

然后使用命令:

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

该命令是为了方便我们对该文件系统进行Chroot挂载的。

为了制作成功的根文件系统能够联网,可以直接拷贝本机的dns配置文件到根文件系统的相应位置,使用命令

rm -rf ./binary/etc/resolv.conf 

sudo cp -r /etc/resolv.conf ./binary/etc/resolv.conf 

如下图所示:

然后修改根文件系统软件源,使用命令

sudo vim ./binary/etc/apt/sources.list 

进入该文件,添加如下内容:

deb http://mirrors.tuna.tsinghua.edu.cn/debian jessie main contrib non-free

deb-src http://mirrors.tuna.tsinghua.edu.cn/debian jessie main contrib non-free

deb http://mirrors.tuna.tsinghua.edu.cn/debian jessie-updates main contrib non-free

deb-src http://mirrors.tuna.tsinghua.edu.cn/debian jessie-updates main contrib non-free

deb http://mirrors.tuna.tsinghua.edu.cn/debian-security jessie/updates main contrib non-free

deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security jessie/updates main contrib non-free

 添加完成如下图所示:

接下来使用命令“vim binary/etc/hostname”进入hostname文件夹,将“linaro-alip”修改为“iTOP-STM32MP157”设置主机名称:

修改完成如下图所示:

 

保存退出,由于我们需要自动装载一些ko驱动文件且让这些文件在开机之后自动装载,我们首先拷贝“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\04_debian文件系统\03_ko”路径下的ko文件夹到文件系统的usr目录下,拷贝完成如下图所示: 

然后将“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\05_ubuntu文件系统\04_rc.local”路径下的rc.local文件拷贝到文件系统的etc目录下,拷贝完成如下图所示: 

 

然后使用命令“sudo chmod  777 rc.local”修改文件对应的权限,如下图所示: 

 

至此,debian根文件系统就已经制作好了,然后我们进行下一个章节的镜像制作了。

72.4 debian文件系统测试 

72.4.1 制作Debian烧写镜像

如下图所示,是制作好的ubuntu系统文件

 

使用命令“mkdir rootfs创建一个文件夹rootfs用来挂载之后要制作出来的 rootfs.ext4文件系统镜像如下图所示: 

 

使用命令“du binary”来查看debian文件系统的大小,如下图所示: 

 

我们可以看到该文件系统的大小为1405M,在这里我们制作2000MB大小的镜像文件,然后使用命令

dd if=/dev/zero of=rootfs.ext4 bs=1M count=2000 

mkfs.ext4 -L rootfs rootfs.ext4

建立一个大小为2000M的ext4 磁盘(作者在这里制作的大小为2000MB,个人感觉不够用的话,可以根据自身情况来进行增大,但要注意的是制作的镜像越大,对应的烧写时间越长),如下图所示:

 

接下来使用 mount 命令将 rootfs.ext4 挂载到rootfs 目录下挂载要使用root用户如下图所示:

 mount ./rootfs.ext4 rootfs

 

然后拷贝我们制作的文件系统到rootfs 目录下,如下图所示:

cp -a binary/* ./rootfs

 

拷贝完成后,使用命令“umount rootfs”,进行解除挂载,如下图所示: 

 

这里的rootfs.ext4就是我们要烧写的文件系统镜像。

72.4.2 Debian镜像的烧写

由于 Debian系统和Ubuntu系统相同,他们镜像的烧写和之前的QT系统存在区别,QT系统所使用的内核可以不用区分屏幕,而ubuntu系统不同。所以我们在烧写镜像的时候需要修改对应的内核镜像,我们镜像存放路径为“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\04_debian文件系统\02_制作好的debian镜像”,如下图所示:

 

在这里rootfs.ext4为我们要烧写文件系统的镜像。而rootfs.tar.gz为我们文件系统的源码,之后对文件系统的修改都是通过rootfs.tar.gz源码文件来修改的,最后就是我们的不同屏幕的内核镜像,进入该文件如下图所示: 

 

这里只有四种屏幕的内核镜像,原因是这四种屏幕所使用的触摸驱动相同,而剩下的4.3寸屏幕和10.1寸屏幕所用到的驱动不同,故以上任何一个内核镜像都可以适配。而我们用到以上四种屏幕之后,需要拷贝对应目录下的bootfs.ext4内核镜像来替换烧写文件image目录下的bootfs.ext4文件。

然后我们可以根据烧写章节进行对应的烧写。

72.4.3 Debian根文件系统测试

将上一小节所制作好的文件系统镜像rootfs.ext4拷贝到image烧写目录下,覆盖掉之前的rootfs.ext4,然后进行烧写,烧写启动之后如下图所示:

 

我们在使用过程中,可以按照ubuntu正常开发流程来使用。例如运行hello world程序。

首先使用命令“su root”,然后输入我们的密码“topeet”,进入root用户,如下图所示:

 

首先我们使用命令“gcc -v”查看 gcc 版本。如下图所示: 

 

使用“mkdir test”创建测试文件夹进入,如下图: 

 

然后我们使用命令“vim helloworld.c”创建c文件。 

 

输入如下内容: 

#include<stdio.h>
int main(void)
{printf("hello world!\r\n");return 0;
}

 如下图:

 

添加完成之后保存并退出。

然后使用命令“arm-linux-gnueabihf-gcc -o helloworld helloworld.c”编译helloworld程序。如下图所示:

 

最后我们使用命令“./helloworld”即可运行程序,如下图。 

 

72.4.4 Debian WIFI测试

烧写完成之后启动开发板,进入登录界面,登录

进入文件系统之后如下图所示:

 

使用关闭以太网命令

ifconfig eth0 down

 

输入以下命令查看网络设备, 如下图所示

nmcli dev

 

由于测试用的开发板之前已经连接过wiifi了,所以可能会和大家显示的不同,输入以下命令开启 wifi

nmcli r wifi on

 

输入以下命令扫描 wifi

nmcli dev wifi

 

输入以下命令连接 wifi

nmcli dev wifi connect "wifi 名" password "密码"

作者连接公司的 wifi, 输入以下命令:

nmcli dev wifi connect "2701" password "topeet2015"

 

输入以下命令发现可以 ping 通百度,说明 WiFi 联网成功。

ping www.baidu.com

 

需要注意的是可能会出现如下图所示错误 

 

我们需要使用命令“vim /etc/resolv.conf”,进入resolv.conf文件添加以下内容

nameserver 114.114.114.114

nameserver 8.8.8.8

添加完成如下图所示:

 

至此我们的debian文件系统就可以上网了

至此我们的wifi测试就完成了。

72.4.5 4.3寸屏幕校准

使用4.3寸屏幕的客户在烧写debian系统后,会发现屏幕的触摸不准确,所以我们需要校准屏幕。

开机启动之后,进入登录界面,在终端我们用户名和密码都输入“topeet”即可进入系统,如下图所示:

 

然后我们使用以下命令

vim /usr/share/X11/xorg.conf.d/10-evdev.conf

进入10-evdev.conf文件夹如下图所示:

 

我们找到关于触摸屏幕的设置信息“Identifier "libinput touchscreen catchall"”如下图所示: 

 

在该设置信息下添加以下内容,添加完成如下图所示:

        Option "InvertX" "true"

        Option "InvertY" "true"

 

保存退出,然后重启开发板,再次打开图形化界面会发现,触摸正常了。

72.5 使用Chroot挂载文件系统

为了更好的对文件系统进行修改,我们可以使用Chroot挂载文件系统,具体过程如下图所示:

首先将“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\04_debian文件系统\02_制作好的debian镜像”下的rootfs.tar.gz文件拷贝到虚拟机ubuntu上,如下图所示:

在本机挂载刚刚下载好的文件系统,需要挂载proc, sys, dev, dev/pts等文件系统。使用命令“sudo vi mount.sh”添加挂载脚本。如下图所示:

 

挂载过程的脚本mount.sh内容如下: 

#!/bin/bash
mnt() {echo "MOUNTING"sudo mount -t proc /proc ${2}procsudo mount -t sysfs /sys ${2}syssudo mount -o bind /dev ${2}devsudo mount -o bind /dev/pts ${2}dev/ptssudo chroot ${2}
}
umnt() {echo "UNMOUNTING"sudo umount ${2}procsudo umount ${2}syssudo umount ${2}dev/ptssudo umount ${2}dev
}if [ "$1" == "-m" ] && [ -n "$2" ] ;
thenmnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
thenumnt $1 $2
elseecho ""echo "Either 1'st, 2'nd or both parameters were missing"echo ""echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"echo ""echo "For example: ch-mount -m /media/sdcard/"echo ""echo 1st parameter : ${1}echo 2nd parameter : ${2}
fi

 添加完成如下图:

 

保存退出

(2)然后使用命令“sudo chmod 777 mount.sh”修改脚本权限,如下图所示:

 

(3)然后使用命令“sudo ./mount.sh -m binary/”运行挂载。如下图所示: 

 

此时我们可以看到,根目录切换成了当前制作debian的目录,我们可以在该系统中安装我们所需要的软件,我们安装mplayer进行演示,使用命令“apt-get install mplayer”进行安装,如下图所示: 

 

 安装其他软件步骤相同,对此操作完成之后,输入exit退出,然后使用命令“./mount.sh -u binary/”取消挂载,如下图所示

 

我们修改完成的文件系统继续根据18.4.1小节“制作Debian烧写镜像”来制作镜像,然后根据对应的章节来进行烧写。

72.6 使用制作好的Debian文件系统

在网盘目录“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\04_debian文件系统\02_制作好的debian镜像”下有制作好的文件系统镜像rootfs.ext4,和制作好的压缩文件 rootfs.tar.gz。

rootfs.ext4文件可以直接拷贝到image目录下,替换原来的文件系统镜像,然后直接进行烧写即可。

要是我们想对Debian系统进行一定的修改,则可以根据18.5小节进行系统CHroot挂载,然后进行修改。

 

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

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

相关文章

Spring框架的JDBC模板技术

目录 一、JDBC模板类的使用 1.引入依赖 2.测试类 3.运行&#xff0c;查看数据库 二、使用Spring框架来管理模板类 1.配置文件 2.测试类 3.运行&#xff0c;查看数据库 三、Spring框架管理开源的连接池 1.配置开源的连接池 2.将数据库连接的信息配置到属性文件中 3.核…

【万字详文介绍】:迭代扩张卷积神经网络(IDCNN)

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

2-Ubuntu/Windows系统启动盘制作

学习目标&#xff1a; 掌握使用Win32DiskImager、Rufus等工具制作系统启动盘的基本步骤。独立将ISO镜像文件写入USB闪存驱动器&#xff0c;确保在需要时顺利安装或修复系统。通过学习如何选择正确的源文件和目标驱动器&#xff0c;理解启动盘的使用场景和注意事项&#xff0c;…

简介Voronoi图Voronoi Diagrams

这是计算机的经典算法。 问题引入 倘若一张大白纸上有很多三角点&#xff0c;掉进去一个五星点&#xff0c;问&#xff0c;哪个三角离着五星最近&#xff1f;简单&#xff0c;算距离呗&#xff0c;这个五星到其他所有三角点的距离&#xff0c;找到最小的那个就行。 若掉进去…

【进阶sql】复杂sql收集及解析【mysql】

开发时会出现&#xff0c;必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串&#xff…

SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“

SLF4J常见问题 导入依赖&#xff1a; <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version> </dependency> <dependency><groupId>org.slf4j</groupId><arti…

002-Kotlin界面开发之Kotlin旋风之旅

Kotlin旋风之旅 Compose Desktop中哪些Kotlin知识是必须的&#xff1f; 在学习Compose Desktop中&#xff0c;以下Kotlin知识是必须的&#xff1a; 基础语法&#xff1a;包括变量声明、数据类型、条件语句、循环等。面向对象编程&#xff1a;类与对象、继承、接口、抽象类等。…

RSTP的工作过程

RSTP简介&#xff1a; 生成树协议&#xff08;STP&#xff09;用于在网络中防止环路产生&#xff0c;但 STP 的收敛速度较慢。 RSTP&#xff08;Rapid Spanning Tree Protocol &#xff09;快速生成树协议&#xff1a;RSTP 是对 STP 的改进&#xff0c;它能在网络拓扑发生变化…

【IEEE出版 | EI稳定检索】2024智能机器人与自动控制国际学术会议 (IRAC 2024,11月29-12月1日)

2024智能机器人与自动控制国际学术会议 &#xff08;IRAC 2024&#xff09; 2024 International Conference on Intelligent Robotics and Automatic Control 官方信息 会议官网&#xff1a;www.icirac.org 2024 International Conference on Intelligent Robotics and Autom…

nginx 搭建网站

1.查看防火墙状态systemctl status firewalld 2.getenforce 3.安装nginx yum install nginx -y 4.网站信息 echo "welcome to yinchuankejixuanyuan" > /usr/share/nginx/html/index.html 5.查看命令状态 nginx -t 6.重启 systemctl restart nginx

从0开始搭建一个生产级SpringBoot2.0.X项目(八)SpringBoot 使用Redis

前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 SpringBoot使用Redis 缓存数据 一、 pom引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>&…

Logstash 安装与部署(无坑版)

下载 版本对照关系&#xff1a;ElasticSearch 7.9.2 和 Logstash 7.9.2 &#xff1b; 官方下载地址 选择ElasticSearch版本一致的Logstash版本 https://www.elastic.co/cn/downloads/logstash 下载链接&#xff1a;https://artifacts.elastic.co/downloads/logstash/logst…

FBX福币交易所A股三大指数小幅低开 稀土永磁板块回调

查查配分析11月5日电 周二,A股三大指数小幅低开。沪指开盘跌0.10%报3306.81点,深证成指开盘跌0.09%报10653.20点,创业板指开盘跌0.05%报2184.90点。 FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 来源:同花顺iFinD 盘面…

基于python深度学习的交通标志图像识别设计与实现,卷积神经网络(CNN)作为主要架构

摘要 随着自动驾驶技术的发展&#xff0c;交通标志的识别与理解在智能交通系统中扮演着越来越重要的角色。本文设计并实现了一个基于深度学习的交通标志图像识别系统&#xff0c;通过对交通标志识别基准数据集的分析与处理&#xff0c;建立了一套完整的图像识别流程。使用Pyth…

js WebAPI黑马笔记(万字速通)

此笔记来自于黑马程序员&#xff0c;pink老师yyds 复习&#xff1a; splice() 方法用于添加或删除数组中的元素。 注意&#xff1a; 这种方法会改变原始数组。 删除数组&#xff1a; splice(起始位置&#xff0c; 删除的个数) 比如&#xff1a;1 let arr [red, green, b…

跟李沐学AI:BERT

什么是NLP中的迁移学习 使用预训练好的模型来抽取词、句子的特征&#xff1a;Word2Vec或者预训练好的语言模型。 使用预训练好的语言模型&#xff0c;一般不会再对语言模型进行微调&#xff0c;即不进行更新。 Word2Vec一般用于替代embedding层 但是Word2Vec往往忽略了时序…

【ArcGIS】绘制各省碳排放分布的中国地图

首先&#xff0c;准备好各省、自治区、直辖市及特别行政区&#xff08;包括九段线&#xff09;的shp文件&#xff1a; 通过百度网盘分享的文件&#xff1a;GS&#xff08;2022&#xff09;1873 链接&#xff1a;https://pan.baidu.com/s/1wq8-XM99LXG_P8q-jNgPJA 提取码&#…

Unity照片墙效果

Unity照片墙效果&#xff0c;如下效果展示 。 工程源码

开源模型应用落地-glm模型小试-glm-4-9b-chat-批量推理(二)

一、前言 GLM-4是智谱AI团队于2024年1月16日发布的基座大模型&#xff0c;旨在自动理解和规划用户的复杂指令&#xff0c;并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等&#xff0c;支持128K的上下文窗口&#xff0c;使其在长文本处理和精度召回方面表现优异&a…

计算机网络:网络层 —— 路由信息协议 RIP

文章目录 路由选择协议动态路由协议路由信息协议 RIPRIP 的重要特点RIP的基本工作过程RIP的距离向量算法RIP存在的问题RIP版本和相关报文的封装 路由选择协议 因特网是全球最大的互联网&#xff0c;它所采取的路由选择协议具有以下三个主要特点&#xff1a; 自适应&#xff1a…