b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

文件系统转换 Bootloader之uBoot简介(转)(26)

电脑杂谈  发布时间:2018-02-07 22:32:44  来源:网络整理

调用board_nand_init函数的过程为:NAND

Flash的初始化入口函数是nand_init,它在lib_arm/board.c的start_armboot函数中被调用;nand_init函

数在drivers/nand/nand.c中实现,它调用相同文件中的nand_init_chip函数;nand_init_chip函数首先调用

board_nand_init函数来初始化NAND Flash设备,最后才是统一的识别过程。

从board_nand_init函数的名称就可以知道它是平台/开发板相关的函数,需要自

己编写。本书在cpu/arm920t/s3c24x0目录下新建一个文件nand_flash.c,在里面针对S3C2410、S3C2440实现了统

一的board_nand_init函数。

在编写board_nand_init函数的之前,需要针对S3C2410、S3C2440 NAND Flash控制器的不同定义一些数据结构和函数:

(1)在include/s3c24x0.h文件中增加S3C2440_NAND数据结构。

/* NAND FLASH (see S3C2440 manual chapter 6, ) */

typedef struct {

S3C24X0_REG32 NFCONF;

S3C24X0_REG32 NFCONT;

S3C24X0_REG32 NFCMD;

S3C24X0_REG32 NFADDR;

S3C24X0_REG32 NFDATA;

S3C24X0_REG32 NFMECCD0;

S3C24X0_REG32 NFMECCD1;

S3C24X0_REG32 NFSECCD;

S3C24X0_REG32 NFSTAT;

S3C24X0_REG32 NFESTAT0;

S3C24X0_REG32 NFESTAT1;

S3C24X0_REG32 NFMECC0;

S3C24X0_REG32 NFMECC1;

S3C24X0_REG32 NFSECC;

S3C24X0_REG32 NFSBLK;

S3C24X0_REG32 NFEBLK;

} /*__attribute__((__packed__))*/ S3C2440_NAND;

(2)在include/s3c2410.h文件中仿照S3C2410_GetBase_NAND函数定义S3C2440_GetBase_NAND函数。

/* for s3c2440, */

static inline S3C2440_NAND * const S3C2440_GetBase_NAND(void)

{

return (S3C2440_NAND * const)S3C2410_NAND_BASE;

}

既然新的NAND

Flash代码是从Linux内核2.6.12中移植来的,那么cpu/arm920t/s3c24x0/nand_flash.c文件也可以仿照内核

中,对S3C2410、S3C2440的NAND

Flash进行初始化的drivers/mtd/nand/s3c2410.c文件来编写。为了方便阅读,先把cpu/arm920t/s3c24x0

/nand_flash.c文件的代码全部列出来,再讲解:

01 /*

02 * s3c2410/s3c2440的NAND Flash控制器接口,

03 * 修改自Linux内核2.6.13文件drivers/mtd/nand/s3c2410.c

04 */

05

06 #include <common.h>


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-26.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 慕容永
      慕容永

      真是蠢了看了这视频

    • 昭成帝拓跋什翼键
      昭成帝拓跋什翼键

      这不是霸权是什么

    热点图片
    拼命载入中...