x2600君正 ubi文件系统的编译和烧录

使用平台:君正x2600 ubi文件系统使用问题

1.ubi文件和ubifs文件

2 方法:mkfs.ubifs和ubinize两步打包ubi文件系统

mkfs.ubifs工具
mkfs.ubifs命令用于制作ubifs文件系统,命令示例如下:

mkfs.ubifs -x lzo -m 2KiB -e 124KiB -c 360 -o ./tmp_ubifs.img -d ./rootfs
1 参数含义:

-x:指定压缩算法

-m:最小读写单位,也就是页的大小

-e:逻辑擦除块的大小,注:逻辑擦除块不等同于物理擦除块,常用计算方法是:(一个擦除块的页数 - 2)* 页大小,在这里即:(64 - 2) * 2048 = 124KiB

-c:最大的逻辑擦除块个数,这个需要根据分区大小进行计算,常用计算方法是:总块数- 2(volume table) - 1(Wear-leveling) - 1(atomic LEB change) - ?(bad blocks) ,当前的系统中,文件系统分区的大小为:0x3200000 / (64 * 2048) = 400,也就是400个块,如果我们为坏块保留36个块,那么该值即为:400 – 2 -1 -1 -36 = 360

-o:指定输出文件的文件名

-d:指定根文件系统目录

ubinize工具

ubinize命令:ubinize -o rootfs_ubifs.bin -m 2KiB -p 128KiB -s 2KiB ./ubinize_config
参数含义:

-o rootfs_ubifs.bin:输出的BIN文件名称,后继U-BOOT烧录(nand wirte),应用升级,烧录器烧片,均使用的是此文件

-m 2KiB:最小读写单位,也就是页的大小

-p 128KiB:物理擦除块的大小

-s 2KiB:SUB PAGE的大小

./ubinize_config:上面的配置文件

ubinize配置文件的内容如下:ubinize.cfg是ubiniz工具制作ubi镜像需要指定的配置文件

[ubifs]
mode=ubi
image=rootfs.ubifs   # mkfs.ubi生成的源镜像
vol_id=0                   #卷序号
vol_size=70MiB     #卷大小
vol_type=dynamic  #动态卷
vol_name=rootfs    #卷名
vol_flags=autoresize

1) [rootfs]:为INI文件SECTION名字,没有特别含义

2) mode=ubi,具体含义未知

3) image=./tmp_ubifs.img:使用mkfs.ubifs生成的镜像文件的路径

4) vol_id=0:卷ID,注意其必须与bootargs参数对应上

5) vol_size=45711360:卷大小,其计算方式是:最大逻辑擦除块个数 * 逻辑块大小,这两个参数就是mkfs.ubifs的参数,360 * 124KiB = 45711360

6) vol_name=rootfs:卷名字,注意其必须与bootargs参数对应上

7) vol_type=dynamic,具体含义未知

8) vol_alignment=1,具体含义未知

mkfs.ubifs和ubinize两个工具 制作UBIFS镜像 ,具体步骤如下:

我的GD5F2GM7UEYIGR的参数:页面大小:2KB。容量:2Gb(或256MB)

  • 1.使用mkfs.ubifs命令将某个文件夹(目前我是将buildroot下output/target文件夹),制作为UBIFS镜像,具体命令为:

mkfs.ubifs -d ./target -e 0x1f800 -c 2048 -m 0x800 -x lzo  -o rootfs.ubifs
修正:
mkfs.ubifs -r ./target -o rootfs.ubifs -m 2048 -e 126976 -c 560

  • 2.新建和设置ubinize.cfg文件内容:

[ubifs]
mode=ubi
image=rootfs.ubifs  

vol_id=0
vol_size=70MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize

  • 3.使用ubinize命令可将使用mkfs.ubifs命令制作的UBIFS文件系统镜像(rootfs.ubifs)转换成可直接在FLASH上烧写的格式(带有UBI文件系统镜像卷标)

ubinize -o rootfs.ubi -m 0x800 -p 0x20000 -s 512 ubinize.cfg
修正:
ubinize -o rootfs.ubi -m 2048 -p 128KiB  ubinize.cfg

  • 4.生成的rootfs.ubi可直接使用NAND FLASH的烧写命令烧写到FLASH上。

经过上述两个步骤,可以成功的编译出ubi文件系统,并烧录成功!

 烧录的时候,在烧录conler.exe软件,要正确的配置

 

其他问题记录:在使用的时候,出现了两个问题,导致无法挂载。

3.错误解决1:

