浅浅

浅浅

0个粉丝

9

问答

0

专栏

0

资料

浅浅  发布于  2019-07-25 13:44:26
采纳率 0%
9个问答
1784

hi3531du盘自动升级

 
spi nand flash 写入出现问题
static int nand_flash_write(unsigned long offset, unsigned long len, void *buf)
{
        int ret = 0;
        unsigned long offset_notify, write_start, write_len, write_step;
        char *pbuf = buf;
        size_t length;
        struct mtd_info *nandflash_info = get_nand_info();

        if (offset == 0) {
                /* As EB bit locates at the last page of first block must be checked
                   when running bootloader, so make sure the length is block size
                   algin at offset == 0 */
                length = len & (nandflash_info->erasesize - 1) ? (size_t)(len +
                        (nandflash_info->erasesize - len % nandflash_info->erasesize)) : len;
                write_step = nandflash_info->erasesize;
        } else {
                /* Make sure the length is page size algin */
                length = len & (nandflash_info->writesize - 1) ? (size_t)(len +
                        (nandflash_info->writesize - len % nandflash_info->writesize)) : len;
                write_step = nandflash_info->writesize;
        }

        write_start = offset;
        offset_notify = offset;
        write_len   = length;

        while (length > 0) {
                size_t block_offset = offset & (nandflash_info->erasesize - 1);
                size_t *rw_size;

                if (nandflash_info->block_isbad(nandflash_info,
                                offset & ~((loff_t)nandflash_info->erasesize - 1))) {
                        printf("Skip bad block 0x%08llx\n",
                                offset & ~((loff_t)nandflash_info->erasesize - 1));
                        offset += nandflash_info->erasesize - block_offset;
                        continue;
                }

                rw_size = (size_t *)&write_step;

                ret = nandflash_info->write(nand_flash, (size_t)offset, *rw_size,
                                rw_size, (u_char *)pbuf);
                if (ret) {
                        printf("NAND write to offset %lx failed %d\n",
                                        offset, ret);
                        break;
                }

                offset += write_step;
                pbuf   += write_step;
                length -= write_step;
                offset_notify += write_step;
                /* notify real time schedule */
                schedule_notify(offset_notify, write_len, write_start);
        }

        return ret;
}
我来回答
回答2个
时间排序
认可量排序

goodman

4个粉丝

30

问答

18

专栏

17

资料

goodman 2019-07-26 08:38:51
认可0
之前我记得我发过3531的nand  flash 自动升级的patch 你可以在论坛里面搜索下

浅浅

0个粉丝

9

问答

0

专栏

0

资料

浅浅 2019-07-26 14:00:08
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145798&ptid=75272]goodman 发表于 2019-7-26 08:38[/url]
之前我记得我发过3531的nand  flash 自动升级的patch 你可以在论坛里面搜索下[/quote]

试过的不行
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区