工具/软件:Code Composer Studio
您好!
我用完了 RAM (必须更改链接器文件以分配更多内容)、因此我检查了存储器使用情况、发现 eCAP 初始化占用了648个字...这对于几行代码来说非常重要。 我开始想知道这是否可能是由驱动程序库的使用引起的、并将 driverlib 命令替换为 bitfield 命令:
ECAP_disableInterrupt (ECAP1_base、
(ECAP_ISR_SOURC_CAPTURE_EVENT_1 |
ECAP_ISR_SOURC_CAPTURE_EVENT_2 |
ECAP_ISR_SOURC_CAPTURE_EVENT_3 |
ECAP_ISR_SOURC_CAPTURE_EVENT_4 |
ECAP_ISR_SOURC_COUNTER_OVERflow |
ECAP_ISR_SOURC_COUNTER_PERIOD |
eCAP_ISR_SOURC_COUNTER_COMPARE);
ECAP_clearInterrupt (ECAP1_base、
(ECAP_ISR_SOURC_CAPTURE_EVENT_1 |
ECAP_ISR_SOURC_CAPTURE_EVENT_2 |
ECAP_ISR_SOURC_CAPTURE_EVENT_3 |
ECAP_ISR_SOURC_CAPTURE_EVENT_4 |
ECAP_ISR_SOURC_COUNTER_OVERflow |
ECAP_ISR_SOURC_COUNTER_PERIOD |
eCAP_ISR_SOURC_COUNTER_COMPARE);
成为:
EALLOW;
ECap1Regs.ECEINT.ALL = 0;
ECap1Regs.ECCLR.ALL = 1;
EDIS;
内存使用量从648个字增加到645个字。 EALLOW 和 EDIS 指令占用2个字、但我可以将它们与所有 EALLOW 受保护的指令捆绑在一起、以对其进行修整、而不是针对每个指令集重复它们。 如果这对于其余指令都适用、我可以通过替换指令来将代码大小减小30-40%。
这是我的编译器设置问题、还是 driverlib 指令在内存中效率如此低? 因为在我要达到的速率时、 我将在计划程序的25%下耗尽 RAM、并且必须将此内容移至闪存、每次我想检查指令更改的效果时、我实际上都不想继续写入闪存。
提前感谢
Peter