嵌入式Linux系统开发笔记(十三)

news2024/10/9 6:31:04

U-Boot烧写验证测试

正点原子专门编写了一个软件来将编译出来的.bin 文件烧写到 SD 卡中,这个软件叫做“imxdownload”

【1】将 imxdownload 拷贝到工程根目录下

【2】给予 imxdownload 可执行权限

我们直接将软件 imxdownload 从 Windows 下复制到 Ubuntu 中以后, imxdownload 默认是没有可执行权限的。我们需要给予 imxdownload 可执行权限,使用命令“chmod”,命令如下:

chmod 777 imxdownload

当给予 imxdownload 可执行权限以后其名字变成了绿色的,如果没有可执行权限的话其名字颜色是白色的。所以在 Ubuntu 中我们可以初步的从文件名字的颜色判断其是否具有可执行权限。

【3】确定要烧写的 SD 卡。

准备一张新的 SD(TF)卡,确保 SD 卡里面没有数据,因为我们在烧写代码的时候可能会格式化 SD 卡!!!

Ubuntu 下所有的设备文件都在目录“/dev”里面,所以插上 SD 卡以后也会出现在“/dev”里面,其中存储设备都是以“/dev/sd”开头的。我们要先看一下不插 SD 卡的时候电脑都有哪些存储设备,以防插入 SD 卡以后分不清谁是谁。输入如下所示命令:

ls /dev/sd*  

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-98QqWvG5-1675180576786)(..\Linux驱动开发记录\Linux驱动开发记录图库\确认烧写的SD卡-1.png)]

用读卡器将 SD 卡插到电脑

如果你的电脑没有找到 SD 卡的话,尝试重启一下 Ubuntu 操作!

拓展:

如果你的电脑没有找到 SD 卡,且重启Ubuntu 也还是无法识别到SD卡(U盘)可尝试做如下操作:

这种情况一般是插入USB设备后,”USB设备“都无法在Ubuntu下识别,且VMware中“连接(断开与主机连接)©”为灰色不可选中状态,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZrZEWe9v-1675180576787)(…\Linux驱动开发记录\Linux驱动开发记录图库\连接灰色.png)]

解决:首先关闭虚拟机系统,找到当前虚拟机的安装目录,找到【.vmx】文件,如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xZHcdJhn-1675180576788)(…\Linux驱动开发记录\Linux驱动开发记录图库.vmx文件目录.png)]

选用记事本工具打开,找到【usb.restrictions.defaultAllow = “FALSE”】配置,将“FALSE”修改为“TRUE”,然后保存并关闭文件,再次启动虚拟机系统,此时虚拟机就能正常识别“U盘设备”了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JuAN66bM-1675180576788)(…\Linux驱动开发记录\Linux驱动开发记录图库\解决VMware能识别usb设备,但无法连接(灰色)问题.png)]

然后我们再次输入【ls /dev/sd* 】指令,即可确认我们的SD卡的设备类型,【/dev/sdc】即是我的 SD 卡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zpqEU30U-1675180576789)(E:\我的技术开发项目\我的技术学习与总结\Linux系统及驱动开发\Linux驱动开发记录\Linux驱动开发记录图库\九-4.0-1-确认烧写SD卡设备.png)]

【4】向 SD 卡烧写 bin 文件

使用 imxdownload 向 SD 卡烧写 .bin 文件,命令格式如下:

./imxdownload <.bin file> <SD Card>  

其中.bin 就是要烧写的.bin 文件, SD Card 就是你要烧写的 SD 卡

4.1 烧写 u-boot.bin 到/dev/sdc 中
./imxdownload u-boot.bin /dev/sdc	# 不能烧写到/dev/sda 或 sda1 设备里面!那是系统磁盘  

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YQ8IwrJL-1675180576789)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.1-1-烧写验证.png)]

烧写的过程中可能会让你输入密码,输入你的 Ubuntu 密码即可完成烧写,烧写的最后一行会显示烧写大小、用时和速度 。注意这个烧写速度,如果这个烧写速度在几百 KB/s 以下那么就是正常烧写。如果这个烧写速度大于几十 MB/s、甚至几百 MB/s 那么肯定是烧写失败了!

烧写完成以后将 SD 卡插入 I.MX6U-ALPHA 开发板的 TF 卡槽中,最后设置开发板从 SD卡启动。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ARTkJ7hn-1675180576790)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.1-2-uboot启动验证.png)]

uboot 启动正常,虽然我们用的是 NXP 官方 I.MX6ULL 开发板的uboot,但是在正点原子的 I.MX6ULL 开发板上是可以正常启动的。而且 DRAM 识别正确,为512MB 。

4.2 SD 卡和 EMMC 驱动检查

检查一下 SD 卡和 EMMC 驱动是否正常,使用命令 mmc list 列出当前的 MMC 设备

