前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录一下NAND加载过程

记录一下NAND加载过程

作者头像
Taishan3721
发布2023-09-22 16:21:18
1840
发布2023-09-22 16:21:18
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

如转发 请标明出处!

以Vx7 + AM335x为例

在TI官网找到AM335x的手册,看到NAND的控制器叫做GPMC (General-Purpose Memory Controller)。在VIP中包含相应组件DRV_VXB_GPMC,VxWorks启动时就会自动加载驱动vxbFdtGpmcDrv

在手册中找到GPMC的寄存器地址

DTS确认一致

在VIP中包含组件INCLUDE_MTD_SHOW,它会调用usrMtdInit(MTD_CFG_STR)来创建MTD(Memory Technology Device)

启动VxWorks后,使用mtdDevShow()命令就可以看到这两个device了

在VIP中包含组件INCLUDE_FTL_FORMAT,它提供了FTL(Flash Translation Layer)的格式化功能

代码语言:javascript
复制
STATUS ftlFormat
    (
    char *pDevName, /* pointer to flash device name, like "/ftl0" */
    int   sizeGC,   /* size (in percentage of the total size) to faciliate GC and WL
                     * the larger this value, the better the performance.
                     * the acceptable range is from 3 to 30 (means 3% to 30%)
                     */
    int   sizeBBM,  /* size (in percentage of the total size) to do replace bad blocks
                     * the acceptable range is from 1 to 10 (means 1% to 10%)
                     */
    int   options   /* set it to 0. currently it is ignored */
);

并自动引入了INCLUDE_FTL,这是管理Raw NAND的核心组件,它会自动调用usrFtlInit (FTL_MEM_BUDGET_CFG_PROFILE, FTL_SERVICE_TASK_ENABLE, FTL_AUTO_MOUNT, 0)来提供最基本的功能,包括garbage collection, wear-leveling, bad block management, data caching and mapping。

包含组件INCLUDE_FTL_SHOW,使用命令ftlBmShowAll()可以看到这个BM(Block Management)了

可以看到bm status的值是NOT MOUNTED,是因为FTL_AUTO_MOUNT用了默认的FALSE。那就需要手动执行ftlMount()

如果是第一次使用这个NAND,还需要格式化一下

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-22 10:44,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档