s5pv210 uboot-2012-10移植(四) 之使系统工作在1000Mhz
来源:互联网 发布:蒋介石发动内战数据 编辑:程序博客网 时间:2024/04/29 16:21
在uboot原来的代码里,有系统时钟的初始化函数,在board/samsung/smdkv210/lowlevel_init.S的system_clock_init函数,我大概看了一下,寄存器不一样,而且是汇编写的,所以我就改成用c语言来实现,在BL1阶段初始化一下,BL2阶段就不用重新初始化了。
1.arch/arm/lib/spl.c +43添加
//SystemClock#define APLL_LOCK (*(volatile unsigned int *)0xE0100000)#define MPLL_LOCK (*(volatile unsigned int *)0xE0100008)#define EPLL_LOCK (*(volatile unsigned int *)0xE0100010)#define VPLL_LOCK (*(volatile unsigned int *)0xE0100020)#define APLL_CON0 (*(volatile unsigned int *)0xE0100100)#define APLL_CON1 (*(volatile unsigned int *)0xE0100104)#define MPLL_CON (*(volatile unsigned int *)0xE0100108)#define EPLL_CON0 (*(volatile unsigned int *)0xE0100110)#define EPLL_CON1 (*(volatile unsigned int *)0xE0100114)#define VPLL_CON (*(volatile unsigned int *)0xE0100120)#define CLK_SRC0 (*(volatile unsigned int *)0xE0100200)#define CLK_DIV0 (*(volatile unsigned int *)0xE0100300)#define SETPLL(mdiv, pdiv, sdiv) ((1<<31)|(mdiv<<16)|(pdiv<<8)|(sdiv<<0))#define APLL_MDIV 250#define APLL_PDIV 6#define APLL_SDIV 1#define APLL_CON0_VAL SETPLL (APLL_MDIV, APLL_PDIV, APLL_SDIV)#define MPLL_MDIV 667#define MPLL_PDIV12#define MPLL_SDIV1#define MPLL_CON_VAL SETPLL (MPLL_MDIV, MPLL_PDIV, MPLL_SDIV)#define PCLK_PSYS_RATIO 1#define HCLK_PSYS_RATIO 4 #define PCLK_DSYS_RATIO 1#define HCLK_DSYS_RATIO 3#define PCLK_MSYS_RATIO 1#define HCLK_MSYS_RATIO 4#define A2M_RATIO 4#define APLL_RATIO 0#define CLK_DIV0_VAL ( (APLL_RATIO<<0)|\ (A2M_RATIO<<4)|\ (HCLK_MSYS_RATIO<<8)|\ (PCLK_MSYS_RATIO<<12)|\ (HCLK_DSYS_RATIO<<16)|\ (PCLK_DSYS_RATIO<<20)|\ (HCLK_PSYS_RATIO<<24)|\ (PCLK_PSYS_RATIO<<28) )
2. arch/arm/lib/spl.c +135添加
void init_SystemClock (void){int i;//CLK_DIV0 = 0;APLL_CON0 = APLL_CON0_VAL;MPLL_CON = MPLL_CON_VAL;CLK_SRC0 = 0x1111;CLK_DIV0 = CLK_DIV0_VAL;//for (i=65535; i>=0; i--);}
3. include/configs/smdkv210.h +178
/*#define CONFIG_SYS_PROMPT"SMDKC100 # "*/#define CONFIG_SYS_PROMPT"SMDKV210 # "
4. include/configs/smdkv210.h +206
/*#define CONFIG_IDENT_STRING" for SMDKC100"*/#define CONFIG_IDENT_STRING" for SMDKV210"
5. arch/arm/lib/spl.c +183
void __weak board_init_f(ulong dummy){__attribute__((noreturn)) void (*uboot)(void);#if 0/* Set the stack pointer. */asm volatile("mov sp, %0\n" : : "r"(CONFIG_SPL_STACK));/* Clear the BSS. */memset(__bss_start, 0, __bss_end__ - __bss_start);/* Set global data pointer. */gd = &gdata;board_init_r(NULL, 0);#endif/*// test #define GPH0CON (*(volatile unsigned int *)0xE0200C00)#define GPH0DAT (*(volatile unsigned int *)0xE0200C04)GPH0CON = (1<<0) | (1<<4) | (1<<8) | (1<<12);GPH0DAT = 10;*/init_SystemClock();uart_init();copy_uboot_to_ram();//printf ("jump to u-boot image\r\n");/* Jump to U-Boot image */uboot = (void *)CONFIG_SYS_TEXT_BASE;(*uboot)();}
6. 好了,make一下,使用命令烧写spl/smdkv210-spl.bin和u-boot.bin到SD卡里,启动,就会看到下面这个画面了。
- s5pv210 uboot-2012-10移植(四) 之使系统工作在1000Mhz
- s5pv210 uboot-2012-10移植(三) 之支持SPL
- s5pv210 uboot-2012-10移植(五) 之支持LAN9220网卡
- s5pv210 uboot-2012-10移植(六) 之支持NandFlash
- s5pv210 uboot-2012-10移植(七) 之支持SD卡
- s5pv210 uboot-2012-10移植(一) 之分析Alex Ling的linaro-2011.10 for mini210
- s5pv210 uboot-2012-10移植(二) 之能够启动进入控制台
- s5pv210 uboot-2012-10移植(八) 之支持SD卡保存环境变量
- s5pv210 uboot-2012-10移植(一) 之分析Alex Ling的linaro-2011.10 for mini210
- S5PV210 uboot-2012-10移植 之支持LAN9220网卡转载与补充
- s5pv210-uboot移植前言
- S5PV210 构建最小linux系统(2)---->Uboot移植
- S5PV210平台下uboot移植
- UBOOT-2012-10在OK6410平台的移植(四)uboot 2012.10 raise: Signal # 8 caught的问题
- 系统移植-uboot移植
- s5pv210 linux3.8.3内核移植之四:使linux内核支持nfs文件系统
- s5pv210移植uboot的网卡驱动
- Tiny210 s5pv210 uboot移植(编译过程)
- 可展开的TextView
- Ribbon1: 在Office菜单中添加项目
- [Android]免费帮你去广告,甚至是破解
- oracle distinct用法
- 三款ActiveX图表控件对比评测 Pro ActiveX、ProEssentials、ChartDirector
- s5pv210 uboot-2012-10移植(四) 之使系统工作在1000Mhz
- Naming Files, Paths, and Namespaces
- 代理模式
- TCP
- 搜索引擎自然排名的生存法则
- 常用命令行工具
- Ubuntu11.10下配置JAVA开发环境(JDK+Eclipse)
- 如何安装MPlayer?
- qemu-kvm就是用了TMD多庫