[转]QNX-IMX6UL移植NAND FLASH etfs文件系统

本文介绍在IMX6UL上移植NANDFlash的过程,包括从QNX官网下载BSP源码,针对nand2048进行修改,调整BCHAPBHGPMI地址参数,修改BCH参数,并关闭ECC校验,最终成功挂载文件系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意

声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正

锋影

email:174176320@qq.com

 

1、IMX6UL 配置了一块256M的nandflash,其原理图如下:

2、为了方便移植,到QNX官网下载IMX7的BSP中的NAND FLASH 源码,其源码支持nand4096 ,而本最小系统配置为nand2048,因此需要对其驱动进行相应修改。

(1)修改 BCH APBH GPMI的地址参数,因为IMX7的外设基本原理一样,其基地址和中断向量需要修改。

(2) 修改BCH参数,在原来的nand4096中 把一页化成四个部分,其结构如下:

而nand2048的一页只有2048 和64字节。所以需要进行修改,为了继承四个数据块,把数据划分为512+8字节 ECC 8字节。

3、修改源码中的参数

增加FLASH 配置

修改device_to_nfc 改成2048 

void device_to_nfc(uint8_t *parsed_data, uint8_t *raw_data)
{
    uint32_t dData_index, data_size, spare_size;
    int i;
    uint8_t bbi_backup = 0;

    dData_index = 0;
    data_size = 0;
    spare_size = 0;
    for (i = 0; i < (DATASIZE / BCH_SUBBLOCK_SIZE); i++) {
        /* Copy data bytes */
        memcpy((void *)(parsed_data + data_size), (void *)(raw_data + dData_index), BCH_SUBBLOCK_SIZE);
        dData_index += BCH_SUBBLOCK_SIZE;
        data_size += BCH_SUBBLOCK_SIZE;
        /* Copy fs meta data */
        memcpy((void *)(parsed_data + XXXXDEF + spare_size), (void *)(raw_data + dData_index), ETFS_META_SIZE_PER_SUBBLOCK);
        dData_index += (ETFS_META_SIZE_PER_SUBBLOCK);
        spare_size += (ETFS_META_SIZE_PER_SUBBLOCK);
    }
    // BBI swap
    bbi_backup = parsed_data[DATASIZE]; //(BBI backup for move to DATA area)
    parsed_data[DATASIZE] = parsed_data[XXXXDEF - (3 * ETFS_META_SIZE_PER_SUBBLOCK)];
    parsed_data[XXXXDEF - (3 * ETFS_META_SIZE_PER_SUBBLOCK)] = bbi_backup;
}

把ECC 校验关闭。

编译后执行 fs-etfs-imx-micron -e -m /fs/etfs 

通过df -h查看 文件系统已挂载上了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值