Loading compiled-in X.509 certificates
[    1.754057] Speaker enable pin(145) request ok
[    1.758696] ingenic-x2660-halley sound_x2600e_cdc: snd_soc_register_card failed -517
[    1.767023] Speaker enable pin(145) request ok
[    1.771690] ingenic-x2660-halley sound_x2600e_cdc: snd_soc_register_card failed -517

注册声卡时失败,错误码为 -517,即 EINVAL(无效的参数)。这通常意味着传递给函数的参数不正确,或者函数无法执行所请求的操作
[    1.780066] ubi0: attaching mtd2
[    1.783665] ubi0 error: validate_ec_hdr: bad VID header offset 512, expected 2048
[    1.791437] ubi0 error: validate_ec_hdr: bad EC header

函数检测到VID(Volume Identifier)头部偏移不正确(实际为512,但期望为2048),并且EC(Erase Counter)头部也是坏的。这通常意味着UBI卷的数据可能已损坏,或者UBI卷在格式化或创建时发生了错误。
[    1.796747] Erase counter header dump:
[    1.800658]  magic          0x55424923
[    1.804528]  version        1
[    1.807602]  ec             0
[    1.810678]  vid_hdr_offset 512
[    1.813918]  data_offset    2048
[    1.817246]  image_seq      839296234
[    1.821066]  hdr_crc        0x6411217b
[    1.824934] erase counter header hexdump:
[    1.829095] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.186 #22
[    1.835474] Stack : 80ad0000 00000000 00000000 00000000 809f5200 8184e800 00000000 80098ad0
[    1.844127]         00000000 00000000 00000000 f4a4a03a 80ce1c54 00000001 80ce1be8 f4a4a03a
[    1.852776]         00000000 00000000 809c7100 80ce1aa0 000000f3 80ce1ab4 00000000 00002008
[    1.861421]         316afcf7 80ce1ab3 ffffffff 00000030 80ac0000 00000000 00000000 809c0000
[    1.870063]         00000000 811a5000 55424923 8184e800 00000000 00000000 00000000 80b70000
[    1.878706]         ...
[    1.881235] Call Trace:
[    1.883766] [<8001f558>] show_stack+0x94/0x12c
[    1.888364] [<808ac548>] dump_stack+0xac/0xe8
[    1.892868] [<80555ed8>] validate_ec_hdr+0xd8/0x12c
[    1.897909] [<80556e90>] ubi_io_read_ec_hdr+0x32c/0x3a0
[    1.903308] [<8055db84>] ubi_attach+0x250/0x17fc
[    1.908078] [<8054efc8>] ubi_attach_mtd_dev+0x708/0xee4
[    1.913476] [<80b2f6bc>] ubi_init+0x1c0/0x274
[    1.917976] [<800106d8>] do_one_initcall+0x50/0x1e8
[    1.923017] [<80b14f38>] kernel_init_freeable+0x224/0x2b4
[    1.928596] [<808af994>] kernel_init+0x14/0x104
[    1.933284] [<

解决修正: mkfs.ubifs -d ./target -e 0x1f800 -c 2048 -m 0x800 -x lzo  -o rootfs.ubifs
修正:
mkfs.ubifs -r ./target -o rootfs.ubifs -m 2048 -e 126976 -c 560

ubinize -o rootfs.ubi -m 0x800 -p 0x20000 -s 512 ubinize.cfg
修正:
ubinize -o rootfs.ubi -m 2048 -p 128KiB  ubinize.cfg

4 错误解决:

[    1.790175] ubi0: attaching mtd2  系统尝试附加MTD设备mtd2到UBI设备ubi0。
[    1.950564] ubi0: scanning is finished  UBI扫描mtd2的过程已完成
[    1.958117] ubi0 error: vtbl_check: too large reserved_pebs 826, good PEBs 768

[  解释:UBI在检查卷表时遇到错误。具体来说,预留的物理擦除块(PEBs)数量太大(826个),但是可用的好的PEBs数量只有768个。这导致卷表检查失败,错误码为9。]
[    1.965617] ubi0 error: vtbl_check: volume table check failed: record 0, error 9
[    1.973271] Volume table record 0 dump:
[    1.977231]  reserved_pebs   826
[    1.980581]  alignment       1
[    1.983735]  data_pad        0
[    1.986881]  vol_type        1
[    1.990039]  upd_marker      0
[    1.993186]  name_len        6
[    1.996331]  name            rootfs
[    1.999928]  crc             0x39a49ffc
[    2.004076] ubi0 error: ubi_attach_mtd_dev: failed to attach mtd2, error -22
[    2.011407] UBI error: cannot attach mtd2
由于前面的卷表检查错误,UBI无法附加mtd2设备,错误码为-22(EINVAL即无效的参数)
[    2.015557] ubi0: attaching mtd3
[    2.222953] ubi0: scanning is finished
[    2.232183] ubi0: attached mtd3 (name "userdata", size 151 MiB)
[    2.238319] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    2.245451] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    2.252497] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    2.259693] ubi0: good PEBs: 1208, bad PEBs: 0, corrupted PEBs: 0
[    2.266005] ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128
[    2.273482] ubi0: max/mean erase counter: 1/1, WL threshold: 4096, image sequence number: 858485108
[    2.282843] ubi0: available PEBs: 1164, total reserved PEBs: 44, PEBs reserved for bad PEB handling: 40
[    2.292576] ubi0: background thread "ubi_bgt0d" started, PID 828
[    2.299183] input: gpio_keys as /devices/platform/gpio_keys/input/input0
[    2.306809] Speaker enable pin(145) request ok
[    2.311546] ingenic-x2660-halley sound_x2600e_cdc: snd_soc_register_card failed -517
[    2.320002] ALSA device list:
[    2.323169]   No soundcards found.
[    2.327008] VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0): error -19
[    2.335329] Please append a correct "root=" boot option; here are the available partitions:
[    2.344017] 0100

