Linux-Linux内核如何得知CPU的主频

发布于 2016-10-24 05:43:48 字数 473 浏览 2034 评论 3

自己定制了一款开发板,CPU用的arm926,Linux启动后,查看/proc/cpuinfo的信息如下:

root@192.201.0.10:~# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 201.93
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5

Hardware : DaVinci DM646x EVM
Revision : 0000
Serial : 0000000000000000

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

偏爱自由 2017-06-29 03:55:31

根据我的经验,CPU主频应该在u-boot启动前就已经设置好了,这取决于你的开发板启动过程。
不知道你用的哪个厂家的ARM9,如果是LPC的话,启动过程如下:
1. LPC在内部ROM固化了一段启动代码,叫做bootstrap,它的功能是寻找可用的1级boot(寻找的源包括UART、NorFlash、NandFlash等),并将该1级boot copy到内部ram,然后设置ARM内部地址映射,将内部RAM映射到0x0000 0000 地址,并执行1级boot。
注意:这个1级boot有大小限制,一般不超过54k。
2. 1级boot的功能就比较多样了,LPC有一个通用的1级boot,叫做kickstart,功能是初始化板级系统(如果需要),找到2级boot,load到内存并执行。
3. 2级boot根据存储位置的不同,可以是uboot,也可以是另一个bootloader,比如LPC提供的S1lstage,由S1L来启动uboot。

说到这感觉有点乱,因为根据bootloader的存储位置不同,芯片会有不同的尺寸限制。取决于 ajaxhe 的开发板的详细资料。
总体的思路是在你的uboot运行之前,系统时钟肯定已经设定好了,不然怎么能保证uboot被正确加载到SDRAM并运行呢?因为我跑uCOS和前后台程序比较多,对uboot的功能不了解。所以暂时没有更好的建议。如果ajaxhe提供更多板级资料,我们再研究。

虐人心 2017-02-27 03:57:01

确实是在uboot中有设置
在/cpu/arm926ejs/davinci/lovwlevel_init.S文件中进行了设置:

 /* Program the PLL Multiplier */
ldr r6, PLL2_PLLM
mov r2, $0x17 /* 162 MHz */
str r2, [r6]

/* Program the PLL2 Divisor Value */
ldr r6, PLL2_DIV1
mov r4, $0x0b /* 54 MHz */
str r4, [r6]

可以看到上面两段代码对倍频寄存器(PLL2_PLLM)和分频寄存器进行了设置(PLL2_DIV1)。楼主可以对应你的datasheet进行修改。

在/cpu/arm926ejs/davinci/cpu.c中有这样一个函数

 int print_cpuinfo(void)
{
/* REVISIT fetch and display CPU ID and revision information
* too ... that will matter as more revisions appear.
*/
printf("Cores: ARM %d MHz",
pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, ARM_PLLDIV));

#ifdef DSP_PLLDIV
printf(", DSP %d MHz",
pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, DSP_PLLDIV));
#endif

printf("nDDR: %d MHzn",
/* DDR PHY uses an x2 input clock */
pll_sysclk_mhz(DAVINCI_PLL_CNTRL1_BASE, DDR_PLLDIV)
/ 2);
return 0;
}

该函数负责在输出ARM,DDR的频率

浮生未歇 2017-02-18 04:40:07

主频是在uboot里得到的。
CPU的主频是在uboot里设置的。

对于这种嵌入式的开发板,uboot的一部分功能就类比pc上的bios

可以使用两种方式设置主频:
* 用"cpufreq" 设置主频,生成"cpu_frq"变量
* 使用memory write(MW)命令直接写对应内存地址,改变主频。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文