Tina&Melis时钟树分析

七路PLL:

root@(none):/sys/kernel/debug/clk# cat clk_summary 
   clock                         enable_cnt  prepare_cnt        rate   accuracy   phase
----------------------------------------------------------------------------------------
 osc48m                                   0            0    48000000          0 0  
    osc48md4                              0            0    12000000          0 0  
       usbohci0_12m                       0            0    12000000          0 0  
 pll_periph0div25m                        0            0    25000000          0 0  
    ephy_25m                              0            0    25000000          0 0  
 hosc                                    11           11    24000000          0 0  
    csi_master0                           0            0    24000000          0 0  
    sdmmc0_mod                            0            0      800000          0 0  
    dcxo_out                              0            0    24000000          0 0  
    spwm                                  0            0    24000000          0 0  
    cpurapbs2                             0            0    24000000          0 0  
    cpurcpus                              1            1    24000000          0 0  
       cpurahbs                           1            1    24000000          0 0  
          cpurapbs1                       2            2    24000000          0 0  
             cpurpio                      1            1    24000000          0 0  
             stwi                         1            1    24000000          0 0  
    csi_master1                           0            0    24000000          0 0  
    mipi_host0                            1            1    24000000          0 0  
    usbphy0                               1            1    24000000          0 0  
    ths                                   1            1    24000000          0 0  
    gpadc                                 1            1    24000000          0 0  
    spi2                                  0            0    24000000          0 0  
    spi1                                  0            0    24000000          0 0  
    sdmmc2_rst                            0            0    24000000          0 0  
    sdmmc2_bus                            0            0    24000000          0 0  
    sdmmc2_mod                            0            0    24000000          0 0  
    sdmmc1_rst                            0            0    24000000          0 0  
    sdmmc1_bus                            0            0    24000000          0 0  
    sdmmc1_mod                            0            0    24000000          0 0  
    sdmmc0_rst                            0            0    24000000          0 0  
    sdmmc0_bus                            0            0    24000000          0 0  
    dbgsys                                0            0    24000000          0 0  
    avs                                   0            0    24000000          0 0  
    apb2                                  1            1    24000000          0 0  
       twi3                               0            0    24000000          0 0  
       twi2                               0            0    24000000          0 0  
       twi1                               0            0    24000000          0 0  
       twi0                               0            0    24000000          0 0  
       uart3                              0            0    24000000          0 0  
       uart2                              0            0    24000000          0 0  
       uart1                              0            0    24000000          0 0  
       uart0                              1            1    24000000          0 0  
    hoscd2                                0            0    12000000          0 0  
    pll_csi                               0            0   336000000          0 0  
       csi_top                            0            0   336000000          0 0  
    pll_audio                             4            4    22579200          0 0  
       codec_1x                           1            1    22579200          0 0  
       i2s0                               1            1    22579200          0 0  
       codec_4x                           0            0    22579200          0 0  
       i2s1                               0            0    22579200          0 0  
       pll_audiox2                        0            0    45158400          0 0  
       pll_audiox4                        0            0    90316800          0 0  
    pll_video0                            2            2    99000000          0 0  
       dspo                               0            0    99000000          0 0  
       tcon_lcd                           1            1    99000000          0 0  
       mipi_dphy0                         1            1    24750000          0 0  
       pll_video0x4                       0            0   396000000          0 0  
    pll_uni                               2            3   600000000          0 0  
       eise                               0            0   600000000          0 0  
       isp                                0            0   300000000          0 0  
       ve                                 0            1   600000000          0 0  
       de                                 1            1   300000000          0 0  
       g2d                                1            1   300000000          0 0  
       pll_unix2                          0            0  1200000000          0 0  
    pll_periph0                           4            4   600000000          0 0  
       spi0                               1            1   100000000          0 0  
       cpurapbs2_pll                      0            0   600000000          0 0  
       cpurcpus_pll                       0            0   600000000          0 0  
       nna_rst                            0            0   600000000          0 0  
       apb1                               2            2   100000000          0 0  
          pio                             1            1   100000000          0 0  
          pwm                             1            1   100000000          0 0  
       ahb3                               2            2   200000000          0 0  
          display_top                     1            1   200000000          0 0  
          usbotg                          1            1   200000000          0 0  
          usbehci0                        0            0   200000000          0 0  
          usbohci0                        0            0   200000000          0 0  
          gmac                            0            0   200000000          0 0  
       psi                                1            1   200000000          0 0  
          ahb2                            0            0   200000000          0 0  
          ahb1                            2            2   200000000          0 0  
             iommu                        1            1   200000000          0 0  
             hstimer                      0            0   200000000          0 0  
             dma                          1            1   200000000          0 0  
       periph32k                          0            0       32768          0 0  
       pll_periph0x2                      0            0  1200000000          0 0  
          nna                             0            0  1200000000          0 0  
          ce                              0            0   300000000          0 0  
    pll_ddr0                              0            0  1584000000          0 0  
       sdram                              0            0  1584000000          0 0  
       mbus                               0            0   396000000          0 0  
    pll_cpu                               0            0   600000000          0 0  
       cpu                                0            0   600000000          0 0  
          cpuapb                          0            0   150000000          0 0  
          axi                             0            0   200000000          0 0  
 iosc                                     0            0    16000000          0 0  
 losc                                     1            1       32768          0 0  
    losc_out                              1            1       32768          0 0  
    cpurowc                               0            0       32768          0 0  