修正:vol_size=70MiB ,一开始给的200MiB、100MiB,过大,导致nandflash没有剩余空间了! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FSNotes for Mac v6.7.1中文激活版:强大的笔记管理工具

FSNotes for Mac是一款功能强大的文本处理与笔记管理工具&#xff0c;为Mac用户提供了一个直观、高效的笔记记录和整理平台。 FSNotes for Mac v6.7.1中文激活版下载 FSNotes支持Markdown语法&#xff0c;使用户能够轻松设置笔记格式并添加链接、图像等元素&#xff0c;实现笔记…

【软考高项】第十二章 项目质量管理

目录 12.1管理基础 12.1.1质量与项目质量 12.1.2质量管理 12.1.3质量管理标准体系 12.1.4管理新实践 12.2项目质量管理过程 12.2.1过程概述 12.2.2裁剪考虑因素 12.2.3敏捷与适应方法 12.3规划质量管理 12.3.1输入 12.3.2工具与技术 12.3.3输出 12.4管理质量 12…

最小K个数(力扣面试题17.14)

本文采用的是大堆排序求最小的K个值。需要有堆的数据结构基础哦。 代码展示&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/ void AdjustDown(int* parr,int n,int root)//向下调整 {int parentroot;int child parent*21;while…

opencv_23_高斯模糊