mmc list

可以看出当前有两个 MMC 设备,检查每个 MMC 设备信息,先检查 MMC 设备 0,输入如下命令:

mmc dev 0
mmc info

可以看出, mmc 设备 0 是 SD 卡, SD 卡容量为 14.8GB,这个和我所使用的SD 卡信息相符,说明 SD 卡驱动正常。

再来检查 MMC 设备 1,输入如下命令:

mmc dev 1
mmc info

可以看出, mmc 设备 1 为 EMMC,容量为 7.3GB,说明 EMMC 驱动也成功,SD 卡和 EMMC 的驱动都没问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YKOpgflJ-1675180576790)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.2-1-SD卡和EMMC驱动验证.png)]

4.3 LCD 驱动检查

如果 uboot 中的 LCD 驱动正确的话,启动 uboot 以后 LCD 上应该会显示出 NXP 的 logo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCKIb6If-1675180576791)(E:\我的技术开发项目\我的技术学习与总结\Linux系统及驱动开发\Linux驱动开发记录\Linux驱动开发记录图库\九-4.3-1-lcd驱动验证.png)]

如果你用的不是正点原子的 4.3 寸 480x272 分辨率的屏幕的话,那么 LCD 就不会显示 以上logo 界面。因为 NXP 官方 I.MX6ULL 开发板的屏幕就是 4.3 寸 480x272 分辨率的,所以 uboot 默认 LCD 驱动是 4.3 寸 480x272 分辨率的。如果使用其他分辨率的 LCD 就需要修改 LCD 驱动。(因为我本次试验用就是正点原子 4.3 寸 480x272 分辨率的屏幕,故NXP logo正常显示)

4.4 网络驱动检查

uboot 启动的时候提示“Board Net Initialization Failed”和“No ethernet found.”这两行,说明网络驱动也有问题。 正常情况下应该是如图 :

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7khs2AS1-1675180576791)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.4-1-uboot启动网络驱动正常现象.png)]

这是因为正点原子开发板的网络芯片复位引脚和 NXP 官方开发板不一样,因此需要修改驱动。 修改完网络驱动,重新编译 uboot,然后将 u-boot.bin 烧写到 SD 卡中并启动, uboot 启动信息如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GAYzweDw-1675180576792)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.4-2-uboot修改完网络驱动启动.png)]

可以看到“Net: FEC1”这一行,提示当前使用的 FEC1 这个网口,也就是 ENET2。

网络报错Error: FEC1 address not set

原因是没有网络配置,因此需要设置如下网络信息

setenv ipaddr 192.168.1.55 			# 开发板 IP 地址
setenv ethaddr b8:ae:1d:01:00:00 	# 开发板网卡 MAC 地址
setenv gatewayip 192.168.1.1 		# 开发板默认网关
setenv netmask 255.255.255.0 		# 开发板子网掩码
setenv serverip 192.168.1.106 		# 服务器地址,也就是 Ubuntu 地址
saveenv 							# 保存环境变量

设置好环境变量以后就可以在 uboot 中使用网络了,用网线将 I.MX6U-ALPHA 上的 ENET2与电脑或者路由器连接起来,保证开发板和电脑在同一个网段内,通过 ping 命令来测试一下网络连接,命令如下:

ping 192.168.1.106

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dJJOONjP-1675180576792)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.4-3-uboot-FEC1-ping-host.png)]

可以看出,有“host 192.168.1.250 is alive”这句,说明 ping 主机成功,说明ENET2网络工作正常。再来测试一下 ENET1 的网络是否正常工作,打开 mx6ullatk.h,将 CONFIG_FEC_ENET_DEV 改为 0,然后重新编译一下 uboot 并烧写到 SD 卡中重启。重启开发板。

注:正点原子Mini LinuxI.MX6ULL只有一个网络接口ENET2,我这里使用的是Mini LinuxI.MX6ULL开发板,所以只验证了NET2网络)。

建议大家将ENET2 设置为 uboot 的默认网卡!也就是将宏 CONFIG_FEC_ENET_DEV 设置为 1。

4.5 uboot 启动 Linux 测试

我们测试两种启动 Linux 内核的方法,一种是直接从 EMMC 启动,一种是从网络启动。

4.5.1 从 EMMC 启动 Linux 系统

从 EMMC 启动也就是将编译出来的 Linux 镜像文件 zImage 和设备树文件保存在 EMMC中, uboot 从 EMMC 中读取这两个文件并启动。

正点原子出厂的I.MX6U-ALPHA 开发板(EMMC 版本)已经将 zImage 文件和设备树文件烧写到了 EMMC 中,所以我们可以直接读取来测试。先检查一下 EMMC 的分区 1 中有没有zImage 文件和设备树文件,输入命令“ls mmc 1:1”,结果如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MhF6TTVD-1675180576793)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.5.1-1-uboot下检查EMMC的分区1中内核和设备数树.png)]

