norflash的基本操作2

本文详细介绍了嵌入式系统中NorFlash芯片的基本操作,包括擦除、读写以及设备初始化。重点讲解了如何通过设备节点进行分区管理,设备节点结构体与NorFlash信息结构体的关系,以及NorFlash操作函数的使用。同时,文章讨论了分区的地址和大小设置,以及在多分区情况下的注意事项。

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

norflash芯片擦除
芯片手册中仅扇区、块、整片擦除操作
整片擦除无须使用addr地址


int _norflash_eraser(u8 eraser, u32 addr)//擦除
{
   
    u8 eraser_cmd;
    switch (eraser) {
   
    case FLASH_PAGE_ERASER://页擦除 ???手册中无页擦除指令?
        eraser_cmd = WINBOND_PAGE_ERASE;//页擦除指令
        addr = addr / 256 * 256;//计算页对齐地址
        break;
    case FLASH_SECTOR_ERASER://扇区擦除
        eraser_cmd = WINBOND_SECTOR_ERASE;//扇区擦除指令
        //r_printf(">>>[test]:addr = %d\n", addr);
        addr = addr / 4096 * 4096;//计算扇区对齐地址
        break;
    case FLASH_BLOCK_ERASER://块擦除
        eraser_cmd = WINBOND_BLOCK_ERASE;//块擦除指令
        addr = addr / 65536 * 65536;//计算块对齐地址
        break;
    case FLASH_CHIP_ERASER://整片擦除
        eraser_cmd = WINBOND_CHIP_ERASE;//整片擦除指令
        break;
    }
    _norflash_send_write_enable();//使能写
    spi_cs_l();//片选使能
    spi_write_byte(eraser_cmd);//写指令
    if (eraser_cmd != WINBOND_CHIP_ERASE) {
   //如果不是整片擦除
        _norflash_send_addr(addr);//需要写入地址
    }
    spi_cs_h();//片选禁能
    return _norflash_wait_ok();//等待完成
}

//cmd:指令
//arg:获取时为指针的地址,设置时为参数
//unit:单位,1表示字节,1024表示KB,1024*1024表示MB
//part:分区


int _norflash_ioctl(u32 cmd, u32 arg, u32 unit, void *_part)//IO通道控制
{
   
    int reg = 0;
    struct norflash_partition *part = _part;
    os_mutex_pend(&_norflash.mutex, 0);
    switch (cmd) {
   
    case IOCTL_GET_STATUS://获取状态
        *(u32 *)arg = 1;
        break;
    case IOCTL_GET_ID://获取ID
        *((u32 *)arg) = _norflash.flash_id;
        break;
    case IOCTL_GET_CAPACITY://获取存储能力
        if (_norflash.flash_capacity == 0)  {
   //没有存储空间
            *(u32 *)arg = 0;
        } else if (_norflash.part_num == 1 && part->start_addr == 0) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值