Chinaunix首页 | 论坛 | 博客
  • 博客访问: 933442
  • 博文数量: 153
  • 博客积分: 4195
  • 博客等级: 上校
  • 技术积分: 2631
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-22 11:32
文章存档

2012年(7)

2010年(35)

2009年(111)

分类:

2009-08-04 15:03:35

进来在探索在嵌入式arm平台上低功耗的研究,和强哥和fp一起商谈了一下技术路线,准备先把最简单的idle吃掉,idle就是指在系统没有任务的时候自动进入idle模式,直至中断唤醒。
idle的实现是比较简单的:
这是at91rm9200的idle过程,当然对于我们sep4020也是相同的,

最终都会掉到include/asm-arm/arch-sep4020/system.h中的处理器相关函数,在这里就是static inline void arch_idle(void)函数,很奇怪很多处理器在实现这个函数的时候都直接使用了cpu_do_idle,下面分析一下这个函数:
include/asm-arm/Cpu-single.h中
#ifdef __STDC__
#define __cpu_fn(name,x)    cpu_##name##x
#else
#define __cpu_fn(name,x)    cpu_/**/name/**/x
#endif
#define cpu_fn(name,x)    __cpu_fn(name,x)
#define cpu_do_idle         cpu_fn(CPU_NAME,_do_idle)
 
对于我们sep4020是arm720T的,所以CPU_NAME=arm720
,因此我在这里写cpu_do_idle的话,相应的函数就是,
#define cpu_do_idle         cpu_arm720_do_idle
 
cpu_arm720_do_idle函数时在arch/arm/mm文件夹中proc-arm720.S中:
具体代码如下:
/*
 * Function: arm720_proc_do_idle(void)
 * Params  : r0 = unused
 * Purpose : put the processer in proper idle mode
 */
ENTRY(cpu_arm720_do_idle)
  mov pc, lr

 

可以看到就用cpu_do_idle是实现不了进入sep4020的idle模式,因此需要在这里面做改动,按照我们的idle的配置方法,对pmc进行配置,不管怎样,搞清楚了这个问题了。


阅读(3154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~