root@(none):/sys/kernel/debug/clk# 

下图是Melis的时钟分布:

一般都有多路PLL,这多路PLL是由同一个晶振源驱动的,都是参考24M晶振时钟驱动的,一带多的哪种,后面那个其实是一个pll输出两个频率.还是一个PLL。

FIX_SRC是表示固定时钟源24M这些,FIX_FACTOR是指pllx4/pllx2这种由pll固定分频的时钟源


Melis下的实际分析:

在Tina上进行以下分析时,需要注意需要先通过DS5 关闭MMU功能,否则无法直接读取CCMU物理地址.

CPU主频获取:

CCMU基地址是0x03001000,PLL_CPUX控制寄存器偏移为0,读出来是0x8A003100,解析出N,M值分别为0x31和0x0,外部激励时钟是HOSC=24M,所以 CPU主频跑 \\ Freq_{cpu}=24MHz \times \frac{N+1}{M+1} = 24\times \frac{0x32}{0x1}=24\times \frac{50}{1}= 1200Mhz=1.2GHz

Tina上则不同,由于Tina支持动态调频调压,在系统负荷不重的情况下,得到的寄存器如下图所示:

 解析出N,M值分别为0x18和0x0,外部激励时钟是HOSC=24M,所以 CPU主频跑 

\\ Freq_{cpu}=24MHz \times \frac{N+1}{M+1} = 24\times \frac{0x19}{0x1}=24\times \frac{25}{1}= 600Mhz=600M

和上文的clk_summary的输出是吻合的。

但是当执行

dd if=/dev/zero of=/dev/null

后,DS5连接获取到的寄存器如下图所示:

这个值和上面melis的分析是一致的,所以,它是1.2G.也就是这个时候随着负荷变重,CPU 满负荷运行。如下图所示.

root@(none):/sys/kernel/debug/clk# cat clk_summary
   clock                         enable_cnt  prepare_cnt        rate   accuracy   phase
