ARMday06-IMX6ULL-CCM clock tree

发布时间:2026/7/24 19:11:54
ARMday06-IMX6ULL-CCM clock tree SOC时钟配置你做了哪些工作首先在时钟树上配置arm线arm线不能直接运行因为24Mhz到996Mhz会导致死机等故障所以通过MMU先在另一条线上配置好后通过MMU切换到主线路上然后配置PLL下的PFD有两个型号528和480他们分别有四个不同频率的分支需要单独配置配置完后根据时钟图从左向右通过查手册依次配置三个根时钟GIC支持多少个优先级IMX6ULL中支持多少个优先级GIC 优先级字段为 8bit0~255最多 256 个优先级8 位全部实现。IMX6ULL32.MX6ULL 搭载 Cortex-A7 内核集成GICv2 中断控制器NXP 硬件实际仅实现了5 位有效优先级位时钟配置所需PLL锁相环倍频Prescaler预分频器分频PFDphased fraction divder 相位分数分频器倍频/降频配置arm-soc上-时钟树时按照芯片手册时钟树如图所示先配置ARM clocks配置时需注意arm-clocks上先配置step_clk osc_clk线 再由MUX切换到pll1_main_clk运行不能直接从 24MHz 切 996MHz PLL必须走过渡 step_clk 中转直接跨大频率切换会产生时钟毛刺导致 ARM 寄存器、流水线逻辑时序违规程序跑飞、死机2.配置PFD_528和PFD_480按照固定频率根据手册置位设置完毕后从左至右通过MMU配置三个根时钟至此配置完毕。完整代码void clock_init(void) { unsigned int t0; CCM-CCSR ~(18); CCM-CCSR|(12); //单独配置arm-clock tCCM_ANALOG-PLL_ARM; t~(314); t|(113); t~(0x7F0); t|(880); CCM_ANALOG-PLL_ARMt; CCM-CACRR|(10); //回到原路 CCM-CCSR~(12); //配置PFD_528 tCCM_ANALOG-PFD_528; t~((0x3F0)|(0x3F8)|(0x3F16)|(0x3F24)); t~((17)|(115)|(123)|(131)); t|(270)|(168)|(2416)|(3224); CCM_ANALOG-PFD_528t; 配置PFD_480 tCCM_ANALOG-PFD_480; t~((0x3F0)|(0x3F8)|(0x3F16)|(0x3F24)); t~((17)|(115)|(123)|(131)); t|(120)|(168)|(1716)|(1924); CCM_ANALOG-PFD_480t; tCCM-CBCMR; t~(318); t|(118); CCM-CBCMRt; tCCM-CBCDR; t~(125); t~(710)|(38); t|(210)|(18); CCM-CBCDRt; tCCM-CSCMR1; t~(16); t~(0x3F0); CCM-CSCMR1t; // 使能外设时钟 enable_clock(); }