usb协议栈调试记录

作者: 天亮了zlm | 来源:发表于2019-04-11 00:41 被阅读27次

    问题1:CSTARCK is outside the stack range

    Tue Apr 09, 2019 16:13:02: The stack pointer for stack 'CSTACK' (currently 0x80901B20) is outside the stack range (0x817FF800 to 0x817FFC00)

    可能是IAR调试模式下C栈的地址跟icf文件中指定的地址范围不一样,在官方提供的demo中也存在这一的问题,暂时不知如何去掉这个警告。

    问题2:大批量数据读取协议,msd,在读小文件时是OK的,读大文件就会跑飞。

    • 初步怀疑是堆的问题,协议栈内部数据结构 itd的申请过程出现问题。
      问题最终调试定位是

    DataAbort_Handler

    • 去掉内存保护机制之后,在读大文件时,出现Undefined_Handler错误

    • 采用用指针的方式来使用内存,而非定义为数组,能够支持大文件的读取,为什么数组不行,其原因值得深究。(期间花了2天时间,思维不够开阔,应该做多种尝试,而非拘泥于一种解决方案。应该快速使用在m7和m3平台成熟的操作方式,验证其是否可行。)

    期间接触有疑问的地方:

    MPU功能是否启用
    noncacheable 的内存保护,2M为一个保护单元
    noncacheable 的大小是如何设定的,在使用全局定义数组的时候,noncacheable为什么改变大小。

    相关文章

      网友评论

        本文标题:usb协议栈调试记录

        本文链接:https://www.haomeiwen.com/subject/hksiiqtx.html