查看: 411|回复: 14

[求助] LPC2136写入flash

[复制链接]
  • TA的每日心情
    开心
    2024-4-3 13:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    9

    帖子

    0

    注册会员

    Rank: 2

    积分
    91
    最后登录
    2024-4-23
    发表于 2024-4-10 17:44:04 | 显示全部楼层 |阅读模式
    我的上一篇帖子求助想实现lpc2136的一部分扇区当初EEPROM使用,地址在这:lpc2136写入flash - LPC - 恩智浦技术社区 (nxpic.org.cn)经过一位老哥指点,我找到了操作flash的程序:,但是单步调试的时候,IAP函数的输出参数paraout返回的参数是06,0A,也就是写入失败,比较也失败,想请问有没有哪位高人猜测是哪方面原因?我个人估计是startup文件里面配置不对,有老哥知道怎么配置的吗?像这个堆栈设置。谢谢


    我知道答案 目前已有14人回答

    堆栈

    堆栈

    我的程序代码

    我的程序代码

    IAP指导PDF

    IAP指导PDF
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:30
  • 签到天数: 197 天

    [LV.7]常住居民III

    0

    主题

    365

    帖子

    0

    高级会员

    Rank: 4

    积分
    869
    最后登录
    2024-4-29
    发表于 2024-4-12 09:22:13 | 显示全部楼层
    既然有参数返回估计堆栈是正常的。
    pdf里写了IAP状态代码的表格说明
    6:字节计数值不是 4 的倍数或是一个非法值
    10:源和目标数据不相等。
    你的nn变量长度是多少个字节?不要用uint8或者uint16,这两个都不是4字节对齐的,就算强转类型uint32,地址还是没有4字节对齐
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:30
  • 签到天数: 197 天

    [LV.7]常住居民III

    0

    主题

    365

    帖子

    0

    高级会员

    Rank: 4

    积分
    869
    最后登录
    2024-4-29
    发表于 2024-4-12 09:43:19 | 显示全部楼层
    还有就是RAMtoFlash这里注释写的只有512/1024/4096/8192这几个选项,4字节应该是不行的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:13
  • 签到天数: 535 天

    [LV.9]以坛为家II

    6

    主题

    2847

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4682
    最后登录
    2024-4-29
    发表于 2024-4-12 10:56:06 | 显示全部楼层
    谢谢楼主的教程!
    永远开心快乐
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-3 13:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    9

    帖子

    0

    注册会员

    Rank: 2

    积分
    91
    最后登录
    2024-4-23
     楼主| 发表于 2024-4-12 11:00:57 | 显示全部楼层
    本帖最后由 supercalifragilistic 于 2024-4-12 11:02 编辑
    eefocus_3722835 发表于 2024-4-12 09:43
    还有就是RAMtoFlash这里注释写的只有512/1024/4096/8192这几个选项,4字节应该是不行的 ...

    那请问我把字节改成了4096后收到的回复是09,也就是SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION,这个问题在哪你能猜测吗?
    1.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:30
  • 签到天数: 197 天

    [LV.7]常住居民III

    0

    主题

    365

    帖子

    0

    高级会员

    Rank: 4

    积分
    869
    最后登录
    2024-4-29
    发表于 2024-4-12 11:48:01 | 显示全部楼层
    supercalifragil 发表于 2024-4-12 11:00
    那请问我把字节改成了4096后收到的回复是09,也就是SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION,这个问题在 ...

    这个错误是扇区地址和实际写入地址不一致,你如果要写入扇区1,对应8k的位置,那应该是0x2000不是0x20000,IAP的pdf里写的也很清楚
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:30
  • 签到天数: 197 天

    [LV.7]常住居民III

    0

    主题

    365

    帖子

    0

    高级会员

    Rank: 4

    积分
    869
    最后登录
    2024-4-29
    发表于 2024-4-12 11:53:37 | 显示全部楼层
    pdf里表1.1可以看到并不是每个扇区都是8k,具体还是要看芯片手册,这里的扇区号和实际地址要一致
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-3 13:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    9

    帖子

    0

    注册会员

    Rank: 2

    积分
    91
    最后登录
    2024-4-23
     楼主| 发表于 2024-4-12 13:51:58 | 显示全部楼层
    eefocus_3722835 发表于 2024-4-12 11:53
    pdf里表1.1可以看到并不是每个扇区都是8k,具体还是要看芯片手册,这里的扇区号和实际地址要一致 ...

    谢谢老哥,我程序后面改成0x00002000,lpc2136的1号扇区是4k,也就是4096,改完这些还是报错09,你还能找出其他问题吗?
    2.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:30
  • 签到天数: 197 天

    [LV.7]常住居民III

    0

    主题

    365

    帖子

    0

    高级会员

    Rank: 4

    积分
    869
    最后登录
    2024-4-29
    发表于 2024-4-12 14:05:03 | 显示全部楼层
    supercalifragil 发表于 2024-4-12 13:51
    谢谢老哥,我程序后面改成0x00002000,lpc2136的1号扇区是4k,也就是4096,改完这些还是报错09,你还能找 ...

    https://www.nxp.com/docs/en/user-guide/UM10120.pdf
    第246页这里lpc2136的1号扇区的起始地址是0x00001000,还是那句话,扇区号和起始地址要对应
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-3 13:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    9

    帖子

    0

    注册会员

    Rank: 2

    积分
    91
    最后登录
    2024-4-23
     楼主| 发表于 2024-4-12 14:48:36 | 显示全部楼层
    本帖最后由 supercalifragilistic 于 2024-4-12 15:53 编辑
    eefocus_3722835 发表于 2024-4-12 14:05
    https://www.nxp.com/docs/en/user-guide/UM10120.pdf
    第246页这里lpc2136的1号扇区的起始地址是0x0000100 ...

    谢谢老哥,我也检查出这个其实地址应该是0x00001000,单步调试返回值是0,应该写入是成功了,还想请问你知道我怎么读取这个0x00001000的数据吗?我尝试用*(int *)0x00001000,强制转换成int地址,但还是没读出来
    *****************************************************************
    老哥,强制转换地址我发现是能读出来的,能问下你怎么将数据保存锁住吗?我发现重新注释代码改成只读就还是读不出来
    4.png
    1.png
    2.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-30 01:16 , Processed in 0.152770 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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