----------------------------------------------------------------------------------------
 osc48m                                   0            0    48000000          0 0
    osc48md4                              0            0    12000000          0 0
       usbohci0_12m                       0            0    12000000          0 0
 pll_periph0div25m                        0            0    25000000          0 0
    ephy_25m                              0            0    25000000          0 0
 hosc                                    11           11    24000000          0 0
    csi_master0                           0            0    24000000          0 0
    sdmmc0_mod                            0            0      800000          0 0
    dcxo_out                              0            0    24000000          0 0
    spwm                                  0            0    24000000          0 0
    cpurapbs2                             0            0    24000000          0 0
    cpurcpus                              1            1    24000000          0 0
       cpurahbs                           1            1    24000000          0 0
          cpurapbs1                       2            2    24000000          0 0
             cpurpio                      1            1    24000000          0 0
             stwi                         1            1    24000000          0 0
    csi_master1                           0            0    24000000          0 0
    mipi_host0                            1            1    24000000          0 0
    usbphy0                               1            1    24000000          0 0
    ths                                   1            1    24000000          0 0
    gpadc                                 1            1    24000000          0 0
    spi2                                  0            0    24000000          0 0
    spi1                                  0            0    24000000          0 0
    sdmmc2_rst                            0            0    24000000          0 0
    sdmmc2_bus                            0            0    24000000          0 0
    sdmmc2_mod                            0            0    24000000          0 0
    sdmmc1_rst                            0            0    24000000          0 0
    sdmmc1_bus                            0            0    24000000          0 0
    sdmmc1_mod                            0            0    24000000          0 0
    sdmmc0_rst                            0            0    24000000          0 0
    sdmmc0_bus                            0            0    24000000          0 0
    dbgsys                                0            0    24000000          0 0
    avs                                   0            0    24000000          0 0
    apb2                                  1            1    24000000          0 0
       twi3                               0            0    24000000          0 0
       twi2                               0            0    24000000          0 0
       twi1                               0            0    24000000          0 0
       twi0                               0            0    24000000          0 0
       uart3                              0            0    24000000          0 0
       uart2                              0            0    24000000          0 0
       uart1                              0            0    24000000          0 0
       uart0                              1            1    24000000          0 0
    hoscd2                                0            0    12000000          0 0
    pll_csi                               0            0   336000000          0 0
       csi_top                            0            0   336000000          0 0
    pll_audio                             4            4    22579200          0 0
       codec_1x                           1            1    22579200          0 0
       i2s0                               1            1    22579200          0 0
       codec_4x                           0            0    22579200          0 0
       i2s1                               0            0    22579200          0 0
       pll_audiox2                        0            0    45158400          0 0
       pll_audiox4                        0            0    90316800          0 0
    pll_video0                            2            2    99000000          0 0
       dspo                               0            0    99000000          0 0
       tcon_lcd                           1            1    99000000          0 0
       mipi_dphy0                         1            1    24750000          0 0
       pll_video0x4                       0            0   396000000          0 0
    pll_uni                               2            3   600000000          0 0
       eise                               0            0   600000000          0 0
       isp                                0            0   300000000          0 0
       ve                                 0            1   600000000          0 0
       de                                 1            1   300000000          0 0
       g2d                                1            1   300000000          0 0
       pll_unix2                          0            0  1200000000          0 0
    pll_periph0                           4            4   600000000          0 0
       spi0                               1            1   100000000          0 0
       cpurapbs2_pll                      0            0   600000000          0 0
       cpurcpus_pll                       0            0   600000000          0 0
       nna_rst                            0            0   600000000          0 0
       apb1                               2            2   100000000          0 0
          pio                             1            1   100000000          0 0
          pwm                             1            1   100000000          0 0
       ahb3                               2            2   200000000          0 0
          display_top                     1            1   200000000          0 0
          usbotg                          1            1   200000000          0 0
          usbehci0                        0            0   200000000          0 0
          usbohci0                        0            0   200000000          0 0
          gmac                            0            0   200000000          0 0
       psi                                1            1   200000000          0 0
          ahb2                            0            0   200000000          0 0
          ahb1                            2            2   200000000          0 0
             iommu                        1            1   200000000          0 0
             hstimer                      0            0   200000000          0 0
             dma                          1            1   200000000          0 0
       periph32k                          0            0       32768          0 0
       pll_periph0x2                      0            0  1200000000          0 0
          nna                             0            0  1200000000          0 0
          ce                              0            0   300000000          0 0
    pll_ddr0                              0            0  1584000000          0 0
       sdram                              0            0  1584000000          0 0
       mbus                               0            0   396000000          0 0
    pll_cpu                               0            0  1200000000          0 0
       cpu                                0            0  1200000000          0 0
          cpuapb                          0            0   300000000          0 0
          axi                             0            0   400000000          0 0
 iosc                                     0            0    16000000          0 0
 losc                                     1            1       32768          0 0
    losc_out                              1            1       32768          0 0
    cpurowc                               0            0       32768          0 0
root@(none):/sys/kernel/debug/clk#

当杀掉dd测试, 重新获取clk_summary信息:

root@(none):/sys/kernel/debug/clk# cat clk_summary
   clock                         enable_cnt  prepare_cnt        rate   accuracy   phase
