我的Linux内核是从TI官网下载的2.6.32的那个内核,在DSP端使用TSK_sleep发现不正常
起初TSK_sleep直接卡死,不返回。
后来发现在Linux内核里讲时钟设成了T0_BOT和T0_TOP,并且只使能了timer0,没有将timer1使能。
随后使能了timer1,具体是这样的,
在arch/arm/mach-davinci/time.c的davinci_timer_init里面紧随clk_enable(timer_clk)后面加了几句句:
timer_clk1 = clk_get(NULL, "timer1");
BUG_ON(IS_ERR(timer_clk1));
clk_enable(timer_clk1);
同时,在server端的.tcf文件中对INPUTCLK做了修改:
prog.module("CLK").INPUTCLK = 247.5 ;
重新烧写内核和.x64P文件后,发现TSK_sleep不卡死了,但是时间不对。
本来TSK_sleep(2),实际的时间却是2秒,
本来TSK_sleep(20),实际的时间却是20秒,
应该说时钟有误差,
随后将INPUTCLK改成了247500,TSK_sleep(2)变成了1.7秒左右。
再将INPUTCLK改成了247500000,TSK_sleep(2)变成了14毫秒左右。
总之,时钟总是不正常。
不知道TI的专家能不能教我怎样在Linux内核和DSP Server端如何正确的配置时钟?
小弟不胜感激