1. PLL、Prescaler、PFD的作用分别是什么?
时钟设置:
PLL:phased locked loop,锁相环(倍频) 24MHZ*N(N是整数)
Prescaler:预分频器(分频) 24MHZ*M(M是整数)
PFD:phased fraction divder,相位分数分频器(倍频/降频)
24MHZ*(N/M) N/M>1:倍频 N/M<1:降频 (N、M是整数)
2. SOC时钟配置你做了哪些工作?
1.配置ARM的时钟为528MHZ,使得CortexA7内核工作在528MHZ频率下
2.配置PLL2和PLL3下的8个PFD
3.配置3个根时钟,为后续外设工作提供个时钟频率
3. GIC支持多少个优先级?IMX6ULL中支持多少个优先级?
GIC支持1020个优先级;IMX6ULL中支持160个优先级。
其中0-15是软中断SGI
16-31是私有中断PPI
32-1020是共享外设中断SPI
4. 完善时钟代码,根据时钟树理解ARM、PFD、三个根时钟配置过程
1.配置ARM的时钟为528MHZ,使得CortexA7内核工作在528MHZ频率下
对于ARM时钟(没有时钟门)来说,填入倍频因子,PPL1到达一个特别高的频率,到达ARM内核里,频率的极具升高会导致ARM内核死机。所以,操作:先让ARM内核工作在step_clk下:先工作在一个比较低的频率下(时钟源选osc_clk:24MHZ)
-
先选择osc_clk,让step_clk为24MHz。
-
再将PLL1的输出改成step_clk,让ARM暂时工作在24MHz;
设置好倍频因子,PPL1就是1056MHZ ,等到这个频率,经过一个二分频,到达528MHZ之后,工作频率稳定之后,再切换到pll1_main_clk,ARM可以比较稳定的工作在528MHZ下
- 配置PLL为1056,注意设置倍频因子之前先把PLL之后的二分频设置好,
避免ARM内核故障!!
- 最后改回pll1_main_clk
2.配置PLL2和PLL3下的8个PFD
3.配置3个根时钟,为后续外设工作提供个时钟频率