调试redboot和内核的心得--MTD partition相关

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑 阅读详情
1、Linux内核MTD驱动获取flash布局的方式:
1)利用redboot
内核支持Redboot建立的flash分区表,在编译内核时打开下面选项:
#支持Redboot的FIS分区表
CONFIG_MTD_REDBOOT_PARTS=y
#FIS分区表存放在flash倒数第二个block中
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2
在Device Drivers -> MTD ->RedBoot partition table parsing

2)利用内核命令行,比如:

console=ttyS0,115200 root=31:02 rootfstype=jffs2 mtdparts=ar7100-nor0:256k(boot),0x130000(kernel),0x600000(jffs2),-(config) init=/sbin/init
指定root在MTD的第3个分区(31为MTD设备号,02表示第3个分区),rootfs的文件系统格式为jffs2,MTD分区为ar7100- nor0的Flash设
备,第一个分区为boot,大小为256k,第2个分区为kernel,大小为0x130000,第3个分区为jffs2文件系统,大小为 0x600000,剩下的为
config配置分区。
注意:指定这些分区大小时,要以Flash的block大小对齐,比如64k的Block大小就必须能被0x10000整除,否则内核启动后这些没有对
block对齐的分区将被限制为只读,以便擦除到别分区的内容。
需要打开内核编译选项:
CONFIG_MTD_CMDLINE_PARTS=y
也就是menuconfig中MTD下的“Command line partition table parsing ”

2、Redboot的启动脚本中传递命令行参数给内核
使用exec -c 选项,例如:
fis load -d vmlinux
exec -c "console=ttyS0,115200 root=31:02 rootfstype=jffs2 mtdparts=ar7100-nor0:256k(boot),0x130000(kernel),0x600000(jffs2),-(config) init=/sbin/init"
3、如何使jffs2的根文件系统可写
在rootfs的/etc/init.d/rcS中加入:
mount -a
mount -o remount +w /
第一个命令是mount /etc/fstab中的内容(如果/etc/fstab存在的话),第二个命令为重新mount根文件夹为可写。
示例:
# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / jffs2 ro 0 0
null /proc proc rw 0 0
none /tmp ramfs rw 0 0
none /var ramfs rw 0 0
# mount -o remount +w /
# mount
rootfs on / type rootfs (rw)
/dev/root on / type jffs2 (rw)
null on /proc type proc (rw)
none on /tmp type ramfs (rw)
none on /var type ramfs (rw)

4、创建可写的/tmp和/var
mount -t ramfs -n none /tmp
mount -t ramfs -n none /var

5、jffs2文件系统的创建
mkfs.jffs2 --root=/nfsroot --eraseblock=0x10000 -b -D dev.txt --squash -o rootfs-jffs2 --pad=0x600000
把/nfsroot下的文件打包为rootfs-jffs2文件,-b参数指定大端字节模式,--squash参数忽略要打包文件的权限属性,
设置root为这些文件的属主,--pad=0x600000参数指定填充打包后的文件为0x600000大小,-D指定打包的/dev目录来自
dev.txt文件,--eraseblock=0x10000指定擦除块大小为64k。
注意:一定要加--pad参数来指定jffs2文件系统的大小,否则mount后就会发现该文件系统已经满了,无法创建任何文件。

