有数年没写程式了,最近要改一支别人写的程式,遇到一些问题,不知可否解?
上层API有
API123();
API456();
API789();
API是其他sw厂商提供的,不能修改,也不会有修改的意愿
全部的API都会在底层一直呼叫 SPI_READ()
SPI_READ()是我们自己写的,可以修改
因为API是纯SW的写法,会去SPI取固定位置、固定长度的资料,拿去做运算
造成API789()执行时间超级长,大概10秒
因为我已经知道他要的SPI资料的位置和长度,
我是想把资料先预读搬到RAM中,
然后在SPI_READ()判断,
if(位置对 && 长度对), 去RAM搬资料,不实际执行底层SPI的运作 (偷时间)
要预存的RAM大小~1KB,
对斤斤计较的MCU来说,RAM最好只在需要的时间再开起来
所以RAM只希望在API789()前开起来,API789()结束后close和free掉
现在的问题在我在SPI_READ()中,写了if的判断式
但是可能在执行API123()时,
写的if判断式中,RAM的变量或变量指标,在那个时间点并不存在
造成编译一直不过
总结:
我只希望在API789()前后,才让RAM有预读的资料
让API789()里头呼叫SPI_READ()时,if成立,才去拿预读资料
其他API123(), API234()执行呼叫SPI_READ()时,我不care
有点想不出如何解,希望各位指点一下,感谢.