uboot之nand flash相关(1)
发布时间:2020-12-15 17:58:59 所属栏目:百科 来源:网络整理
导读:这几天在做和nandflash相关的东西,之前uboot中nandflash部分搞得模模糊糊。这次就将uboot中nand flash相关部分分析清楚 。本文uboot版本1.3.3 按照uboot的执行流程,在lib_arm/board.c文件中的start_armboot函数中会调用到nand初始化。 初始化的调用流程大
这几天在做和nandflash相关的东西,之前uboot中nandflash部分搞得模模糊糊。这次就将uboot中nand flash相关部分分析清楚
。本文uboot版本1.3.3
按照uboot的执行流程,在lib_arm/board.c文件中的start_armboot函数中会调用到nand初始化。
初始化的调用流程大致为:
start_armboot
nand_init
//driver/mtd/nand/nand.c
nand_init_chip //driver/mtd/nand/nand.c
board_nand_init
//cpu/sep4020/nand_flash.c
nand_scan //driver/mtd/nand/nand_base.c
start_armboot函数中,nand初始化部分
点击(此处)折叠或打开
nand_init()在driver/mtd/nand/nand.c文件中定义,此为nand初始化入口函数。
点击(此处)折叠或打开
(1)CFG_MAX_NAND_DEVICE,nand的数量,一般板上有一个nand,就定义为1
(2)此函数初始化一个nand flash。首先看函数参数的3个变量。
参数1 nand_info[i],其定义如
nand_info_t nand_info[CFG_MAX_NAND_DEVICE];
//driver/mtd/nand/nand.c
定义了一个nand_info_t类型的全局数组,当然这里其CFG_MAX_NAND_DEVICE等于1,只有一个成员,再看nand_info_t定义
typedef struct mtd_info nand_info_t; //include/Nand.h
mtd_info定义在include/linux/mtd/mtd.h中,它表示一个mtd设备的结构体,包含了mtd属性和其操作函数。
点击(此处)折叠或打开
参数2 nand_chip[i] ,如下
static struct nand_chip nand_chip[CFG_MAX_NAND_DEVICE];
再看struct nand_chip定义,当前文件(driver/mtd/nand/nand.c)包含nand.h(include目录),nand.h又包含#include <linux/mtd/nand.h>,所以nand_chip的定义是linux/mtd/nand.h中的。不是nand_legacy.h。这个结构体表示一个nand flash其包含所有属性和操作函数。
点击(此处)折叠或打开
static ulong base_address[CFG_MAX_NAND_DEVICE] = CFG_NAND_BASE_LIST;
CFG_NAND_BASE_LIST如下,
#ifndef CFG_NAND_BASE_LIST
#define CFG_NAND_BASE_LIST { CFG_NAND_BASE }
#endif
CFG_NAND_BASE是在include/configs/UB4020.h中配置为
#define CFG_NAND_BASE
0x11000200 (nand FIFO 数据寄存器)
(3)计算出总共nandflash多少容量,在紧随其后的printf语句中打印出来。
接着看同文件(driver/mtd/nand/nand.c)中nand_init_chip函数的分析
点击(此处)折叠或打开
(2)此函数设置相关的nand 初始化,它和具体的体现结构有关系,不是共性的东西,在cpu/xxx/Nand_flash.c文件中。
(3) 此函数设置通用默认处理,获得flash id,并匹配等等。
这里我们分析的是sep4020 cpu的board_nand_init() 在cpu/sep4020/nand_flash.c
点击(此处)折叠或打开
(2)NAND FLASH的配置器存器2 1--1--0--100--010100--0011--01--01--00--11 可查看芯片手册,页大小配置为2K
(3)分配一个整页空间,后续的读写操作中会用到它来暂存一页数据。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- webpack3+anujs+ReactCSSTransitionGroup
- 正则表达式
- vb.net – 计算列规范
- 快速部署TEST-DRIVEN DEVELOPMENT/DEBUG环境
- UBOOT 移植操作(3)
- Cocos2d-x学习笔记(十)—— 音频系统(SimpleAudioEngine
- Flutter 拖拽排序组件 ReorderableListView
- Flash Builder 4 安装报错 Unable to get root from inChil
- c# – Expression.Compile in Medium Trust环境
- c – std :: map的变量模板通用lambdas