tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植NAND FLA
这节我们开始移植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,将其 再次编译,出错:未定义 NAND 的基地址,查看 S5PV210 手册, NAND 的基地址为 0xB0E00000,在 tiny210.h 中定义: 再次编译,还是出错:env_onenand.c 与 onenand 相关的,我们不需要编译,查看 u-boot-2014.04/common/Makefile: 有 env_nand.o 和 env_onenand.o,我们需要把环境变量保存到 NAND,因此我们需要定义 再次编译,没有定义 board_nand_init,看名字就知道这是单板相关的 NAND 初始化函数。通过搜索 u-boot 源码 同时查看 u-boot-2014.04drivers/mtd/nand/Makefile,看下怎么将 s5pv210_nand.c 编译进 u-boot: 只有定义了 CONFIG_NAND_S3C2410 就会编译 s3c2410_nand.c我们仿照添加一行: 并且在 tiny210.h 中定义 CONFIG_NAND_S5PV210: 将 s5pv210_nand.c 中的 s3c2410 全部替换为 s5pv210,然后我们修改S5pv210_nand.c.首先我们需要用到 nand 相关的寄存器操作,在 arch/arm/include/asm/arch-s5pc1xx/cpu.h 中添加 NAND的基地址: 紧接着在下面添加宏: 然后在 arch/arm/include/asm/arch-s5pc1xx/下创建文件 nand_reg.h,定义 NAND 的寄存器结构体: 然后在 s5pv210_nand.c 中添加头文件#include <asm/arch/nand_reg.h> 我们需要修改 u-boot-spl.bin 中的 copy_bl2_to_ram 中的拷贝大小225172 / 512 = 439 再次编译,将 tiny210-spl.bin 和 u-boot.bin 烧写的 SD 卡,从 SD 卡启动开发板: 打印警告:Warning - bad CRC,using default environment 执行 reset 复位? 现在来测试一下 NAND ?读写是否正确无误,我们先通过 tftp 下载一个文件到内存 : 先配置网络,测试网络是否联通: 下载一个文件到内存 : 然后擦除 NAND 的 0x80000 地址开始的一块 然后将内存 0x20000000 开始的 0x800 字节的数据写入 NAND 的 0x80000 地址 然后从 NAND 的 0x80000 地址读取 0x800 字节数据到内存的 0x20002000 地址 然后使用 cmp 命令,比较 0x20000000 和 0x20002000 开始的 0x800 字节数据是否相同 Total of 2048 byte(s) were the same nand flash ?的移植算是成功了,下次我们给nand flash 添加分区 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |