linux3.0 nand分区,uboot 下更改NAND的分区 fdisk

本文档详细介绍了如何在Linux3.0和Android4.0.3系统中,针对8GB INAND(如SDIN5C2-8G-L)在S5PV310平台上进行分区调整。主要涉及修改uboot源码,通过fdisk命令重新定义fat、系统、userdata和cache分区的大小,并进行分区格式化和系统烧录的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键词:android 4.0 nand 分区 userdata 大小  fdisk

平台信息:

内核:linux3.0

系统:android4.0.3

INAND:SDIN5C2-8G-L(SanDisk)

平台:S5PV310(samsung exynos 4210)

一、NAND分区大小:

我们的机器用的是8G的INAND,三星平台一般把它分为四个区:

(1)、fat分区,作为sd卡用;

(2)、系统分区,相当为电脑c 盘,用来安装android系统;

(3)、userdata分区;

(4)、cache分区。

二、分区更改操作过程

1,  更改uboot中代码/common/cmd_mmc_fdisk.c

在这个文件中我们可以看到对四个分区大小的定义:

#define     SYSTEM_PART_SIZE        (300*1024*1024)

#define     USER_DATA_PART_SIZE     (600*1024*1024)

#define     CACHE_PART_SIZE         (300*1024*1024)

55603338_1.JPG

2,编译uboot 、烧录

#sudo fastboot flash bootloader u-boot.bin(三星平台的命令,不同平台也许不同)

重启,进入uboot命令行模式,一定要重启。

3,重新分区 fdisk -c 0

#fdisk –c 0 //重新把INAND分区

#fdisk –p 0 //查看INAND分区信息

如下所示,600MB为我们新分的空间。

SMDKV310 # fdisk -c 0

Count: 10000

fdisk is completed

partion # size(MB) block start # block count partition_Id

1 6233 2610960 12766380 0x0C       //fat分区,作为sd卡用

2 303 136620 622380 0x83           //系统分区,相当为电脑c 盘

3 600 759000 1229580 0x83          //userdata分区

4 303 1988580 622380 0x83          //cache分区

4,把整个系统区重新格式化

系统重重分区后,原来烧录程序位置发生改变,系统分区(相当于电脑的c盘)也变化,所以要重新格式化。(下面的命令是三星平台下的,因平台而不同)

fatformat mmc 0:1

ext4fromat mmc 0:2

ext4fromat mmc 0:3

ext4fromat mmc 0:4

5、把整个系统重新烧录<

### U-Boot 中系统分区的划分与配置 在嵌入式 Linux 系统中,U-Boot 是引导加载程序的核心部分之一,负责初始化硬件并加载操作系统内核。对于系统分区的划分和配置,通常通过环境变量以及设备树(Device Tree)来实现。 #### 使用环境变量定义分区表 U-Boot 支持通过其内置命令 `setenv` 和 `saveenv` 来设置和保存环境变量。这些变量可以用来描述存储介质上的分区布局。例如,在 NAND 或 eMMC 存储上创建分区时,可以通过以下方式定义: ```bash setenv bootpart "0:1" setenv rootpart "0:2" setenv kernel_addr_r "0x3000000" setenv ramdisk_addr_r "0x4000000" setenv scriptaddr "0x800000" setenv fdt_addr_r "0x8200000" # 设置默认启动参数 setenv bootargs "console=ttySAC0,115200 root=/dev/mmcblk0p${rootpart} rw rootwait" ``` 上述脚本中的 `${bootpart}` 和 `${rootpart}` 变量分别指定了启动分区和根文件系统的分区号[^1]。此方法适用于基于 MTD 的存储设备(如 NOR/NAND Flash),也可以扩展到 SD/eMMC 设备。 #### 利用 GPT/MBR 表格手动分割磁盘 如果目标平台支持 GUID 分区表 (GPT) 或传统的主引导记录 (MBR),则可以直接利用工具如 `fdisk` 或者直接写入二进制数据完成物理硬盘的空间分配工作。然而更常见的是借助主机端 PC 工具预先制作好镜像再烧录至目标板卡。 以下是针对 SMDK2410 开发板的一个简单例子说明如何修改现有 uboot 源码来自定义新的单板特性[^2]: 编辑位于源目录下的 include/configs/smdk2410.h 文件加入如下宏定义: ```c #define CONFIG_CMD_GPT /* Enable gpt command */ #define CONFIG_DOS_PARTITION /* Support DOS partition table */ #define CONFIG_EFI_PARTITION /* Support EFI/GPT partitions */ ``` 重新编译整个项目之后即可获得具备读取解析现代标准分区结构能力的新版本固件。 #### 自动化流程——结合 DeviceTree 实现动态调整 随着 ARM 架构处理器的发展趋势变化,越来越多厂商倾向于采用扁平化的设备描述机制即 device tree blob(DTB). 这种做法允许开发者无需更改底层驱动就能灵活应对不同型号间细微差异的情况. 因此建议尽可能把有关硬件资源配置的信息迁移到对应的 .dts/.dtb 文件当中去处理而不是硬编码固定下来. 下面展示了一段典型的片段用于声明一块 mmc 块设备及其子节点代表各个逻辑区域: ```dts mmc@f900a000 { compatible = "samsung,sdhci"; reg = <0xf900a000 0x100>; part-probe = "fixed"; fixed-partitions { #address-cells = <1>; #size-cells = <1>; partition@0 { label = "bootloader"; reg = <0x00000000 0x02000000>; // 起始偏移地址及大小 }; partition@c000000 { label = "kernel"; reg = <0xc000000 0x04000000>; }; ... }; }; ``` 以上代码片断展示了怎样通过 DTB 描述 MMC 接口控制器并将它划分为多个独立的功能区块供后续阶段调用.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值