各位好,
目前小弟正在尝试使用AR9331+openwrt的系统实作一个方波,
目的是为了看这个系统打出来的方波可以到多快,最终会用这个波去控制RGB LED灯。
我使用的方法是用hrtimer写一个module,
hrtimer的interrupt时间我设为5000(5us),
每一次进入interrupt就反向gpio_out,并且用gpio_set_value指定出去。
但是我看示波器量到的结果,
他反向的时间有时候会是3us,有时候是8us,且是随机的,
有时候是high转low时为3us有时是8us,low转high时也是,
但如果把interrupt设到8000以上的话,示波器上看到的结果是正确的(反向频率125Khz)。
所以我想会不会是这两个function实际上跑的指令跟想像中不太一样,
我有试着让这个module在编译时留下assembly code,
但是加上-save-temps也没办法,所以没办法追到它实际执行的指令是哪些。
目前还想尝试的是..不使用interrupt而是直接用while loop,
看看他最快可以到哪里..但是这样之后openwrt如果有跑其他process,
再排程下来,好像就更难捉摸它的速度会变成什么了。
所以目前我算是没有别的办法了orz
请问各位有其他方法可以帮助我再逼出这个CPU的速度吗?
谢谢