在uboot中如何使用sifive的timer 
时间: 2023-05-29 17:02:34 浏览: 47
在U-Boot中使用SiFive的Timer需要实现以下步骤:
1. 配置Timer的时钟:Timer的时钟默认使用CPU的时钟,需要将Timer的时钟配置为独立的时钟源。可以在UBOOT的配置文件中添加以下代码:
```c
#ifdef CONFIG_SIFIVE_TIMER
#define SIFIVE_TMR_BASE_ADDR SIFIVE_CLINT_BASE_ADDR
#define SIFIVE_TMR_HZ (CONFIG_SYS_CLK_FREQ / 4)
#endif
```
2. 初始化Timer:可以在U-Boot的board_init()中调用init_sifive_timer()函数初始化Timer。
```c
int board_init(void)
{
......
#ifdef CONFIG_SIFIVE_TIMER
init_sifive_timer();
#endif
......
return 0;
}
```
3. 使用Timer:可以使用timer_read_counter()函数读取Timer的计数器数值。例如,以下代码将等待1秒钟:
```c
#include <asm/arch/timer.h>
ulong start_time, end_time;
start_time = timer_read_counter();
do {
end_time = timer_read_counter();
} while ((end_time - start_time) < (CONFIG_SYS_CLK_FREQ));
```
以上就是在UBOOT中使用SiFive的Timer的步骤。
相关推荐










