MPC8313ERDB从NAND FLASH中启动系统

mpc8313erdb的linux系统,存放于Nor Flash中,而Nor Flash只有8M,最近在root目录里面加了一点东西,结果Ramdisk的尺寸暴涨啊,一下子超过了4MB(Nor Flash中划分给Ramdisk的空间就只是4M),还好板子上还有32M的NAND Flash,而且原生态的,系统中也没有使用,所以在这里的思路就是这样:把uImage,Ramdisk,dtb文件都写到NAND Flash中,在uboot启动的时候,再读到内存里面,然后从内存启动。

目前我的NAND Flash空间的划分:

NAND Flash空间 使用目标 空间大小 加载到内存的位置
0~1MB NAND UBOOT 1MB  
2MB~6MB uImage 4MB 0x200000
6MB~7MB dtb 1MB 0x800000
7MB~15MB ramdisk 8MB 0x1000000

因为没有USB TAG,所以使用NAND版的uboot以防不测,,,原来在nand的uboot所占的空间j512k的,不懂它的参数保存在哪里的,所以就从2MB的地方开始。

介绍一下uboot下nand的命令:

nand erase [开始地址] [长度]                   // 擦除一片flash
nand write [内存地址] [nand开始地址] [长度]     // 把内存中的数据写到nand flash中
nand read  [内存地址] [nand开始地址] [长度]      // 把nand flash中的数据写到内存中

启动板子进入uboot命令行模式,设置好tftp服务器地址,开始干活~

uImage烧写:

nand erase 0x200000 0x400000
tftp 0x200000 uImage
nand write 0x200000 0x200000 0x400000

dtb:

nand erase 0x600000 0x100000
tftp 0x800000 mpc8313erdb.dtb
nand write 0x800000 0x600000 0x100000

rootfs.ext2.gz.uboot:

nand erase 0x700000 0x800000
tftp 0x1000000 rootfs.ext2.gz.uboot
nand write 0x1000000 0x700000 0x800000

然后修改启动命令:

set bootcmd "nand read 0x200000 0x200000 0x400000;nand read 0x800000 0x600000 0x100000;nand read 0x1000000 0x700000 0x800000;bootm 0x200000 0x1000000 0x800000"
save

MPC8313ERDB从NAND FLASH中启动系统

时间: 2024-08-11 08:13:23

MPC8313ERDB从NAND FLASH中启动系统的相关文章

如何利用JLINK烧写U-boot到NAND Flash中

原文:http://blog.csdn.net/yanghao23/article/details/7689534  很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor Flash中很简单,大部分NOR Flash都已经被JLink的软件SEGGER所支持,而新手在学习的时候经常会实验各种各样的命令,最悲剧的莫过于将NAND Flash中原有的bo

ECC校验原理以及在Nand Flash中的应用

     本篇文章主要介绍ECC基本原理以及在Nand Flash中的应用,本文记录自己对ECC校验原理的理解和学习. ECC介绍      ECC,全称为Error Correcting Code,错误纠正码,这是一种编码方式,用于在于可以在一定程度上自行发现和纠正传输过程中发生的错误.      香农在1948年发表的<通信的数学理论>中的信道编码定理指出:主要采取适当的纠错码,就可以在多类信道上传输消息,其误码率可以任意小.经过历代人们的持续努力,找出了许多好的信道编码方法,满足许多实用

Nand Flash中的SLC和MLC区别

http://wenku.baidu.com/link?url=R9hIafNFUjL7qqQSDtJLrNcP3LTMiPoSk5p-Rk230vzff9PGhWFY6k0_Yss1eJG9rfmvtB3XI0lwlRzxR9VSkbe2SoE7dvpG9zgPjcsah4W NandFlash有SLC和MLC之分,目前MLC逐步替代了SLC. SLC:Single Level Cell.即Flash每个单元中只能存储1bit数据信息. MLC:Mutiple Level Cell.即Flas

Uboot(二)支持NAND Flash和NOR Flash

 四.自动识别从NAND Flash启动还是从Nor flash启动       原理:在启动的时候,用程序将0x40000000-0x40001000中的某些位置清零,然后回读0x00000000-0x00001000中的相应位置, 为零说明是NAND boot,如果是原来的数据就是Nor boot. 判断完后如果是NAND boot,还要恢复被改动的数据,再进入自拷贝阶段. 选择了在start.S文件开头,全局中断向量之后第57行的变量:.balignl 16,0xdeadbeef . 理由

(二)识别NAND Flash Nor Flash

检测步骤:在启动的时候,将0x4000003c位置开始的四个字节清零,然后读取0x0000003c位置开始的四个字节. 如果回读的结果为零,说明是Nand boot,否则就是Nor boot  修改start.S 第90 行左右添加一个Flash 启动标志,从Nand 启动时将其设置为0 ,从Nor 启动时将其设置为1 .globl _bss_start _bss_start: .word __bss_start .globl _bss_end _bss_end: .word _end .glo

在 U-BOOT 对 Nand Flash 的支持

1.1    U-BOOT 对从 Nand Flash 启动的支持 1.1.1   从 Nand Flash 启动 U-BOOT 的基本原理 1. 前 4K 的问题 如果 S3C2410 被配置成从 Nand Flash 启动(配置由硬件工程师在电路板设置), S3C2410 的 Nand Flash 控制器 有一个特殊的功能, 在 S3C2410 上电后, Nand Flash 控制器会自动的把 Nand Flash 上的前 4K 数据搬移到 4K 内部 RAM 中, 并把 0x0000000

MPC8313ERDB在Linux从NAND FLASH读取UBoot环境变量的代码分析

[email protected] 一.故事起因 因为文件系统的增大,已经大大的超出了8MB的NOR FLASH,而不得不把内核,文件系统和设备树文件保存到NAND FLASH上.但是因为使用的是RAMDISK,而无法保存一些个别的配置和参数,最简单的需要就是设置系统的IP了,,, 要使用统一的RAMDISK,而实现LINUX启动之后,设置成不能的参数功能,比较方便的就是从UBOOT把这些参数传递过去,这个得到了大家的认证,我们可以直接添加启动参数,然后在内核里面读出来,这种方法比较方法,唯一不

u-boot-2014.10移植第25天----nand flash启动(三)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 在实现u-boot从nand flash启动之前,我们将前面asm_led程序放在nand flash第一个块的前4Kbit之中,因为asm_led没有系统初始化功能,所以还需要将bootstrap程序,放在nand flash的0地址处.bootstrap初始化完2440后,跳转到asm_led程序去执行.这对于掌握从n

u-boot-2014.10移植第24天----nand flash启动(二)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus nand flash启动 比较新的u-boot版本包括u-boot-2014版本的都是用重定向的机制,而且用到了代码位置无关的技术,在u-boot连接时使用了-pie选项: -pie : Produce a position independent executable on targets which support i