你好!我想问一下AM1808主频,目前根据starterware配置的是300MHz,然后在测试语句运行时间时,发现一条语句时间很长,我是直接对地址进行操作的,没有通过函数,一条语句时间大概为0.1uS,只有10MHz,请问是不是汇编运行耗时太多导致,如何优化?在线等,谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好!我想问一下AM1808主频,目前根据starterware配置的是300MHz,然后在测试语句运行时间时,发现一条语句时间很长,我是直接对地址进行操作的,没有通过函数,一条语句时间大概为0.1uS,只有10MHz,请问是不是汇编运行耗时太多导致,如何优化?在线等,谢谢!
感谢你的答复。我做了一个测试,就是操作一个IO口输出高低电平
while(1)
{
GPIOPinWrite(SOC_GPIO_0_REGS,65,1);
GPIOPinWrite(SOC_GPIO_0_REGS,65,0);
}
GPIOPinWrite是starterWare里面的函数,控制GPIO4[0]输出高低电平,这个输出频率大概只有三四百赫兹;后来我将程序改成下面这样
while(1)
{
HWREG(0x01E2606C)=1;
HWREG(0x01E26068)=1;
}
这也是根据GPIOPinWrite函数优化过来的,直接针对该IO口赋值,减少中间的计算,这个输出频率大概为3MHz,整体来说速度是不是也太慢了。
上面是主频300MHz测试的,后来我将主频升为375MHz,速度提升了一点。
我还测试for语句,执行一次需要将近400ns。
请问,怎么才能提高执行速率?谢谢!
楼主你好,我没用过这个芯片,但是我有个问题,就是该芯片是不是对GPIO有专门的时钟配置呢?因为我用STM32的时候,是有专门的GPIO时钟的, 每次使用IO都要初始化IO的时钟,你查看一下这个芯片有没有类似的设置寄存器。还有该芯片官方提供了例程吗,例程里一般会有关于IO的操作例程的
感谢你的回复。这个芯片是有专门针对GPIO的时钟配置,然后这个分频时钟是芯片内部固定的分频比,自己无法再进行配置去提高IO口的频率;我这个芯片每次使用IO好像都不需要初始化时钟,都是一开始就把时钟配置好,后续不需再进行时钟配置;官方提供了例程,只是有GPIO的操作,但是没有涉及到速率,所以很头疼,现在都不知道问题出在哪里,按道理IO口操作的速率不应该这么慢的。
如果内部固定了分频比,只需要调用那些分频就行了。默认的应该是速度比较慢的分频比。确实不应该那么慢,可惜我手上没有那个芯片,回头找找,我试试。这个芯片有官方提供相关GPIO的库函数没,看看里面有没有关于时钟的操作函数。
谢谢回复!分频比我都调到最快了,但还是很慢;官方提供了GPIO的库函数,没有看到关于时钟的操作函数,目前不单单是GPIO口操作慢,感觉每一条语句都需要耗时很长。
哥们你发错论坛了 AM1808属于Sitara系列,是处理器,不算MCU了
yishan wang 说:哥们你发错论坛了 AM1808属于Sitara系列,是处理器,不算MCU了
哈哈,第一次发帖,我重新再发一次,谢谢了