设置 bootargs 和 bootcmd这两个环境变量,设置如下:(因为我的开发配的是4.3寸,480x272分辨率的屏,所以选择imx6ull-14x14-emmc-4.3-480x272-c.dtb设备树文件)

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

setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-480x272-c.dtb; bootz 80800000 - 83000000;'

设置好以后直接输入 boot,或者 run bootcmd 即可启动 Linux 内核 。如果 Linux 内核启动成功的话就会输出如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aXf9BvKr-1675180576793)(..\Linux驱动开发记录\Linux驱动开发记录图库\九-4.5.1-2-uboot启动内核.png)]

4.5.2 从网络启动 Linux 系统

从网络启动 linux 系统的唯一目的就是为了调试!不管是为了调试 linux 系统还是 linux 下的驱动。每次修改 linux 系统文件或者 linux 下的某个驱动以后都要将其烧写到 EMMC 中去测试,这样太麻烦了。

我们可以设置 linux 从网络启动,也就是将 linux 镜像文件和根文件系统都放到 Ubuntu 下某个指定的文件夹中,这样每次重新编译 linux 内核或者某个 linux 驱动以后只需要使用 cp 命令将其拷贝到这个指定的文件夹中即可,这样就不用需要频繁的烧写 EMMC,这样就加快了开发速度。

我们可以通过 nfs 或者 tftp 从 Ubuntu 中下载 zImage 和设备树文件,根文件系统的话也可以通过 nfs 挂载。这里我们使用 tftp 从 Ubuntu 中下载 zImage 和设备树文件,前提是要将 zImage 和设备树文件放到 Ubuntu 下的 tftp 目录中。

设置 bootargs 和 bootcmd 这两个环境变量,设置如下:

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

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-emmc-4.3-480x272-c.dtb; bootz 80800000 - 83000000'

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

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

相关文章

【干货】Windows下cmd中cd命令的使用方法

【干货】Windows下cmd中cd命令的使用方法什么是cd命令cd命令的使用打开cmdcd命令的常用方法进入某个盘进入某个目录返回上一级目录返回至当前工作目录下的根目录参考什么是cd命令 此处介绍两个概念&#xff1a; cmd&#xff1a;命令提示符cd&#xff1a;全称change directory…

model.train()与model.val()

一、问题描述 需要将mmpose框架下训练的模型单独保存出来&#xff0c;做后续处理。用torch.save()直接保存模型mmpose_model.pt&#xff0c;然后重新搭建模型&#xff0c;把保存的模型参数加载进去&#xff0c;得到scratch_model.pt使用scratch_model.pt进行推理&#xff0c;与…

基于Jmeter的百万级tps性能测试实践

【CSDN 编者按】如何对系统的承载能力和响应时间做出准确的评估&#xff0c;为资源的合理配置及优化提供依据&#xff0c;性能测试就成了必不可少的测试手段&#xff0c;本文会给读者推荐一款业界占有率最高的一款性能测试工具——Jmeter。 本文作者朱凯是环信测试主管&#x…

TCP实现回显服务器及客户端

目录 前言&#xff1a; Socket API SeverSocket API TCP中的长短连接 TCP实现回显服务器 代码实现&#xff08;有详细解释&#xff09; TCP实现回显客户端 代码实现&#xff08;有详细注释&#xff09; 小结&#xff1a; 前言&#xff1a; 上篇文章介绍了TCP的特点。由…

195136-58-4,2‘,7‘-Difluorofluorescein,2,7-二氟荧光素

产品描述&#xff1a;2&#xff0c;7-二氟荧光素中Fluorescein (Uranine) 生物应用中的荧光示踪剂&#xff0c;Fluorescein (Uranine) 是一种具有代表性的绿色荧光团&#xff0c;已被广泛用作实用绿色荧光探针的支架。结构式&#xff1a;理论分析&#xff1a;中文名&#xff1a…

1608_PC汇编语言_first例程分析

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次的笔记主要是梳理一个例程以及部分辅助信息。 为什么要学习汇编语言呢&#xff1f;现在的高级语言开发效率高&#xff0c;而且有着不错的效率&#xff0c;是…

Compose之跨平台Activity页面

前言 Compose(Jetpackjb)是可以跨平台的 目前跨平台主流的页面导航方式一般有两种 一种是都在同一个页面内进行页面替换类型的导航,类似于单Activity,多Fragment 另一种是不同的页面在不同的页面载体上,类似多Activity 两种页面导航方式都可以使用,但我比较偏向于使用多Ac…

加密签名算法

序言如果我们要消费的一段字符串没有唯一标识,我们该如何防止重复消费.cuiyaonan2000163.com背景信息加密加密技术是最常用的安全保密手段&#xff0c;利用技术手段把重要的数据变为乱码&#xff08;加密&#xff09;传送&#xff0c;到达目的地后再用相同或不同的手段还原&…

