在u-boot中增加nor flash的支持

开发板只带有一片SSTFLASH,而u-bootat91sam9260ek中没有运行程序在norflash中的实例。花时间修改配置,将其运行在norflash中。

 

(1)       修改板子头文件mprts2.h:

/* NAND flash */

 

/* NOR flash - no real flash on this board */

//#define CONFIG_SYS_NO_FLASH

 

#define CONFIG_FLASH_CFI_LEGACY          1

#define CONFIG_SYS_FLASH_BASE              0x10000000

#define CONFIG_SYS_FLASH_CFI          1

#define CONFIG_FLASH_CFI_DRIVER           1

 

 

#define CONFIG_SYS_MAX_FLASH_SECT            128

#define CONFIG_SYS_MAX_FLASH_BANKS        1

#define CONFIG_FLASH_CFI_WIDTH            FLASH_CFI_16BIT

1)        CONFIG_SYS_NO_FLASHCONFIG_FLASH_CFI_DRIVER CONFIG_SYS_FLASH_CFI: 定义此变量表明不使用nor flashCONFIG_SYS_FLASH_CFI表示添加CFI FLASH的驱动,在MAKE过程中,生成include/autoconf.mk的时候会添加一行:

CONFIG_SYS_FLASH_CFI=y

此时,drivers/mtd/cfi_flash.c驱动将添加到编译文件中。

2)        CONFIG_FLASH_CFI_LEGACY:定义是JEDEC标准的FLASHdrivers/mtd/jedec_flash.c被添加到编译文件中。

3)        CONFIG_SYS_FLASH_BASEFLASH的访问地址。

4)        CONFIG_SYS_MAX_FLASH_SECTFLASHBLOCK数目。

5)        CONFIG_SYS_MAX_FLASH_BANKSFLASHBANKS数,表示有多少个FLASH,一般设置为1

6)        CONFIG_FLASH_CFI_WIDTHFLASH的端口宽度。

 

(2)       修改jedec_flash.c.

由于使用的FLASHJEDEC标准的FLASH,它需要使用jedec_flash驱动。碰巧驱动文件中没有我使用的FLASH型号,修改它的内容如下:

static const struct amd_flash_info jedec_table[] = {

//内容略

 

       {

              .mfr_id          = (u16)SST_MANUFACT,

              .dev_id           = SST_FLASH_ID,

              .name             = "SST_FLASH",

              .uaddr            = {

                     [1] = MTD_UADDR_0x0555_0x02AA

              },

              .DevSize = SIZE_8MiB,

              .CmdSet         = P_ID_AMD_STD,

              .NumEraseRegions= 1,

              .regions   = {

                     ERASEINFO(0x10000,128),

              }

       },

 

};

有几个参数需要说明一下:

1)  uaddr: 设置FLASH操作的前两个指令,可以查DATASHEET得出。如果是8位的端口设置“[0] ”,16位的端口设置“[1] ”的内容,如上面的那样;

2)  NumEraseRegionsERASEINFO:设置FLASH的区域,如设置的FLASH块的大小为64K字节,共128个块。也可设置多个区域,NumEraseRegions设置区域的数目。

 

你可能感兴趣的:(struct,Flash,table)