0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

国产软硬件龙芯系列迅为2K1000开发板配置 nand flash

北京迅为电子 2022-04-12 14:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

开发板使用手册 让研发速度快上加快

更新包含了开发环境搭建、系统编译与烧写和pmon基础知识、启动流程分析、网络加载系统、烧写系统到nand以及新增pmon移植教程、新增pmon下操作GPIO章节和pmon下Ejtag使用章节等。

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

9.9.11.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,就是执行*(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 控制器,

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

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

9.9.11.2 配置分区

在 nand 初始化最后的步骤会建立分区信息,建立分区信息的逻辑是先会调用 nand_flash_add_parts 函

数对环境变量 mtdparts 进行判断,mtdparts 环境变量在 Targets/LS2K/include/pmon_target.h 中定义,

如 果 环 境 变 量 mtdparts 中 设 置 了 分 区 信 息 , 则 调 用 add_mtd_device 来 指 定 分 区 , sys/dev/nand/ls2k-nand.c 中代码如下:

环境变量 mtdparts 中的值我们要怎么设置呢?

这里环境变量的设置我们要和 pmon 里面设备树的保持一致,打开 Targets/LS2K/conf/LS2K.dts 设备树文件,找到 nand 节点,其中 nand 节点的子 partition 节点表示的是分区信息,如下图所示:

其中:

compatible = "loongson,ls-nand"; 表示匹配驱动所使用的属性。

reg = <0x1fe06040 0x0 0x1fe06000 0x20>; 表示控制寄存器的地址和长度,其中 0x1fe06040 是

NAND_DMA_ADDR_REG 的地址。 地址 0x1fe06000 是 NAND_CMD 的地址。长度均为 0x20。

interrupt-parent = <&icu>; 中断控制器是 icu

interrupts = <52>; 分配中断号为 52

interrupt-names = "nand_irq"; 中断名称

dmas = <&dma0 1>; 表示使用 dma0 控制器,通道数为 1

dma-names = "nand_rw"; dma 控制器名称

dma-mask = <0xffffffff 0xffffffff>; 表示设备 dma 能力,如果设备只有 32 位 dma 能力,则应该配置成

0x00xffffffff,如果设备有 64 位 dma 能力,则应该配置成 0xffffffff 0xffffffff

number-of-parts = <0x2>; 表示分区数量,这里设置成俩个分区

partition@0 {

label = "kernel_partition";

reg = <0x0000000 0x01e00000>;

};

分区 0,分区名称为 kernel_partition,其中分区起始地址为 0x0000000,分区长度为 0x01e00000。

partition@0x01400000 {

label = "os_partition";

reg = <0x01e00000 0x0>;

};

分区 1,分区名称为 os_partition,其中分区起始地址为 0x01e00000,分区长度为剩余所有空间。

这里我们需要修改 partition@0 和 partition@0x01400000 子节点。这里我们把内核的分区大小设置 成 30M,剩余的 482M 给文件系统。

接着我们需要添加片选信息。一般情况下根据硬件设计规范,Flash 的片选会接到 cs0 上,通过原理图我们可以确定,片选引脚连接到了 cs0 上,如下图所示:

但是设备树我们要怎么写呢?这个就需要我们去看驱动源码了,我们打开内核源码

drivers/mtd/nand/ls-nand.c 下的 nand 控制器的驱动,在第 637 行我们可以看到他是通过 nand-cs 来获取的片选信息,

所以我们在设备树中添加属性 nand-cs=<0x00>;,添加完成如下图所示:

这样,pmon 下的设备树我们就设置好了,然后我们回过头在来设置环境变量 mtdparts,要与设备树中我们设置的保持一致,修改完成如下图所示:

这样 pmon 对 nand 的设置就已经完成了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 龙芯
    +关注

    关注

    3

    文章

    460

    浏览量

    33008
  • 开发板
    +关注

    关注

    26

    文章

    6507

    浏览量

    121359
  • 国产芯片
    +关注

    关注

    2

    文章

    407

    浏览量

    31887
  • 2K1000
    +关注

    关注

    0

    文章

    21

    浏览量

    871
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK系列开发板重磅升级SDK内核从5.10全面升级至6.1 LTS

    RK系列开发板重磅升级SDK内核从5.10全面升级至6.1 LTS
    的头像 发表于 03-18 13:21 1514次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK<b class='flag-5'>系列</b><b class='flag-5'>开发板</b>重磅升级SDK内核从5.10全面升级至6.1 LTS

    电子RK系列开发板SDK内核正式升级至6.1 LTS版本

    RK3568、RK3588、RK3576、RK3562系列开发板,SDK内核从5.10版本正式升级至6.1 LTS版本。
    的头像 发表于 03-16 16:18 681次阅读

    你的专属“数字员工”已到岗!RK3588系列开发板适配OpenClaw

    你的专属“数字员工”已到岗!RK3588系列开发板适配OpenClaw
    的头像 发表于 03-11 11:02 852次阅读
    你的专属“数字员工”已到岗!<b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3588<b class='flag-5'>系列</b><b class='flag-5'>开发板</b>适配OpenClaw

    性能猛兽再进化!iTOP-3588开发板新增LPDDR5商业级16G+64G旗舰配置

    性能猛兽再进化!iTOP-3588开发板新增LPDDR5商业级16G+64G旗舰配置
    的头像 发表于 02-26 15:03 941次阅读
    性能猛兽再进化!<b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-3588<b class='flag-5'>开发板</b>新增LPDDR5商业级16G+64G旗舰<b class='flag-5'>配置</b>!

    iTOP-Hi3403开发板:解锁多目拼接相机的10.4TOPS强“芯”动力,开启4K智能视觉新纪元

    iTOP-Hi3403开发板:解锁多目拼接相机的10.4TOPS强“芯”动力,开启4K智能视觉新纪元
    的头像 发表于 01-29 11:05 1255次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-Hi3403<b class='flag-5'>开发板</b>:解锁多目拼接相机的10.4TOPS强“芯”动力,开启4<b class='flag-5'>K</b>智能视觉新纪元

    RK3588开发板Android系统烧写及注意事项

    RK3588开发板Android系统烧写及注意事项
    的头像 发表于 12-03 15:17 7540次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3588<b class='flag-5'>开发板</b>Android系统烧写及注意事项

    iTOP-3568开发板 Linux驱动开发实战:menuconfig图形化配置实验

    iTOP-3568开发板 Linux驱动开发实战:menuconfig图形化配置实验
    的头像 发表于 11-24 15:29 1089次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-3568<b class='flag-5'>开发板</b> Linux驱动<b class='flag-5'>开发</b>实战:menuconfig图形化<b class='flag-5'>配置</b>实验

    3568开发板从零学习Linux驱动开发一站式资料包如何让我效率翻倍

    3568开发板从零学习Linux驱动开发一站式资料包如何让我效率翻倍
    的头像 发表于 11-05 11:16 649次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>3568<b class='flag-5'>开发板</b>从零学习Linux驱动<b class='flag-5'>开发</b>:<b class='flag-5'>迅</b><b class='flag-5'>为</b>一站式资料包如何让我效率翻倍

    iTOP-RK3576开发板再升级全新金属外壳

    iTOP-RK3576开发板再升级全新金属外壳
    的头像 发表于 10-22 15:48 1505次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>iTOP-RK3576<b class='flag-5'>开发板</b>再升级全新金属外壳

    RK3568开发板模型推理测试实战LPRNet 车牌识别

    RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1672次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3568<b class='flag-5'>开发板</b>模型推理测试实战LPRNet 车牌识别

    RK3562开发板 Ubuntu系统功能测试

    RK3562开发板 Ubuntu系统功能测试
    的头像 发表于 07-10 13:46 1635次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3562<b class='flag-5'>开发板</b> Ubuntu系统功能测试

    龙软件受邀参加2025龙芯产品发布暨用户大会,发布基于龙芯2K3000的OrangePi Nova

    /3C6000等新品的发布。作为龙芯合作伙伴,龙软件受邀参加此次大会,并在会上发布基于龙芯2K3000的新一代国产AI
    的头像 发表于 06-26 17:01 2166次阅读
    <b class='flag-5'>迅</b>龙软件受邀参加2025<b class='flag-5'>龙芯</b>产品发布暨用户大会,发布基于<b class='flag-5'>龙芯</b><b class='flag-5'>2K</b>3000的OrangePi Nova

    RK3576开发板NPUrknn-toolkit2环境搭建和使用docker环境安装

    RK3576开发板NPUrknn-toolkit2环境搭建和使用docker环境安装
    的头像 发表于 06-18 15:22 1565次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3576<b class='flag-5'>开发板</b>NPUrknn-toolkit<b class='flag-5'>2</b>环境搭建和使用docker环境安装

    RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用

    RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用
    的头像 发表于 06-17 13:46 2115次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3576<b class='flag-5'>开发板</b>NPU例程测试-rknn-toolkit<b class='flag-5'>2</b>环境搭建和使用

    RK3562开发板Buildroot系统功能测试

    RK3562开发板Buildroot系统功能测试
    的头像 发表于 06-13 13:46 2359次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3562<b class='flag-5'>开发板</b>Buildroot系统功能测试