目录
龙芯 1A 添加 SPI NorFlash ............................................................................................................... 1
1、 PMON 添加 SPI NorFlash 驱动 ..................................................................................... 1
2、 Kernel 添加 SPI NorFlash 驱动 ..................................................................................... 3
龙芯 1A 添加 SPI NorFlash
由于龙芯 1A 本身支持 NorFlash,所以编写驱动也相对简单,只需要在原驱动上做修改。
1、 PMON 添加 SPI NorFlash 驱动
1)、取消 PMON 对 NAND_FLASH
取消 NAND_FLASH 的驱动支持,会导致 eth0 网卡起不来,所以没有取消对 NAND
的驱动,而在 Targets/LS1X/dev/ls1x_nand.c +558 取消对 NAND 的分区;
//add_mtd_device(ls1x_mtd, 0, 14*1024*1024, "kernel");
//add_mtd_device(ls1x_mtd, 14*1024*1024, 100*1024*1024, "rootfs");
//add_mtd_device(ls1x_mtd, (100+14)*1024*1024, 14*1024*1024, "data");
2)、添加 Nor_Flash 驱动,修改 Targets/LS1X/conf/ls1a
select nor_flash #如果使用 nor flash 分区
option NORFLASH_PARTITION #nor flash(spi flash)分区
3)、 NorFlash 从设备驱动在 Targets/LS1X/dev/spi_flash.c,对从设备驱动做如下修改
nor_mtd->size = 0xc00000; #12M, 在 norflash_init()中
#else //在 else 分支下,添加分区支持,在 norflash_init()中
add_mtd_device(nor_mtd, 0, 0x80000, "pmon"); //512KB
add_mtd_device(nor_mtd,0x80000,(512+9*1024)*1024,"fs"); //9.5M
add_mtd_device(nor_mtd,0xa00000,2*1024*1024,"kernel"); //2M
4)、修改 NorFlash 的大小
理论上 spi0 外部寻址空间为 8M,spi1 为 4M,但是初始化之后可以将 spi0、spi1 看
成 一 块 12M 的 NorFlash , 这 样 的 硬 件 设 计 也 是 十 分 合 理 的 。 修 改
Targets/LS1X/dev/pflash_tgt.h。
#else //else 分支下
#define TARGET_FLASH_DEVICES_16 \
{ PHYS_TO_UNCACHED(0x1fc00000), 0x000c00000, 1, 1, FL_BUS_8 }, \
{ 0x00000000, 0x00000000 } /* W25X40B 512KB */
评论1