b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

文件系统转换 Bootloader之uBoot简介(转)(19)

电脑杂谈  发布时间:2018-02-07 22:32:44  来源:网络整理

110 }

111 else

112 {

113 /* FCLK:HCLK:PCLK = 1:4:8 */

114 clk_power->CLKDIVN = S3C2440_CLKDIV;

115

116 /* 修改为异步总线模式 */

117 __asm__( "mrc p15, 0, r1, c1, c0, 0\n" /* read ctrl register */

118 "orr r1, r1, #0xc0000000\n" /* Asynchronous */

119 "mcr p15, 0, r1, c1, c0, 0\n" /* write ctrl register */

120 :::"r1"

121 );

122

123 /* 设置PLL锁定时间 */

124 clk_power->LOCKTIME = 0xFFFFFF;

125

126 /* 配置MPLL */

127 clk_power->MPLLCON = S3C2440_MPLL_400MHZ;

128

129 /* 配置MPLL后,要延时一段时间再配置UPLL */

130 delay (4000);

131

132 /* 配置UPLL */

133 clk_power->UPLLCON = S3C2440_UPLL_48MHZ;

134

135 /* 再延时一会 */

136 delay (8000);

137

138 /* 机器类型ID,这在调用Linux内核时用到,这个值要与内核相对应 */

139 gd->bd->bi_arch_number = MACH_TYPE_S3C2440;

140 }

141

142 /* 启动内核时,参数存放位置。这个值在构造标记列表时用到 */

143 gd->bd->bi_boot_params = 0x30000100;

144

145 icache_enable();

146 dcache_enable();

147

148 return 0;

149 }

150

最后一步:获取系统时钟的函数需要针对S3C2410、S3C2440的不同进行修改。

在后面设置串口波特率时需要获得系统时钟,就是在U-Boot的第二阶

段,lib_arm/board.c中start_armboot函数调用serial_init函数初始化串口时,会调用get_PCLK函数。它在

cpu/arm920t/s3c24x0/speed.c中定义,与它相关的还有get_HCLK、get_PLLCLK等函数。

前面的board_init函数在识别出S3C2410或S3C2440后,设置了机器类型

ID:gd->bd->bi_arch_number,后面的函数可以通过它来分辨是S3C2410还是S3C2440。首先要在程序的开头

增加如下一行,这样才可以使用gd变量:

DECLARE_GLOBAL_DATA_PTR;

S3C2410和S3C2440的MPLL、UPLL计算公式不一样,所以get_PLLCLK函数也需要修改:

56 static ulong get_PLLCLK(int pllreg)

57 {

58 S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();

59 ulong r, m, p, s;

60

61 if (pllreg == MPLL)

62 r = clk_power->MPLLCON;


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-19.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...