dev.txt文件的内容:
/dev/tty        c       666     0       0       5 0
/dev/console    c       666     0       0       5 1
/dev/mem        c       666     0       0       1 1
/dev/kmem       c       666     0       0       1 2
/dev/null       c       666     0       0       1 3
/dev/random     c       666     0       0       1 8
/dev/urandom c 666 0   0   1 9
/dev/zero       c       666     0       0       1 5
/dev/ptmx       c       666     0       0       5 2    1       10
/dev/ptyp0      c       666     0       0       2 0    1       10
/dev/ptyp1      c       666     0       0       2 1    1       10
/dev/ptyp2      c       666     0       0       2 2    1       10
/dev/ram0       b       666     0       0       1 0    1       4
/dev/tty0       c       666     0       0       4 0    1       10
/dev/tty1       c       666     0       0       4 1    1       10
/dev/tty2       c       666     0       0       4 2    1       10
/dev/ttyS0      c       666     0       0       4 64   1       2
/dev/ttyS1      c       666     0       0       4 65   1       2
/dev/ttyS2      c       666     0       0       4 66   1       2
/dev/ttyp0      c       666     0       0       3 0    1       10
/dev/ttyp1      c       666     0       0       3 1    1       10
/dev/ttyp2      c       666     0       0       3 2    1       10
/dev/mtd0       c       666     0       0       90 0   1       4
/dev/mtdr0      c       666     0       0       90 1   1       4
/dev/mtdblock0 b       666     0       0       31 0   1       4
/dev/mtdblock1 b       666     0       0       31 1   1       4
/dev/mtdblock2 b       666     0       0       31 2   1       4
/dev/mtdblock3 b       666     0       0       31 3   1       4
/dev/mtdblock4 b       666     0       0       31 4   1       4
/dev/mtdblock5 b       666     0       0       31 5   1       4
/dev/mtdblock6 b       666     0       0       31 6   1       4
如果在/etc/fstab没有
devpts /dev/pts        devpts defaults        0 0
则需要增加以下内容供telnetd使用:
/dev/pts/0      c       666     0       0       136 0
/dev/pts/1      c       666     0       0       136 1
/dev/pts/2      c       666     0       0       136 2
/dev/pts/3      c       666     0       0       136 3
/dev/pts/4      c       666     0       0       136 4
/dev/pts/5      c       666     0       0       136 5

6、如何建立嵌入式系统中的passwd, group, shadow等文件
在编译busybox时如果不选择shadow功能将不需要shadow文件。
这些文件至少要包含 root用户的定义,如下所示:
passwd:
root:x:0:0:root:/root:/bin/sh
group:
root:x:0:
shadow:
root:: 12179:0:99999:7:::其中,如果shadow (对于不支持shadow的系统则是passwd )文件的第一个冒号和第二个冒号之间没有内容,表示这个用户登录不需要密码。如果需要设定密码或者增加新的登录用户,就可以参考开发主机上的相应文件,或者在目标系统启动之后用passwd命令和adduser命令完成。
给目标机起一个名字,在/etc目录下建立文件hostname,将起好的名字写到里面。在启动脚本rcS,通过hostname命令把文件的内容设置为机器名。

 

 
【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局 本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。 阅读详情

相关推荐

伪距单点定位算法原理以及利用最小二乘法计算实例

即该公式:建立下列代价函数满足最佳估值的条件为:即:可解得未知参数 X 的最佳估值由于每个可见卫星观测量的精度可能不一样,这时,需要对不同观测量赋予一个权重系数,称为加权。

qq_43381998的博客 1万+

今天调试redboot和内核的心得

调试redboot和内核的心得1、Linux内核MTD驱动获取flash布局的方式:1)利用redboot内核支持Redboot建立的flash分区表,在编译内核时打开下面选项:#支持Redboot的FIS分区表CONFIG_MTD_REDBOOT_PARTS=y#FIS分区表存放在flash倒数第二个block中CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2

Hansel的专栏 2303

Oasys安装教程

在基环境下执行然后去 C:\Users.condarc打开 .condarc这个文件 删除干净里面的东西。

weixin_44254178的博客 1295

【Linux】【驱动】MTD分区表信息解析方法分析

