【发布时间】:2015-06-21 16:07:52
【问题描述】:
在我的应用程序中,我在 Nordic Semiconductor 的 nRF51422 IC 内运行了一个 Cortex M0。
在尝试使用 Basic Compression Library 时,我让 LZ 和 Rice 正常工作,但 Huffman_Compress 给了我一个硬件故障。 我怀疑处理器正在访问一个未对齐的内存地址,但是如何确定呢?
您能否快速查看一下代码,看看是否能找到错误?
这是来自开发者网站的code。
在这段代码中,我尝试在处理器挂起之前使用 RTT 打印东西,它完成了_Huffman_Hist( in, sym, insize );,但甚至没有进入_Huffman_MakeTree( sym, &stream ); 函数。
提前致谢! =)
【问题讨论】:
-
将
Huffman_Compress()放在int main()的开头我可以打印更多内容:我进入_MakeTree例程,while( nodes_left > 1 )出于某种原因一直运行到nodes_left == 4。跨度> -
一句话,没有。根本不可能查看 500 行库代码并知道这些函数的所有 your 调用是否正确、堆和堆栈设置正确、将有效地址作为缓冲区传递等。我们还不知道您的工具链和选项的特定组合将 C 代码变成了什么 - 那里也有一整类微妙的错误。我建议从硬故障处理程序中查看堆栈上的异常上下文 - 知道哪条指令出错,以及当时它试图做什么,对于确定它有很长的路要走。
标签: arm compression huffman-code cortex-m nrf51