"这篇文档是关于‘aboot config’的txt日记文档,主要涉及Linux启动过程中设置环境变量和bootloader参数。" 在嵌入式Linux系统中,`aboot`通常指的是引导加载器(bootloader),它是系统启动时运行的第一段代码,负责加载操作系统内核并传递控制权。在配置aboot时,我们关注的关键点是设置环境变量和boot arguments (`bootargs`),这些设置直接影响系统的启动过程和挂载文件系统。 1. **bootargs**: `bootargs` 是传递给内核的一系列启动参数,它定义了系统启动时的一些关键配置,例如根文件系统类型、内存分配等。例如: - `root=/dev/mtdblock1rw`: 这里指定了根文件系统位于mtdblock1设备,并且以读写模式挂载。 - `rootfstype=jffs2`: 表示根文件系统类型为JFFS2(Journaling Flash File System 2)。 - `mtdparts`: 用于定义物理映射闪存(`phys_mapped_flash`)的分区,如kernel、rootfs、Boot、Env等。 - `console=ttyS0,115200n8`: 设置串行控制台在ttyS0上,波特率115200,数据位8,无奇偶校验,停止位1。 2. **mtdparts**: MTD(Memory Technology Device)是Linux内核中的驱动框架,用于处理非易失性存储器,如闪存。`mtdparts`环境变量用于定义MTD设备的分区,如上例所示,定义了不同的分区大小和用途,如kernel、rootfs、Boot、Env等。 3. **setenv** 和 **saveenv**: `setenv` 用于设置环境变量,而 `saveenv` 命令则将这些设置保存到非易失性存储中,以便在下一次启动时使用。 4. **bootcmd**: `bootcmd` 是一个特殊的环境变量,包含了启动命令序列。例如,`bootm 0xbf000000` 会执行位于地址0xbf000000的代码,这通常是加载和启动内核。 5. **保护与安全**: 文档中提到了`protect off all`,这可能是指解除所有Flash区域的写保护,以便进行更新或配置。`saveenv`之后通常需要保护环境变量区域,防止意外修改。 6. **设备树**: 在某些系统中,设备树(`fdt`)被用来描述硬件结构,以便内核能够正确识别和初始化硬件。在`bootargs`中指定`fdt`分区位置有助于内核加载设备树 blob。 7. **文件系统类型**: 文档提到了几种不同的文件系统类型,如ext2、jffs2、squashfs,这些都是针对嵌入式设备常见的文件系统,每种都有其优缺点和适用场景。 在配置aboot时,需要根据具体硬件和系统需求调整这些参数。正确设置这些值对于确保系统正常启动和运行至关重要。
in boot, cmdline:
B. rootfstype
这个选项需要跟root一起配合使用,一般如果根文件系统是ext2
的话,有没有这个选项是无所谓的,但是如果是jffs2,squashfs等文件系统的话,就需要
rootfstype指明文件系统的类型,不然会无法挂载根分区.
step1:
setenv bootargs root=/dev/mtdblock1 rw rootfstype=jffs2 mtdparts=phys_mapped_flash:6M(kernel),6M(rootfs),384k(Boot),128k(Env),console=ttyS0,115200n8
;setenv bootargs root=/dev/mtdblock1 rw rootfstype=jffs2 mtdparts=phys_mapped_flash:6M(kernel),6M(rootfs),384k(Boot),128k(Env),3456k(Config),128k(Ro) console=ttyS0,115200n8
setenv bootcmd bootm 0xbf000000
//setenv bootcmd 0x10040000 (内核位置)
//setenv bootm 0x10240000 (文件系统位置)
//protect off all (去掉FLASH保护,准备写入内核)
saveenv
console=ttyS[,options] 使用特定的串口,options可以是这样的形式bbbbpnx,这里
bbbb是指串口的波特率,p是奇偶位(从来没有看过使用过),n是指的bits。
H. mtdparts
mtdparts=fc000000.nor_flash:1920k(linux),128k(fdt),20M(ramdisk),4M(jffs2),
38272k(user),256k(env),384k(uboot) //7个分区
可以查看drivers/mtd/cmdlinepart.c中的注释找到相关描述
要想这个参数起作用,内核中的mtd驱动必须要支持,即内核配置时需要选上Device
Drivers ---> Memory Technology Device (MTD) support ---> Command line
下载后可阅读完整内容,剩余4页未读,立即下载
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展