static const char *part_probes[] __initdata = {"cmdlinepart", "RedBoot", NULL}; 这个说明MTD分区参数的分析有两种方法,一个是命令行,一个是通过redboot 在xxx_flash_init函数(xxx是芯片代号)中会调用np = parse_mtd_partitions(mtd, part_probes, &mtd

vickytong1018的博客 5655

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 559

Ubuntu终端一键安装英伟达驱动:无需手动下载的完整指南

本文提供了一份在Ubuntu系统上通过终端命令一键安装英伟达显卡驱动的完整指南。该方法利用官方PPA源,无需手动下载驱动文件,可自动检测硬件并安装最佳版本,极大简化了流程,适合深度学习环境搭建等场景,有效提升安装效率与稳定性。

weixin_29232121的博客 180

Linux驱动学习(4) MTD字符驱动和块驱动3

前面学习了mtd字符设备驱动的初始化流程和读写流程,其实原理和操作方法和一般的字符设备驱动一致,本章学习的块设备驱动会有较多不一样的地方。一、mtd块设备是什么?mtd块设备主要是给vfs提供存储设备随机读写的驱动。相比于字符驱动,块设备驱动有以下几点不同:①,块设备驱动以块的形式访问设备,字符设备以字节。②块设备能够随机访问设备,字符设备只能顺序访问。③,块设备有缓存,能够存储访问请求,在合适的实际对设备进行操作,字符设备往往没有缓存,对设备及时操作。

xiaoshixiu的专栏 770

GAMES101:MacOS作业环境搭建

查看gcc/clang的位置产看gcc/clang的版本1.1.2 安装cmake。

weixin_38844255的博客 716

linux MTD partitions方法大杂烩

一、总述 在linux中,我们一般会对flash进行一个分区,不同的地址空间存放不同的内容。一般我们只需要分3-4个区,第一个为boot区,一个为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区。而对于bootloader中只要能将内核下载到A~B区的A地址开始处就可以,C~D区的C起始地址下载文件系。这些起始地址在MTD的分区信息中能找到。所以bootloader对分区的概念

Bean Huo 1万+

关于cefsharp访问iqiyi.com显示403 Forbidden解决办法(2种方法)

cefsharp不加UserAgent的默认值为 (注意126是当前cefsharp的版本)Edge浏览器的UserAgent 为 (edge的版本是128的)说明根据浏览器的不同,UserAgent可能不太一样。

无线智能模块 可视DIY智能专家 1319

内存泄漏系列专题分析之二十一:高通相机CamX内存泄漏&内存占用分析--GPU内存拆解

通过上述debug方式,可以看到patch补丁可以顺利debug各种ION内存分布,可以通过它分析ION内存占用问题。同时我们还可以分析GPU内存泄漏问题,同样的方式可以看到所有的GPU内存分布,如果某个GPU内存持续增长,就极有可能内存泄漏,然后更具堆栈信息去分析代码,并解决GPU内存泄漏问题。!!

453

redboot

 Intel CE2110上Redboot的使用 www.diybl.com 时间:2009-08-27 作者:匿名 编辑:小张 点击: 24 [评论] cpro_client=diybl_cpr;cpro_at=text_image; cpro_161=2; cpro_flush=4;

Thanks 1167

RT-DETR目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

本文主要讲解的是计算机视觉网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。

Limiiiing的博客 3358

RedBoot部分操作命令

RedBoot部分操作命令1) fis init -f //初始化NOR FLASH文件系统,这个仅需要做一次,除非你想删除你的FLASH上的所有内容.2)fconfig -i //配置RedBoot,一般这个命令也只需要做一次,除非你想改变配置或者增加启动脚本.第一次启动时,RedBoot的一些提示交互操作为:>> Run script at boot: {false} >> Use B

newger的专栏 1867

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

uboot的启动过程

6.1.2  Bootloader的启动Linux系统是通过Bootloader引导启动的。一上电,就要执行Bootloader来初始化系统。可以通过第4章的Linux启动过程框图回顾一下。系统加电或复位后,所有CPU都会从某个地址开始执行,这是由处理器设计决定的。比如,X86的复位向量在高地址端,ARM处理器在复位时从地址0x00000000取第一条指令。嵌入式系统的开发板都要把板上RO

hitlerisyou的专栏 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

修改 bootargs 方式增加分区(mtd分区和blkdevparts分区)

在内核的平台代码中写死,然后在初始化NandFlash的时候设置。

weixin_42031299的博客 4544

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

linux查看文件的flash地址,在uclinux中读写flash分区