----------------------------------------------------------------------------------------
 osc48m                                   0            0    48000000          0 0
    osc48md4                              0            0    12000000          0 0
       usbohci0_12m                       0            0    12000000          0 0
 pll_periph0div25m                        0            0    25000000          0 0
    ephy_25m                              0            0    25000000          0 0
 hosc                                    11           11    24000000          0 0
    csi_master0                           0            0    24000000          0 0
    sdmmc0_mod                            0            0      800000          0 0
    dcxo_out                              0            0    24000000          0 0
    spwm                                  0            0    24000000          0 0
    cpurapbs2                             0            0    24000000          0 0
    cpurcpus                              1            1    24000000          0 0
       cpurahbs                           1            1    24000000          0 0
          cpurapbs1                       2            2    24000000          0 0
             cpurpio                      1            1    24000000          0 0
             stwi                         1            1    24000000          0 0
    csi_master1                           0            0    24000000          0 0
    mipi_host0                            1            1    24000000          0 0
    usbphy0                               1            1    24000000          0 0
    ths                                   1            1    24000000          0 0
    gpadc                                 1            1    24000000          0 0
    spi2                                  0            0    24000000          0 0
    spi1                                  0            0    24000000          0 0
    sdmmc2_rst                            0            0    24000000          0 0
    sdmmc2_bus                            0            0    24000000          0 0
    sdmmc2_mod                            0            0    24000000          0 0
    sdmmc1_rst                            0            0    24000000          0 0
    sdmmc1_bus                            0            0    24000000          0 0
    sdmmc1_mod                            0            0    24000000          0 0
    sdmmc0_rst                            0            0    24000000          0 0
    sdmmc0_bus                            0            0    24000000          0 0
    dbgsys                                0            0    24000000          0 0
    avs                                   0            0    24000000          0 0
    apb2                                  1            1    24000000          0 0
       twi3                               0            0    24000000          0 0
       twi2                               0            0    24000000          0 0
       twi1                               0            0    24000000          0 0
       twi0                               0            0    24000000          0 0
       uart3                              0            0    24000000          0 0
       uart2                              0            0    24000000          0 0
       uart1                              0            0    24000000          0 0
       uart0                              1            1    24000000          0 0
    hoscd2                                0            0    12000000          0 0
    pll_csi                               0            0   336000000          0 0
       csi_top                            0            0   336000000          0 0
    pll_audio                             4            4    22579200          0 0
       codec_1x                           1            1    22579200          0 0
       i2s0                               1            1    22579200          0 0
       codec_4x                           0            0    22579200          0 0
       i2s1                               0            0    22579200          0 0
       pll_audiox2                        0            0    45158400          0 0
       pll_audiox4                        0            0    90316800          0 0
    pll_video0                            2            2    99000000          0 0
       dspo                               0            0    99000000          0 0
       tcon_lcd                           1            1    99000000          0 0
       mipi_dphy0                         1            1    24750000          0 0
       pll_video0x4                       0            0   396000000          0 0
    pll_uni                               2            3   600000000          0 0
       eise                               0            0   600000000          0 0
       isp                                0            0   300000000          0 0
       ve                                 0            1   600000000          0 0
       de                                 1            1   300000000          0 0
       g2d                                1            1   300000000          0 0
       pll_unix2                          0            0  1200000000          0 0
    pll_periph0                           4            4   600000000          0 0
       spi0                               1            1   100000000          0 0
       cpurapbs2_pll                      0            0   600000000          0 0
       cpurcpus_pll                       0            0   600000000          0 0
       nna_rst                            0            0   600000000          0 0
       apb1                               2            2   100000000          0 0
          pio                             1            1   100000000          0 0
          pwm                             1            1   100000000          0 0
       ahb3                               2            2   200000000          0 0
          display_top                     1            1   200000000          0 0
          usbotg                          1            1   200000000          0 0
          usbehci0                        0            0   200000000          0 0
          usbohci0                        0            0   200000000          0 0
          gmac                            0            0   200000000          0 0
       psi                                1            1   200000000          0 0
          ahb2                            0            0   200000000          0 0
          ahb1                            2            2   200000000          0 0
             iommu                        1            1   200000000          0 0
             hstimer                      0            0   200000000          0 0
             dma                          1            1   200000000          0 0
       periph32k                          0            0       32768          0 0
       pll_periph0x2                      0            0  1200000000          0 0
          nna                             0            0  1200000000          0 0
          ce                              0            0   300000000          0 0
    pll_ddr0                              0            0  1584000000          0 0
       sdram                              0            0  1584000000          0 0
       mbus                               0            0   396000000          0 0
    pll_cpu                               0            0   600000000          0 0
       cpu                                0            0   600000000          0 0
          cpuapb                          0            0   150000000          0 0
          axi                             0            0   200000000          0 0
 iosc                                     0            0    16000000          0 0
 losc                                     1            1       32768          0 0
    losc_out                              1            1       32768          0 0
    cpurowc                               0            0       32768          0 0
