迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon

pmon 支持俩种接口类型的 nand flash,一个是 nand 控制器接口,一个是 spi 接口。龙芯核心板上板载了一个 nand 控制器接口的 flash。
1 配置 pmon
首先我们需要在 pmon 里面添加对 nand 的支持,那么我们都要配置哪些内容呢?这个要从 pmon 的启动流程入手,pmon 在启动的时候是在 Targets/LS2K/ls2k/tgt_machdep.c 里调用 ls2k_nand_init()函数对 nand进行初始化的,如下图所示:

迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon_第1张图片
从上图可知,如果我们要调用 ls2k_nand_init()函数,就需要定义宏定义 NNADN 和 CONFIG_LS2K_NAND,其中 NNADN 的值在 Targets/LS2K/compile/ls2k/m25p80.h 中定义为 1,如下图所示:

 

 所以我们只需要在 Targets/LS2K/conf/ls2k 文件中添加代码 option CONFIG_LS2K_NAND 即可,这里我们添加到第 269 行,添加完成如下图所示:


在 pmon 默认的 bsp 中,默认添加了代码 select nand,所以这里我们不必要在添加代码 select nand,而select 指定的是后面的参数 nand 被选中,选中了 nand 参数以后,在 conf/files 文件中使用 file 指定的 c 文件就可以被编译到 pmon 里面。因为 file 指定的文件编译与否取决于后面的参数有没有被选中,needs-flag 表示为该文件生成头文件。 

 迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon_第2张图片

 然我们回过头再来看条件编译的这部分代码,如下图所示:

迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon_第3张图片
如果我们定义了 NNAND 和 CONFIG_LS2K_NAND,就是执行*(volatile int *)0xbfe10420 |= (1<<9) 代码将GPIO 的管教复用设置为 NAND,,如果没用定义这俩个宏定义,就将复用关系设置为 GPIO,如下图所示:

 
如果定义了这俩个宏定义,接着就会调用 ls2k_nand_init 函数来初始化 nand,我们跳转到 ls2k_nand_init函数定义的 sys/dev/nand/ls2k-nand.c 驱动文件,通过阅读代码我们可以找到对 mtd 结构初始化的驱动函数为 ls2k_nand_init_mtd,通过访问 mtd 就可以访问 nand 

 迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon_第4张图片
在 ls2k_nand_init_mtd 函数中,最关键的是对 ECC 的选择,在 pmon 中默认的 ECC 有 NAND_ECC_SOFT 和NAND_ECC_SOFT_BCH 俩种。BCH 校验比 ECC 校验有更强的纠错能力,龙芯 BSP 里面默认使用的是 ECC 校验,代码如下:

 迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon_第5张图片

 如果我们需要使用 BCH 校验,需要在在 Targets/LS2K/conf/ls2k 中定义 select nand_bch,,这个我们选择 BCH 校验,如下图所示:

迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon_第6张图片

迅为龙芯2K1000开发板PMON开发之配置nand flash之配置pmon_第7张图片
迅为龙芯2K1000核心板参数:

 尺寸: 65mm*55mm
CPU: GS264双核处理器
主频: 800MHz-1GHz
内存: 2GB/1GB DDR3
NAND容量: 512M 
存储: 8MB的存储,用来放BOOT引导程序的
电源管理: 支持ACPI
工作电压: 12V和5V
引角扩展: 引出脚多达232个,1.0间距邮票孔方式,满足用户各类扩展需求
系统支持: Busybox;longnix,buildroot 系统,QT5.12
工作温度: 0℃ ~ +70℃ 
GPU: 内置GPU,支持动态电源管理
图形编程接口: 支持 OpenGL ES2.0, OpenGL ES 1.1,OpenVG
VPU: 解码支持 H264, H263, JPEG, MPEG-4,VP6.2,DivX5
Camera 1路,兼容ITU-R BT 601/656接口
IIS: 1 路
SD/MMC/SDIO: 1路
PCIE: 2 路PCIe 2.1
SATA : 1路
Ethernet: 2 路(10/100/1000M)
UART: 3路全功能串口,最大12路串口
IIC: 1路
SPI: 1路
USB: 3 路,USB Host 2.0,1 路,USB OTG
PWM: 4 路
CAN 2 路
LCD 2 路 RGB888

迅为龙芯2K1000底板参数:
尺寸: 190mm*125mm
POWER: 电直流电源输入接口
SWITCH: 电源开关
Ethernet: 2 路10M/100M/1000M自适应以太网
USB HOST: 4路USB2.0
OTG: 支持
Mini HDMI: 支持
WIFI/BT: 板载WIFI、蓝牙二合一模块
Mini PCIE: 可外接mini PCIE接口的4G模块,具备PCIE2.0单通道
4G模块: 支持(选配)
SIM Card: 1个
UART: 2路串口
RS485: 1路
CAN: 2路
蜂鸣器: 一个有源蜂鸣器
RTC: 支持
LIO/UART: (2mm间距20PIN插座引出)
GPIO: (2mm间距20PIN插座引出)
耳机接口: 标准3.5mm耳机接口
JTAG: 1路JTAG调试接口(2mm间距10PIN插座引出)
GPS: 一路GPS(选配)
固态硬盘接口: 1路(SATA固态盘选配)
按键: 3个
温度传感器: 支持
风扇驱动: 支持

你可能感兴趣的:(2K1000)