在uclinux中读写flash分区早年写的笔记,压箱底了,翻出来晒晒目 录u IXDP425 266Mhz 64Mram 16M flashu FC4: kernel 2.6.11-1.1369_FC4smp(FC6 也行),安装在虚拟机上u arm-linux-tools-20051123.tar.gz: gcc 3.4.4编译器u snapgear-3.5.0.ta...

weixin_32101285的博客 758

IXP425上linux MTD分析

    今天看了一下IXP425上MTD的实现(linux/drivers/mtd/maps/ixp425.c),有如下几点收获    1、FLASH的分区并不是写死的,而是在MTD初始化的时候,通过读redboot的配置文件来得到FLASH的分区信息,然后加载为MTD的分区。    2、reboot下看分区信息:redboot> fis listName              FLASH a

边城浪子的专栏 1150

Redboot教程

新浪 Redboot用户手册 ping -h 192.168.1.82 -v -n 4 fis list fis init -f (除启动区全部檫除) fis free ip_address Load命令详解   =========================================================== load --  下载程序或数据到Red

固本培元的专栏 2051

redboot详解

Redboot 常用命令详解(zt) (2008-09-22 19:01) 分类: Linux内核和驱动及底层接口应用 Redboot 常用命令详解(zt) 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://redboot.blogbus.com/logs/22381509.html Redboot启动完成后,就进入命令行状态

固本培元的专栏 2741

Redboot 学习笔记

简介 RedBoot 是 “Red Hat Embedded Debug and Bootstrap” 的缩写,包含很多工具例如下载,还有一个简单的Flash 文件系统用以存放启动代码。 以下是RedBoot 的一些突出优点: 􀁺 支持启动脚本 􀁺 可用简单的命令行界面配置与管理,可通过以太网(Telnet)或串口(超级终端) 访问。 􀁺 集成GDB stubs 用来通过串口或以太网与宿主机上的排错软件通信。(限局域网) 􀁺 属性配置 - 很多数据是可配置的,例如系统时间、日期(如果可用),默认启动 F

老熊的博客 3028

RedBoot 命令使用

Redboot 常用命令详解(zt) 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://redboot.blogbus.com/logs/22381509.html Redboot启动完成后,就进入命令行状态(CLI),接受命令并执行,如果你用Redboot作为boot-loader就一定需要熟悉相关的命令,命令的相关解释在帮助文档上面都解释的很详细

stonesharp的专栏 3018

RedBoot命令使用入门

RedBoot使用1、系统启动超级终端参数设置为:115200,8,N,1,无流控。启动超级终端,将ICU板重新上电,按 + C进入RedBoot提示符状态,如下图。500)this.width=500;" border="0" alt="" /> 2、常用命令fis list查看Flash文件系统的状态使用fis list命令,如下图。500)th

aaaaatiger--寻路 2263

redboot 命令详解

命令说明对一个没有内核和根文件系统的板子是不可以运转的,当通过一种方式下载了RedBoot引导程序以后,我们可以通过下面的方式下载内核和根文件系统。在本系统中,我们对内核和根文件系统的下载是通过tftp服务完成的。整个Flash空间是16M ,它的地址范围:0x50000000 – 0x50fe0000 ,共有128块,每一块的大小是128K 。0x50000000 – 0x50080

Penglunyan 5033

redboot yaffs android

 http://dev.firnow.com/course/6_system/linux/Linuxjs/20100107/187061.htmlRedboot文件烧写及配置方法 www.firnow.com    时间 : 2010-01-07  作者:匿名   编辑:Smi1e 点击:  112 使用NFS方式启动系

devehe的山寨 1788

Redboot烧写内核

Fon Fonera+ and Fonera 2.0g http://wiki.openwrt.org/toh/fon/fonera2 The Fonera 2.0g is the sucessor of the Fonera+ offered by Fon. Its an Atheros AP51 reference design, features a two-port f

固本培元的专栏 2676
上一篇: redboot 启动分析 一句话
下一篇: redboot -官方资料
flyingcloud_2008
博客等级 码龄19年 10粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值