热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

pmon支持俩种接口类型的nandflash,一个是nand控制器接口,一个是spi接口。龙芯核心板上板载了一个nand控制器接口的flash。1配置p

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


从上图可知,如果我们要调用 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 表示为该文件生成头文件。 

 

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


如果我们定义了 NNAND 和 CONFIG_LS2K_NAND&#xff0c;就是执行*(volatile int *)0xbfe10420 |&#61; (1<<9) 代码将GPIO 的管教复用设置为 NAND&#xff0c;&#xff0c;如果没用定义这俩个宏定义&#xff0c;就将复用关系设置为 GPIO,如下图所示&#xff1a;

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

 
在 ls2k_nand_init_mtd 函数中&#xff0c;最关键的是对 ECC 的选择&#xff0c;在 pmon 中默认的 ECC 有 NAND_ECC_SOFT 和NAND_ECC_SOFT_BCH 俩种。BCH 校验比 ECC 校验有更强的纠错能力&#xff0c;龙芯 BSP 里面默认使用的是 ECC 校验&#xff0c;代码如下&#xff1a;

 

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


迅为龙芯2K1000核心板参数&#xff1a;

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

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


推荐阅读
author-avatar
Kelven
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有