root@(none):/sys/kernel/debug/clk#

对比后,发现只有PLL_CPU这路PLL发生了调压调频的变化:

所以,以上我们直观的感受了动态调频调压.

关于如何关闭Tina的动态调频调压,可以看这篇博客:

Tina关闭动态调压调频_tugouxp的专栏-CSDN博客

DDR频率获取:

CCMU基地址是0x03001000,PLL_DDR0控制寄存器偏移为0x10,值为0xB8004100(看上一幅图),计算公式是

\\ \mathbf{Freq_{ddr}=24MHz\times N/M_0/M_1=24\times (0x42)/1/1=24\times 66 MHz=1584MHz},这个频率看起来是DDR3.

VE频率的获取:

CCMU基地址是0x03001000,VE Clock控制寄存器偏移为0x690,值为0x81000003

根据寄存器的定义

VE_{freq}=\frac{clocksource}{M}=\frac{clocksource}{4}

其中clocksource选择的是PLL_UNI(2X).(bit [25:24] = 0b01).

所以,要算出VE的工作频率,首先要得到clocksource的工作频率,而VE在V833上最多有4个clock source,根据当前配置,选择的是PLL_UNI(2X)

PLL_UNI的寄存器偏移为:0x0028

PLL_UNI(1X)的计算公式为:

pll\_uni1x_{freq}=24\times N/M_0/M_1/2\ MHz

根据配置信息,N=0x31,M0=M1=0

pll\_uni1x_{freq}=24\times N/M_0/M_1/2\ MHz=24\times 50/1/1/2=600MHz

相应的PLL_UNI(2X)为

\\ pll\_uni2x_{freq}=24\times N/M_0/M_1\ MHz=24\times 50/1/1=1200MHz=1.2G

所以

VE_{freq}=\frac{clocksource}{M}=\frac{clocksource}{4}=\frac{1200M}{4}=300M

所以,VPU在V833项目中跑的频率是300M.

PLL_PERI0频率获取:

PLL_PERI0_1X = 24\times N/M_0/M_1/2

PLL_PERI0_2X = 24\times N/M_0/M_1

参考spec,PLL_PERI0寄存器地址偏移是0x0020

N=50,M0=1,M1=1

所以

PLL_PERI0_1X主频是600M

PLL_PERI0_2X主频是1.2G

PLL_VIDEO频率获取:

计算公式:

PLL_VIDEO_1X=

24 \times N/M/4

PLL_VIDEO_4X=

24 \times N/M

N=33,M=2

所以

PLL_VIDOE_1X=24*33/2/4=99M;

PLL_VIDEO_4X=24*33/2=396M.

PLL_CSI频率获取:

计算公式

PLL_CSI=24*N/M0/M1

N=28,M1=1,M0=2;

PLL_CSI=24*28/2/1 = 336M;

PLL_AUDIO频率获取:

PLL_AUDIO=24*N/M0/M1/P

PLL_AUDIO_4X=24*N/M1/2

PLL_AUDIO_2X=24*N/M1/4

N=43,P=21,M0=2,M1=1;

所以

PLL_AUDIO=24*43/2/1/21 = 24.5714MHZ.

PLL_AUDIO_4X=24*43/1/2=516MHZ.

PLL_AUDIO_2X=24*43/1/4=258MHZ.

NNA时钟统计:

NNA挂在pll_periph0x2时钟源上,寄存器信息如下:

根据bit24~26给出的信息,确认当前使用的是pll_periph0x2 1.2HZ的时钟源.

M=2;

所以,根据计算公式,NNA的时钟速度是

SCLK=\frac{clock\_source}{M} = \frac{1.2G}{2} = 600MHZ

以上所有这些时钟树的主干时钟均在 boot0阶段都已配好。

结束!

猜你喜欢

转载自blog.csdn.net/tugouxp/article/details/117736357