u-boot移植(三)让u-boot在开发板上跑起来
来源:互联网 发布:迅雷赚钱宝软件 编辑:程序博客网 时间:2024/06/05 21:03
1、 分析u-boot的u-boot.lds可知u-boot先从start.O开使链接
a) 进入cpu/arm920t/start.S
修改1:添加时钟寄存器在146行
146 # define MPLLCON 0x4c000004
147 # define UPLLCON 0x4c000008
修改2:
160 # if defined(CONFIG_S3C2410)
161 ldr r1, =0x3ff
162 ldr r0, =INTSUBMSK
163 str r1, [r0]
注:如下表所示,复位时寄存器已设置为0Xffff屏蔽了所有中断源,此段程序只图个心安,可以不要,可以删除本段,也可以改0x3ff为0x7ff
修改3:修改168时钟分频比,设置主时钟和USB时钟MPLLCON,UPLLCON寄存器
168 ldr r0, =CLKDIVN
169 mov r1, #5
170 str r1, [r0]
171
172 mrc p15,0,r1,c1,c0,0
173 orr r1,r1,#0xc0000000
174 mcr p15,0,r1,c1,c0,0
175
176 ldr r0, =MPLLCON
177 mov r1,#0x7f<<12
178 add r1,r1,#0x21
179 str r1,[r0]
180
181 ldr r0, =MPLLCON
182 mov r1,#0x38<<12
183 add r1,r1,#0x22
184 str r1,[r0]
185
186 #endif /* CONFIG_S3C2400 || CONFIG_S3C2410 */
b) cpu/arm920t/s3c24x0/speed.c
修改1:如果是MPLL,返回值应该乘以2,在69行添加,
69 if (pllreg == MPLL)
70 return 2 * m * (CONFIG_SYS_CLK_FREQ / (p << s));
修改2:根据CLKDIVN和CAMDIVN寄存器只设置的不同,FCLK,HCLK,PCLK值也不一样,添加如下修改
85 switch ((clk_power->CLKDIVN) & 0x6)
86 {
87 default:
88 case 0:
89 return get_FCLK();
90 case 2:
91 return get_FCLK() / 2;
92 case 4:
93 return ((clk_power->CAMDIVN) & (1 << 9)) ?
94 get_FCLK() / 8 : get_FCLK() / 4;
95 case 6:
96 return ((clk_power->CAMDIVN) & (1 << 8)) ?
97 get_FCLK() / 6 : get_FCLK() / 3;
第100行可以删掉,在/include/s3c24x0.h文件中结构体S3C24X0_CLOCK_POWER添加
129 S3C24X0_REG32 CAMDIVN;
c) board/samsung/mini2440/mini2440.c
修改1:修改40行和,MPLL值
40 #define M_MDIV 0x7f
41 #define M_PDIV 0x2
42 #define M_SDIV 0x1
修改2:修改52行,UPLL值
52 #define U_M_MDIV 0x38
53 #define U_M_PDIV 0x2
54 #define U_M_SDIV 0x2
修改3:第106行,修改如下,此值对应mini2440开发板在linux系统中的机器码,
是uboot向操作系统传递系统参数之一
106 gd->bd->bi_arch_number = MACH_TYPE_MINI2440;
d) cpu/arm920t/s3c24x0/interrupt.c不用修改
e) cpu/arm920t/s3c24x0/timer.c不用修改
f) drivers/rtc/ s3c24x0_rtc.c不用修改
g) drvers/serier/serier_s3c24x0.c不用修改
h) include/asm/mach-types
i) 在include/configs/目录下建立mini2440.h配置文件
cd include/configs/
cp smdk2410.h mini2440.h
修改1:第37行,暂时先不改S3C2410,这样可以使用很多默认值,加快移植
速度
37 #define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
38 #define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
39#define CONFIG_SKIP_LOWLEVEL_INIT /*在内存中运行必须的,如果要烧在flash中则不要*/
修改2:
115 #define CONFIG_SYS_PROMPT "MINI2440 # " /* Monitor Command Prompt*/
编译出错: arm-linux-gcc: zlib.o: ?????????
arm-linux-gcc: unrecognized option `-MQ'
执行arm-linux-gcc –v
显示是交叉工具链是2.95.3版本,此版本早不能用来支持编译u-boot以前编译vivi是设置,忘了改过来了。改成4.3.2编译生成u-boot.bin下载到板子内存中运行
移植第二步基本完成。
- u-boot移植(三)让u-boot在开发板上跑起来
- TX2440 ARM开发板Uboot移植(-、让u-boot从norFlash动起来)
- TX2440 ARM开发板Uboot移植(二、让u-boot从nandFlash动起来)
- U-boot移植(三)
- u-boot移植(三)
- u-boot移植三
- u-boot-2009.08在飞凌OK2440/FL2440上的移植(三)——让u-boot支持DM9000A
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###2. 让u-boot-2011.03跑起来
- U-boot在S3C2440上的移植详解(三)
- U-boot在S3C2440上的移植详解(三)
- U-BOOT移植总结(三)
- u-boot-2013.01.01移植(三)
- <三> u-boot 的移植
- U-BOOT全线移植分析系列之三 U-BOOT在AT91RM9200上的移植
- U-BOOT全线移植分析系列之三 U-BOOT在AT91RM9200上的移植
- U-Boot的移植之(三)实战篇:移植U-Boot到XSBASE270开发板
- U-Boot的移植之(三)实战篇:移植U-Boot到XSBASE270开发板
- U-Boot的移植之(三)实战篇:移植U-Boot到XSBASE270开发板
- 12-25更新:谷歌彩蛋-让搜索结果页面下雪、旋转、倾斜等
- 一起学《Troubleshooting Oracle Performance》吧
- allegro 5教程
- C# 内存管理、优化的方法
- flash 游戏开发工作总结(1)--开发准备:FB的配置
- u-boot移植(三)让u-boot在开发板上跑起来
- AutoJpegTrunk-批量移除jpg文件中的元数据(Metadata)
- u-boot移植(四)添加网络支持
- Logotype Maker-功能强大的免费在线logo设计工具
- WPF 自定义grid spliter的 Style
- u-boot移植(五)添加norflash支持
- static在C语言中得用法(面向过程)
- 基本操作
- NYOJ 401 Coin Game