我们的协处理器之一是8位微处理器。它的主要作用是控制处理闪存的硬件。我们怀疑它正在运行的代码效率非常低,因为我们在读取/写入闪存时测量到了低速度。问题是,我们只有一个J-TAG端口连接到主CPU,所以不能调试它。我们所拥有的是一个寄存器,它可以从CPU获得,它包含了微处理器的程序计数器。坏消息是,微处理器的工作频率与CPU不同,因此在外部监控它的程序计数器也很困难。测量微处理器内部的时间也非常困难,因为它的寄存器只有8位长。不用说,代码是用汇编语言编写的,非常复杂。你将如何着手解决这个问题?
发布于 2012-12-23 21:04:57
不用说,代码是用汇编语言编写的,非常复杂。你将如何着手解决这个问题?
我建议您从这一部分的需求规范开始(或生成),然后用C重新实现代码(或者甚至仔细使用C++子集)。如果你感觉到的“复杂性”仅仅是代码本身,而不是需求,那么设计出来将是一个好主意--这只会使未来的维护变得更加复杂,更容易出错,成本更高。
使用汇编器的一个常见论点是大小和性能,但更常见的情况是,大量的汇编器代码远不是最佳的;为了保持一定的生产力和可维护性,通常会使用和重用不适合特定情况的“样板”代码,而编译器将分析代码更改并执行系统设计人员实际上不应该担心的那种“微优化”。使您的算法和数据结构高效,并将目标指令集细节留给编译器。
即使没有直接在目标上调试的能力,例如,使用高级语言也可以在PC上进行原型设计和模拟。
即使您保留汇编器代码,如果您的开发工具包括指令集模拟器,这可能是硬件调试的一个很好的替代方案;特别是如果它支持可用于模拟硬件设备行为的调试器脚本。
综上所述,将其视为“黑盒”并得出代码效率低下的结论有点跳跃。例如,哪种类型的闪存看起来很慢?它是如何连接到微控制器的?你是如何衡量这种表现的?闪存本质上很慢-尤其是写入和页面擦除;在对软件性能做出任何结论之前,请检查闪存的性能规格。
https://stackoverflow.com/questions/14007184
复制相似问题