tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND添加分区

这里的分区只是为了操作的方便。假设有个分区 kernel,其地址区间为 0x20000~0x320000,其大小为 0x300000

在没有分区的情况下,对这块区间的操作如下:

nand erase 20000 300000        擦除操作

nand write 20000000 20000 300000    写操作

nand read 20000000 20000 300000    读操作

而有了分区的情况下,操作将变得非常简单,如下(其中 kernel 为分区名)

nand erase.part kernel          擦除操作

nand write 20000000 kernel        写操作

nand read 20000000 kernel        读操作

在 tiny210.h 中,已经有 NAND 分区的例子,我们直接修改:

256K 给 u-boot

128K 给 params,即环境变量

3M 给内核

剩余的全部给根文件系统

这里指定了环境变量在 NAND 的分区所在的地址空间,在 tiny210.h 中定义了其所在的地址和大小

下载到sd卡中:

执行 mtdparts 查看分区信息,提示非法的 mtd 设备,这是由于之前将 u-boot 中默认的分区信息写入了 NAND 的环境变量, 说以读取失败,我们执行 mtdparts default  ,重新初始化分析信息,然后再次执行 mtdparts 就可以正常读取了

注意:这里执行了 mtdparts  default 初始化分析信息,还必须执行 saveenv 将其保持到 NAND,然后重启再次查看分区信息,一切正常 :

现在可以使用分区操作 nand 了:

时间: 2024-10-09 22:29:10

tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND添加分区的相关文章

tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 启动

我们知道 s5pv210启动方式有很多种,sd卡和nand flash 启动就是其中的两种,前面我们实现的都是基于sd卡启动,这节我们开始实现从nand flash 启动: 从 NAND 启动 u-boot,需要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存.这里的BL1 即我们移植的 u-boot-spl.bin,BL2 即我们移植的 u-boot.bin.在 u-boot.bin 中的 NAND 驱动比较大,它包含了很多功能,而 u-boot-spl.b

tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 8位硬件ECC

这节我们实现nand的ecc,保存环境变量到nand flash 中.然后把我们之前的led灯烧写到nand flash 中,开机启动,在 tiny210.h 中定义宏 CONFIG_S5PV210_NAND_HWECC.CONFIG_SYS_NAND_ECCSIZE.CONFIG_SYS_NAND_ECCBYTES CONFIG_SYS_NAND_ECCSIZE 定义了消息长度,即每多少字节进行 1 次 ECC 校验 CONFIG_SYS_NAND_ECCBYTES 定义为 13Byte,将

tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植NAND FLASH

这节我们开始移植nand flash:通过查看帮助文档 doc/README.nand,要支持 NAND,需要配置CONFIG_CMD_NAND我们修改 tiny210.h,把 CONFIG_CMD_ONENAND 屏蔽掉,同时加上CONFIG_CMD_NAND: 编译出错 ,没有定义 CONFIG_SYS_MAX_NAND_DEVICE,最大 NAND 设备数,我们的板子只有 1 个 NAND,将其 定义为 1 再次编译,出错:未定义 NAND 的基地址,查看 S5PV210 手册, NAND

tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动

我们知道 s5pv210启动方式有非常多种,sd卡和nand flash 启动就是当中的两种,前面我们实现的都是基于sd卡启动,这节我们開始实现从nand flash 启动: 从 NAND 启动 u-boot,须要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存.这里的BL1 即我们移植的 u-boot-spl.bin,BL2 即我们移植的 u-boot.bin.在 u-boot.bin 中的 NAND 驱动比較大,它包括了非常多功能,而 u-boot-spl

tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)

在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的信息打印. 在上节.我们看到调用 relocate_code 重定位.在 u-boot 的帮助文档 doc/README.arm-relocation 中对重定位有说明. u-boot 为了生成位置无关码,在链接时指定了-pie 选项,这个选项在 u-boot-2014.04/arch/arm/config.mk 中指定: 当使用-pie 选项后.链接器会生成一个修正表(fixup  tables).在终于的二进制文件 u-boot

tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(打印串口控制台)

在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的打印信息. 在上节,我们看到调用 relocate_code 重定位.在 u-boot 的帮助文档 doc/README.arm-relocation 中对重定位有说明.u-boot 为了生成位置无关码,在链接时指定了-pie 选项,这个选项在 u-boot-2014.04/arch/arm/config.mk 中指定: 当使用-pie 选项后,链接器会生成一个修正表(fixup  tables),在最终的二进制文件 u-boot.

s5pv210 移植 ubuntu(uboot + linux3.9.7 + ubuntu12.11 + xfce)

手里的s5pv210有两年了,性能也远远不如当下的应用处理器 但是跑比较简单的系统还是绰绰有余的 给s5pv210 移植 linaro ubuntu根文件系统 12.11 + xfce桌面系统,运行速度还是可以的,能上网. uboot + linux3.9.7 + ubuntu12.11 + xfce 可以作为远程tiny服务器. show下: 桌面 浏览器和设置界面 睡眠时的屏保界面

基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)

最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困难重重. 找了找关于manifest的介绍,貌似这个文件是用来描述程序或者库的依赖关系, 特别是对程序依赖的版本进行描述, 这样系统可以通过manifest的内容找到正确的库版本. 理论上讲这个dd确实是不错, 可以解决版本不兼容的问题, 保证程序运行的时候用的是指定版本的库. 不过实际操作起来麻烦

基于本博客版本中的循环缓冲的测试(Linux环境)

#include <stdlib.h> #include <stdio.h> #include <pthread.h> #include "ringbuffer.h" static int b_flag = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; #define TX_LOCK(lock) pthread_mutex_lock(&lock) #define TX_UNLOCK