查看: 3455|回复: 8

[已解决] K64 flash的读写操作问题

[复制链接]

该用户从未签到

8

主题

26

帖子

0

注册会员

Rank: 2

积分
148
最后登录
2018-2-7
发表于 2017-12-20 16:01:34 | 显示全部楼层 |阅读模式
我对flash循环写,循环写第一条成功后,i>1后写操作失败。循环还未结束程序就卡死了!请问这个是什么原因导致的?如何解决呢?
//擦除x选中整块flash
  ioctl(test_file, FLASH_IOCTL_ENABLE_SECTOR_CACHE, NULL);
  /*Unprotecting the the FLASH might be required */
ioctl(test_file, FLASH_IOCTL_WRITE_PROTECT, NULL);
  /*Move STRING_SIZE Bytes back */
fseek(test_file, -100*1024, IO_SEEK_END);
  
  //初始化flash数值
  len= write(test_file, "", 100*1024);
     
  char buf[10]={0,1,2,3,4,5,6,7,8,9};
   
  for(i=1;i<=20;i++)
   {
   
     /* Enable sector cache */
    ioctl(test_file, FLASH_IOCTL_ENABLE_SECTOR_CACHE, NULL);
     /* Move STRING_SIZE Bytes back */
   fseek(test_file, -((i*sizeof(buf))), IO_SEEK_END);
   
   /* Unprotecting the the FLASH might be required */
   ioctl(test_file, FLASH_IOCTL_WRITE_PROTECT, NULL);
   
   //写入索引表
   len = write(test_file, buf, sizeof(buf));
   //fflush(data_file_file);
   if (len != sizeof(buf)) {
     printf("\nwriting to flash. Error code: %d",i,_io_ferror(test_file));
    }else{
     printf("write success %d ",i);
    }
   }

最佳答案

[attach]440507[/attach] K64的FLASH编程应该是只支持8字节对齐的写入操作,你一次写入10个,第二次应该就不是8字节对齐了,你改为写8字节的倍数试试看
回复

使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-12-21 08:13:03 | 显示全部楼层

    回帖奖励 +5 NXP金币

    你操作什么FLASH能不能说明白点?具体咋回事?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    26

    帖子

    0

    注册会员

    Rank: 2

    积分
    148
    最后登录
    2018-2-7
     楼主| 发表于 2017-12-21 08:37:17 | 显示全部楼层
    技术范儿 发表于 2017-12-21 08:13
    你操作什么FLASH能不能说明白点?具体咋回事?

    K64的flashx,我想在bank3中连续循环进行写入。一次写入10个字节,第一次写成功了,第二次到第四次写就是失败的,第五次又是成功的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2017-12-21 09:29:39 | 显示全部楼层
    QQ截图20171221092647.jpg
    K64的FLASH编程应该是只支持8字节对齐的写入操作,你一次写入10个,第二次应该就不是8字节对齐了,你改为写8字节的倍数试试看
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-12-21 09:40:59 | 显示全部楼层
    tangLH 发表于 2017-12-21 08:37
    K64的flashx,我想在bank3中连续循环进行写入。一次写入10个字节,第一次写成功了,第二次到第四次写就是 ...

    另外写之前要保证你所写的区域是已经擦除过的,否则也会出问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    26

    帖子

    0

    注册会员

    Rank: 2

    积分
    148
    最后登录
    2018-2-7
     楼主| 发表于 2017-12-21 11:32:58 | 显示全部楼层
    nothingness 发表于 2017-12-21 09:29
    K64的FLASH编程应该是只支持8字节对齐的写入操作,你一次写入10个,第二次应该就不是8字节对齐了,你改为 ...

    这个可以修改吗?我在mqx中好像没有找到相关的定义
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2017-12-21 11:52:10 | 显示全部楼层
    tangLH 发表于 2017-12-21 11:32
    这个可以修改吗?我在mqx中好像没有找到相关的定义

    这个是硬件要求的,应该是不可以修改的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-12-21 11:56:09 | 显示全部楼层
    tangLH 发表于 2017-12-21 11:32
    这个可以修改吗?我在mqx中好像没有找到相关的定义

    写-擦除   这是特性
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    26

    帖子

    0

    注册会员

    Rank: 2

    积分
    148
    最后登录
    2018-2-7
     楼主| 发表于 2017-12-21 14:01:16 | 显示全部楼层
    nothingness 发表于 2017-12-21 11:52
    这个是硬件要求的,应该是不可以修改的

    好的,感谢!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 16:18 , Processed in 0.115713 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表