Linux内核移植--1.添加NAND Flash分区

摘要:
手里的OK6410,移植完Uboot2010.03后,开始移植Linux3.5,通过DNW烧入uImage后,可以工作。在此过程中,理解了Uboot和LinuxKernel之间的关系,同时也对开发板上的各个子电路和芯片也有了新的认识。可以发现1M+5M+100M+1.9G,刚好是OK6410NANDFlash的大小。值得注意的是,在新版本的UBoot和Linux搭配下,只需要添加分区数组内容即可,无需修改其他部分,很简单和方便。可以扩展的是,在移植Android系统时,通过此种方式划分相应的data,system,cache分区即可。

手里的OK6410,移植完Uboot2010.03后,开始移植Linux3.5,通过DNW烧入uImage后,可以工作。在此过程中,理解了Uboot和Linux Kernel之间的关系,同时也对开发板上的各个子电路和芯片也有了新的认识。但是美中不足的是飞凌提供的cramfs文件系统,却是个只读的文件系统,无法存储数据,这样直接影响到tftp的使用,所以尝试添加一个分区,用来存储数据。

添加分区十分简单,只需要在arch/arm/mach-s3c64xx/mach-ok6410.c中找到struct mtd_partitions ok6410_nand_part[] 数组,在其中添加一个分区即可。代码如下:

1 191//nand flash  add by wenix
2 192 struct mtd_partition ok6410_nand_part[] ={                                                                    
3 193{
4 194         .name        = "Bootloader",
5 195         .offset        = 0,
6 196         .size        = (1 *SZ_1M),
7 197         .mask_flags    =MTD_CAP_NANDFLASH,
8 198},
9 199
10 200{
11 201         .name        = "Kernel",
12 203         .offset        = (1 *SZ_1M),
13 204         .size        = (5*SZ_1M) ,
14 205         .mask_flags    =MTD_CAP_NANDFLASH,
15 206},
16 207     { /*修改此部分,添加一个100M分区*/
17 208         .name        = "File System 0",//分区名,使用df可以查看
18 209         .offset      = (6*SZ_1M), //分区偏移值,不与前面分区重叠即可
19 210         .size        = (100*SZ_1M),//分区大小,此处调整为100M
20 211         .mask_flags  =MTD_CAP_NANDFLASH,
21 212},
22 213{
23 214         .name        = "File System 1",
24 215         .offset      =MTDPART_OFS_APPEND,
25 216         .size        =MTDPART_SIZ_FULL,
26 217}
27 218 };

然后编译内核,并下载烧写到NAND Flash中,启动内核后,可以发现内核识别了划分的四个分区,Linux内核移植--1.添加NAND Flash分区第1张

进入Linux系统后,也可以使用df -h查看分区,

Linux内核移植--1.添加NAND Flash分区第2张

可以发现第四个分区mtdblock3被识别且挂载到/mnt/disk路径下了。

可以发现1M(Uboot分区)+5M(Kernel分区)+100M(cramfs分区)+1.9G(第四个分区),刚好是OK6410NAND Flash的大小。

值得注意的是,在新版本的UBoot和Linux搭配下,只需要添加分区数组内容即可,无需修改其他部分,很简单和方便。

可以扩展的是,在移植Android系统时,通过此种方式划分相应的data, system, cache分区即可。

免责声明:文章转载自《Linux内核移植--1.添加NAND Flash分区》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇无法启动 Microsoft Office Outlook_ 无法打开 Outlook 窗口_outlook2007 出现“数据错误(循环冗余检查)...unity 协程与async、await下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第1阶段——uboot分析之硬件初始化start.S(4)

分析uboot第一个执行函数_start(cpu/arm920t/start.S)  打开cpu/arm920t/start.S 1 .globl _start // .globl定义一个全局符号"_start",表明_start这个符号要被链接器用到 2 _start:...

Linux下如何创建新用户

Linux下如何创建新用户 Linux系统中,只有root用户有创建其他用户的权限。创建过程如下:useradd -d /home/newuser newuser(设定了该用户的主目录和用户名)useradd -d /home/newuser -g 0 -G 0,1,3,4,6,10 -u 500 -r -p Love newuser(指定了用户的组id...

迁移与裁剪linux系统

系统启动流程: POST 加电自检,载入一段程序完成基本及核心硬件的检测 --> BIOS 根据BIOS中设定的引导次序,查找对应设备上的MBR --> 读取MBR的BootLoader,BootLoader中配置了要引导的操作系统的内核的位置 --> 读取内核,内核进行初始化,需要initrd 将Kernel和真正的根文件系统连接起来...

LXC/KVM虚拟化基本概念

LXC:其名称来自Linux软件容器(Linux Containers)的缩写.LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。严格来说不算是虚拟化技术,只是进程隔离和资源限制,软件Docker被用来管理LXC的环...

性能测试之nmon对linux服务器的监控

大家都知道在做性能测试的时候,需要监控服务器的资源情况,而大多数服务器是Linux系统,网上资料嘿多,这里汇总介绍下Nmon监控工具: ---------------------------------------------------------------------------------------------------------------...

Linux基础知识之man手册的使用

在Linux中man的使用频率应该是很高的,灵活运用它可以让自己快速的掌握一个不熟悉命令的使用方法。下面来介绍下man 环境CentOS6.8 man - format and display the on-line manual pages 在线使用手册格式及展示通俗点来说它就是命令的使用手册。它共分九个章节 1、用户命令2、系统调用3、C库调用4、设备...