Other Parts Discussed in Thread:AM5718
Hi Ti,
我想把AM5718的主频由1GHZ,改成1.5GHZ,按照software-dl.ti.com/…/How_to_Guides_Linux_Porting_Guide_AM571x_AM570x_Speed_Grades.html文档
现dpll_mpu_ck是对,而dpll_mpu_2_ck由1000000000变小了,变成了750000000,具体参见下图,
liu Qingfu:
我的HW_DATA.C里面的mpu_dpll_params_1_5ghz结构体设置如下:
,
liu Qingfu:
我CPU外接主频是20MHZ,若设置M=300,N=3,M2=1,M3=1,则BOOT起不来,移植在读MMC1,请问
mpu_dpll_params_1_5ghz结构体该如何设置?
,
Shine:
我CPU外接主频是20MHZ,若设置M=300,N=3,M2=1,M3=1,则BOOT起不来,移植在读MMC1,请问
mpu_dpll_params_1_5ghz结构体该如何设置?
,
Shine:
我的HW_DATA.C里面的mpu_dpll_params_1_5ghz结构体设置如下:
,
liu Qingfu:
BOOT启动不起来,一直在读MMC1
,
liu Qingfu:
Hi Shine,
谢谢您的耐心回答,有两个问题还望指教:
(1):CM_CLKSEL_DPLL_MPU[22] DCC_EN此位在UBOOT哪里可以设置,还是要单独修改cloclk-common.c下的do_setup_dpll函数?
(2):您提的M1是在哪里设置,dpll_params没有M1,M1是指哪个?
,
Shine:
liu Qingfu 说:BOOT启动不起来,一直在读MMC1
,
Shine:
(1) DCC_EN这一位不会影响主频,因为Fdpll时少了个x2, 但是在计算clk_m2的时候少了个/2,正好抵消。(2) 写错了,是M2。
,
liu Qingfu:
Hi Shine,因为系统起不来,所以不知道主频是多少,但若把M2和M3设置成-1,即M2=M3=-1,则启动起来了,此时DPLL_MPU_CK是1500000000,而DPLL_MPU_M2_CK确是750000000,MPU_DCLK_DIV也是750000000。正常1GHZ频率设置时,M=500,N=9,M2=1,M3=1,DPLL_MPU_CK、DPLL_MPU_M2_CK和MPU_DCLK_DIV均是1000000000,系统也可正常启动;
,
Shine:
启动后,用omapconf 看一下CM_DIV_M2_DPLL_MPU,CM_CLKSEL_DPLL_MPU寄存器的值是否配置正确?
,
liu Qingfu:
Hi Shine,
我们的debian系统是自己搭建的,请问omapconf怎么移植,有相关的文档吗?
,
Shine:
抱歉,我们只支持基于 Arago, Yocto的Process SDK linux。您可以到 beagleboard community社区咨询一下。
elinux.org/BeagleBoardDebian
beagleboard.org/discuss,
liu Qingfu:
好的,谢谢了,shine!
,
liu Qingfu:
Hi Shine,
发现了以下问题:
1:把时钟设置成1.2GHZ,系统可以正常运行,但长时间运行12小时候系统宕机,此时M2=240,N=3,M2=M3=1;
2:把时钟设置成1.3GHZ,系统可以正常运行,但运行30分钟后系统宕机,此时M2=260,N=3,M2=M3=1;
3:把时钟设置成1.4GHZ,系统启动内核后卡死,此时M2=280,N=3,M2=M3=1;
4:把时钟设置成1.5GHZ,系统BOOT启动即刻失败,一直在读MMC1,此时M2=300,N=3,M2=M3=1;
通过内部的函数,读取CM_SLKSEL_DPLL_MPU和CM_DIV_M2_DPLL_MPU,寄存器正确,同时DCC_EN=1,DPLL_BYP_CLKSEL=1,不知道为何,烦请帮忙分析一下,谢谢了!
,
liu Qingfu:
Hi Shine,
发现了以下问题:1:把时钟设置成1.2GHZ,系统可以正常运行,但长时间运行12小时候系统宕机,此时M2=240,N=3,M2=M3=1;
2:把时钟设置成1.3GHZ,系统可以正常运行,但运行30分钟后系统宕机,此时M2=260,N=3,M2=M3=1;
3:把时钟设置成1.4GHZ,系统启动内核后卡死,此时M2=280,N=3,M2=M3=1;
4:把时钟设置成1.5GHZ,系统BOOT启动即刻失败,一直在读MMC1,此时M2=300,N=3,M2=M3=1;
通过内部的函数,读取CM_SLKSEL_DPLL_MPU和CM_DIV_M2_DPLL_MPU,寄存器正确,同时DCC_EN=1,DPLL_BYP_CLKSEL=1,不知道为何,烦请帮忙分析一下,谢谢了!
,
Shine:
请问每块板子都有这个问题吗?程序可以在EVM板上有问题吗?
,
liu Qingfu:
Hi Shine,
每个板都这样,采用的事飞凌的核心板也一样。
,
liu Qingfu:
Hi Shine,
每个板都这样,采用飞凌的核心板也一样。,
Shine:
为了运行在1.5GHz,请检查一下下面3个方面:
•Operating voltage will be higher
•AVS e-fuse settings must be observed
•ABB e-fuse settings must be observed这些配置大多数在 board.c文件里,例如:
.mpu.value[OPP_NOM] = VDD_MPU_DRA7_NOM,.mpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_MPU_NOM,.mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,.mpu.addr = TPS659038_REG_ADDR_SMPS12,.mpu.pmic = &tps659038,.mpu.abb_tx_done_mask = OMAP_ABB_MPU_TXDONE_MASK,
请尝试做下面的修改。
1. 把下面这句加到defconfig:
CONFIG_DRA7_MPU_OPP_HIGH=y
2. board.c修改下面这些语句:
#if defined(CONFIG_DRA7_MPU_OPP_HIGH)
.mpu.value[OPP_HIGH] = VDD_MPU_DRA7_HIGH,.mpu.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_MPU_HIGH,
#else
.mpu.value[OPP_NOM] = VDD_MPU_DRA7_NOM,
.mpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_MPU_NOM,#endif
mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,.mpu.addr = TPS659038_REG_ADDR_SMPS12,.mpu.pmic = &tps659038,.mpu.abb_tx_done_mask = OMAP_ABB_MPU_TXDONE_MASK,
3. Perhaps use a similar #if statement for your dpll changes.
4. The results should be checked by pausing the boot in u-boot and running a couple of DSS scripts in CCS:
git.ti.com/…/am57xx-avs-abb-decode.dss
git.ti.com/…/am57xx-ctt.dss
Each of these will create a file on the desktop with the resulting data that was scraped from the target via jtag. Those will allow us to verify if we have things right with respect to voltages, clocks, ABB, etc.
5. Please check the MPU voltage listed for OPP_HIGH in the resulting text file and measure your VDD_MPU rail to see if it matches.
,
liu Qingfu:
Hi Shine,
谢谢解答,发现VDD_MPU_DDR7_HIGH在U-BOOT程序里面没有定义,人为设置为1250,但发现1.5GHZ,UBOOT启动不成功,
,
liu Qingfu:
Hi Shine,
查看了简板的数据手册,感觉MPU好像设置不了OPP_HIGH电压,
,
Shine:
建议在arch/arm/mach-omap2/clocks-common.c 文件中加入#define DEBUG 1语句看看和voltage相关的打印信息。scale_vcores()这个函数里的1250是不是被e-fused AVS registers优化时重写了?