void ColorInvert::gaussian_blur(Mat& image) { Mat dst; GaussianBlur(image, dst, Size(0, 0), 15); // Size(2, 2), imshow("图像模糊2", dst); }

代码随想录算法训练营DAY42|C++动态规划Part4|0-1背包理论基础(一)、0-1背包理论基础之滚动数组(二)、416.分割等和子集

文章目录 0-1背包理论基础(一)前置知识01背包动态规划&#xff1a;01背包二维dp数组 CPP代码再论01背包的遍历顺序 0-1背包理论基础(二)一维dp数组如何初始化一维dp数组遍历顺序举例推导dp数组CPP代码 416.分割等和子集思路将题目抽象成0-1背包问题 CPP代码 0-1背包理论基础(一…

2013NOIP普及组真题 4. 车站分级

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1964 核心思想&#xff1a; 1、原文中提到 “如果这趟车次停靠了火车站 x&#xff0c;则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠”&#xff0c;如果设停靠站为A&…

ansible-playbook离线升级centos内核

目录 概述实践ansible目录结构关键代码执行效果 结束 概述 内核离线包官网下载地址如下&#xff1a; 地址 实践 ansible目录结构 如对 ansible 不熟悉&#xff0c;离线包下载有问题&#xff0c;请至此地址下载&#xff0c;按本文操作可直接使用。 相关文章链接如下 文章地…

如何在iPhone上恢复出厂设置后恢复数据

你不想让这种情况发生&#xff0c;但它确实发生了。您必须将iPhone恢复出厂设置。当您的 iPhone 上出现软件问题且无法修复时&#xff0c;可能会发生这种情况。相反&#xff0c;在更新期间&#xff0c;或者您的iPhone遇到问题时&#xff0c;iPhone上的数据不再存在。 不过不用…

goget配置多个golang 运行环境

一台主机安装多个golang 运行环境 本环境 windows10 为 基础 mac linux也可以按照此方法操作 背景 开发不同的运维工具会用到不同版本的golang&#xff0c;但是开发者不能一直进行重装来处理 &#xff0c;因此 需要一个工具进行golang版本的管理 go管理工具介绍 gvm (Go V…

android webview检测屏幕

1&#xff09;清单文件配置&#xff1a; 配置权限&#xff1a; <uses-permission android:name"android.permission.INTERNET" /> 注册activity&#xff1a; <activityandroid:name".TouchWebViewActivity"android:exported"true"&…

基于随机森林和Xgboost对肥胖风险的多类别预测

基于随机森林和Xgboost对肥胖风险的多类别预测 作者&#xff1a;i阿极 作者简介&#xff1a;数据分析领域优质创作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏…

学习【Mysql运维篇】这一篇就够了

运维篇 1. 日志1-1. 错误日志1-2. 二进制日志1-3. 查询日志1-4. 慢查询日志 2. 主从复制2-1. 概述2-2. 原理2-3. 搭建 3. 分库分表3-1. 介绍3-2. Mycat概述3-3. Mycat入门3-4. Mycat配置3-5. Mycat分片3-6. Mycat管理及监控 4. 读写分类 1. 日志 1-1. 错误日志 错误日志是MyS…

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密数据恢复流程

网络技术的不断应用与发展&#xff0c;为企业的生产运营带来了极大便利&#xff0c;越来越多的企业依赖网络开展各项工作业务&#xff0c;网络也大大提升了企业的生产运营效率&#xff0c;但网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企业的数据安全…

云里物里家电运输新模式:实时定位、智能监控、降本增效

随着电商行业的飞速发展&#xff0c;大家电作为大宗商品&#xff0c;其物流运输过程中面临的痛点日益凸显。如何确保大家电在运输过程中的安全、及时送达以及成本控制&#xff0c;成为了物流企业亟待解决的问题。云里物里自研的物流资产监控管理方案&#xff0c;有效解决了大家…

JAVA面试题分享--集合

常见的数据结构&#xff08;了解&#xff09; 常用的数据结构有&#xff1a;数组&#xff0c;栈&#xff0c;队列&#xff0c;链表&#xff0c;树&#xff0c;散列&#xff0c;堆&#xff0c;图等 数组是最常用的数据结构&#xff0c;数组的特点是长度固定&#xff0c;数组的大…

一、交换网络基础

目录 1.交换机的转发行为 2.数据帧的类型 3.ARP地址解析步骤 Hub&#xff1a;物理层设备 交换机&#xff1a;数据链路层设备 1.交换机的转发行为 泛洪&#xff08;Flooding&#xff09;&#xff08;有可能是单播帧&#xff08;未知单播帧&#xff09;&#xff0c;也有可能是…

10GMAC层设计系列-(1)10G Ethernet PCS/PMA

一、引言 对于10G以太网MAC层的实现&#xff0c;Xilinx提供了 3种IP核&#xff0c;分别是 10G Ethernet MAC、10G Ethernet PCS/PMA、10G Ethernet Subsystem。 10G Ethernet MAC只包含MAC层&#xff0c;外部需要提供一个PHY芯片进行数据对齐&#xff0c;10G Ethernet MAC与P…

Python 深度学习(二)

原文&#xff1a;zh.annas-archive.org/md5/98cfb0b9095f1cf64732abfaa40d7b3a 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第五章&#xff1a;图像识别 视觉可以说是人类最重要的感官之一。我们依赖视觉来识别食物&#xff0c;逃离危险&#xff0c;认出朋友和家人…

Kompas.ai的可持续内容生态:绿色营销的新选择

在全球环境保护意识日益增强的今天&#xff0c;绿色营销已成为企业树立品牌形象、展示社会责任的重要手段。绿色营销不仅关注产品的环保特性&#xff0c;还包括企业的整体可持续发展战略和对环境的积极贡献。本文将讨论企业如何通过绿色营销树立品牌形象&#xff0c;介绍Kompas…

el-cascader 数据回显 checkbox没有被勾选

需求&#xff1a; 需要支持多选以及能搜索&#xff0c;并且 点击所有队伍最新版本这个功能按钮时&#xff0c;要将用户勾选的数据保存的前提下&#xff0c;将满足条件的数据也一并勾选。最后保存的数据 只需要子级的id&#xff0c;组成数组就行了&#xff0c;所以我这里有用到…
最新文章