【虚拟仿真】Unity3D中实现鼠标悬浮模型上显示文字

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在仿真项目开发中&#xff0c;会遇到让鼠标悬浮模型后显示模型…

《流浪地球2》MOSS出圈,现实中的量子计算机长啥样?

科技云报道原创。 春节档科幻电影《流浪地球2》上映后&#xff0c;影片中被誉为“全场最有价值道具”的智能量子计算机MOSS&#xff08;代号550W&#xff09;火了&#xff01; 如果你看完了片尾彩蛋&#xff0c;会发现MOSS或许是整个流浪地球系列电影中的最大反派&#xff0c…

支持向量机-数学模型

支持向量机&#xff08;support vector machines, SVM&#xff09;是一种二分类模型。基本模型是定义在特征空间上的间隔最大的线性分类器&#xff1b;学习策略&#xff1a;间隔最大化&#xff1b;学习算法&#xff1a;求解凸二次规划的最优化算法。 支持向量机分为线性可分支…

自动驾驶感知——激光雷达基本概念|激光雷达点云|激光雷达的标定

文章目录1. 激光雷达基本概念1.1 激光雷达特点1.2 激光雷达测距原理1.2.1 系统组成1.2.2 激光雷达测距原理1.3 常见的激光雷达1.3.1 机械旋转式激光雷达1.3.2 Velodyne HDL-64E1.3.3 固态激光雷达1.3.4 Flash型固态激光雷达1.3.5 相控阵固态激光雷达1.3.6 MEMS型固态激光雷达1.…

NX二开ufun函数UF_MODL_create_surf_from_cloud(使用现有点创建B曲面)

本节主要讲使用现有点创建B曲面的ufun函数UF_MODL_create_surf_from_cloud&#xff0c;这些点可以按任何顺序出现&#xff0c;但是必须有足够的点来定义平面。 先看实例效果图&#xff1a; 1、函数结构 int UF_MODL_create_surf_from_cloud &#xff08; int point_cnt&#…

双栏Latex模板插入多个图片的各种排布

目录 问题描述&#xff1a; 问题解决&#xff1a; 1. 插入一个图片 示意图如下&#xff1a; 2.插入2x1两个图片&#xff1a;2x1 示意图如下&#xff1a; 3. 插入1x2两个图片&#xff1a;1x2 示意图如下&#xff1a; 4.插入2x2两个图片&#xff1a;2x2 示意图如下&…

shell脚本set -eu引起的学习笔记

本文将介绍Bash中 set -euxo pipefail 大佬的文章学习膜拜体验&#xff0c;它们可以帮助你写出更容易维护也更安全的脚本。这也是Bash脚本的终极调试手段&#xff0c;希望你以后在自己的脚本中加上这么一行&#xff0c;头顶也能少秃一点 今天打开一个脚本《JetsonNano使能SPI总…

00后真的是躺平的一代吗?已经被公司新来的00后卷哭了

2023年开年了&#xff0c;公司也来了许多新面孔&#xff0c;其中居然有一个是00年的&#xff0c;虽然也给公司带来了一些新的血液&#xff0c;但也让我意识到&#xff0c;自己年级确实不小了。这小老弟是去年毕业的&#xff0c;在某软件公司干了半年&#xff0c;现在跳槽到我们…

java常用类: String,StringBuffer和StringBuilder的底层区别

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录String介绍String创建细节String s…

大数据技术架构(组件)13——Hive:字符串函数

1.4.7、字符串函数1.4.7.1、asciiselect ascii(a);1.4.7.2、base64-->Hive0.12.0select base64(cast(abcd as binary));1.4.7.3、character_length-->Hive2.2.01.4.7.4、chr-->Hive1.3.01.4.7.5、concatselect concat(1,1,2,a),concat(1,a,null);1.4.7.6、context_ngr…

【JavaSE】ArrayList的扩容机制源码分析

文章目录1. ArrayList概述2. ArrayList构造方法源码分析3. ArrayList.add()源码分析4. ArrayList.addAll()源码分析5. 总结1. ArrayList概述 ArrayList是Java集合框架中比较常用的一个数据结构了&#xff0c;它底层是基于数组实现的。数组是固定大小的&#xff0c;但是ArrayLi…

禾川HCQ+X3E ModBUS 电机远程启动

前面讲过了 通过EtherCat总线级联X3E控制伺服电机,这次使用ModBus总线远程控制该电机启停。 硬件: HCQ0 1100/1200D X3EB 驱动 SV系列电机,主机电脑或者主PLC,硬件连接:电脑网口连HCQ0 port1 port2 连X3EB,软件需要用到TCP调试工具。 步骤一通讯: 1建立工程,修改本机地…