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