u-boot移植之支持 NAND FLASH 学习笔记

一、启动相关

1.bss段存放 初值是0和未初始化的全局变量,从bss_start到bss_end,从bss_start到_start是bootloader的大小,其中不包含,bss段。

2.通过反汇编文件,查看bss起始地址结束地址等,可确定程序大小,0x33F80000到0x34000000只有512KB。

3.相对跳转操作 ldr pc,函数名,使程序从片内SRAM直接跳转到SDRAM,当然要在重定向bootloader之后。

二、NAND FLASH 相关

1.NAND FLASH 启动时,CPU会复制 NAND FLASH 最开始 4KB 到 Stepping Stone 即CPU SRAM,复制过程由硬件完成。

2.NAND FLASH 由CPU的 NAND FLASH 控制器控制,连接引脚固定,NAND FLASH 没有地址线,写命令、地址、数据,由CPU的 NAND FLASH 控制器控制,直接修改关于 NAND FLASH 的各寄存器值,而不是直接控制 NAND FLASH 的各引脚,具体修改值由 NAND FLASH 本身 Command Sets决定!

3.编写驱动函数时,按照 NAND FLASH 手册流程图编写 ,如读流程 Read Flow Chart

4.对8位 NAND FLASH 操作,采用字节char访问,来给CPU地址寄存器NFADDR赋值,以免出错。

5.ECC 为弥补 NAND FLASH 缺陷,读每页可能有1位发生错误,写过程:写入Page,生成ECC码,写ECC到OOB区域 ;读过程:读取Page,读取OOB中ECC,与读过程中生成的ECC比较,若不相等,则根据某种算法找到错误并修改,ECC可软件生成,也可硬件生成

6.NAND FLASH 启动时,0地址是片内0地址,所以无法去访问 NOR FLASH,所以 NOR FLASH 0KB。

7.为了兼容不同的CPU、NAND FALSH,u-boot肯定是很复杂,执行判断我们用的芯片种类等操作,其中的一系列代码最终调用 NAND FLASH 的读写等等函数,移植需要做的是:(1)修改u-boot中相关寄存器设置(2)分析u-boot中函数调用关系,各函数的实现过程(3)修改代码,替换成自己的读写等函数。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值