|
发表于 2014-11-20 17:09:09
24245 浏览 3 回复
关于Uboot初始化时钟的一点疑问
参加了两次迅为精英版的讲座,一次关于系统启动流程,一次关于系统时钟内存初始化的汇编代码。参照着看了Uboot的部分代码,有几点疑问,麻烦解答:
1、在文件 include/configs/itop_4412_android.h中
有代码
#define CONFIG_SMDKC210 1
#if defined(CONFIG_SMDKC220) || defined(CONFIG_EXYNOS4412)
#define CLK_GATE_IP_PERIR_OFFSET 0x08960
#elif defined(CONFIG_SMDKC210)
#define CLK_GATE_IP_PERIR_OFFSET 0x0C960 0x08960
#endif
#if defined(CONFIG_SMDKC220) || defined(CONFIG_EXYNOS4412)
#define MPLL_LOCK_OFFSET 0x10008
#define MPLL_CON0_OFFSET 0x10108
#define MPLL_CON1_OFFSET 0x1010C
#elif defined(CONFIG_SMDKC210)
#define MPLL_LOCK_OFFSET 0x14008 0x10008
#define MPLL_CON0_OFFSET 0x14108 0x10108
#define MPLL_CON1_OFFSET 0x1410C 0x1010C
#endif
这部分偏移地址的定义是错误的。应该是蓝色部分的值。不理解为什么寄存器地址错误,系统时钟初始化仍然正确。MPLL的复位值就是800MHZ,但是ENABLE位应该没有被置1才对。
2、EPLL_PDIV 和 VPLL_PDIV 均设为2.
但EPLL_LOCK_VAL 和 VPLL_LOCK_VAL 的值都大于 3000*2.超出手册规定的最大值。
3、我尝试修改board/samsung/smdkc210/smdk4x12.h中的
#define APLL_MDIV 0x7D
#define APLL_PDIV 0x3
#define APLL_SDIV 0x0
修改之后发现不论做任何修改,再读寄存器中的值仍然是上面设置的值,APLL频率也还是1000MHZ。
4、怀疑是BL2没做修改的缘故,上次讲座的时候我就提到自己做的BL2造成Uboot不能启动。只能用迅为提供的。
BL2的生成工具也是用的是迅为Uboot文件夹里的mkbl2 的bin文件。就是截取前14K加上校验和。
也尝试了加签名,都没法启动。
希望迅为提供BL2的生成工具和步骤,谢谢!
|
|
|
|
|
|
|
|
你的分析很有道理,应该初始化是在BL2中了,具体我会试一下,回头联系! |
|
|
|
|
|
|
|
楼主|
发表于 2014-11-25 13:26:40
您好,关于帖子里的内容您测试了吗?或者您提供BL2的生成方式我自己来测试呢? |
|
|
|
|
|
|
|
发表于 2017-10-11 09:54:25
这段时间一直在代码, APLL 和MPLL的值进行了修改,使用示波器观察 DDR的时钟信号, 始终是400M
无变化,一直不知道是哪里的原因,很可能是BL2的问题, 讯为垃圾 连回复都没有! |
|
|
|
|
|
|
登录或注册
扫一扫关注迅为公众号


|