2024年6月1日发(作者:危问兰)
s5pv210 uboot-2012-10的移植
s5pv210 uboot-2012-10移植(一) 之分析Alex Ling的
linaro-2011.10 for mini210
好久好久前就买了s5pv210的开发板,一直都是东搞搞西搞搞,一点收获也没有,这次下
决心来移植最新的uboot到u-boot-2012.10上,并通过这个博客记录下来以防时间长给忘
了,我的开发板是QT210的。s5pv210的启动分为BL0,BL1,BL2,BL0是出厂的时候
就固化在IROM里的,所以我们的uboot就要实现BL1和BL2,BL1在uboot里叫做
,BL2就是我们很熟悉的了。在移植之前,我们先看下Alex Ling
的linaro-2011.10 for mini210的UBOOT是怎么实现的。这里主要还是分析SPL部分,
是如何生成的现在资料很多,也很复杂,我这个菜鸟也是一知半解的,所以就不
分析了。
1.顶层的Makefile,从中可以知道,我们要想生成就必须配置COFNIG_SPL,
那么依赖什么呢,我们继续
[plain] view plaincopy
1. ALL-$(CONFIG_SPL) += $(obj)spl/
2.
3. all: $(ALL-y)
搜索发现,是进入到uboot顶层目录的spl目录下执行Makefile的
[plain] view plaincopy
1. $(obj)spl/: depend
2. $(MAKE) -C spl all
2.打开spl/Makefile分析,一开始就给我们导出CONFIG_SPL_BUILD
[plain] view plaincopy
1. CONFIG_SPL_BUILD := y
2. export CONFIG_SPL_BUILD
然后分析目标,因为我们的平台是三星的,所以,会有两个目标,一个是不带头信息的
,一个是$(obj)$(BOARD)-。
[plain] view plaincopy
1. ALL-y += $(obj)
2.
3. ifdef CONFIG_SAMSUNG
4. ALL-y += $(obj)$(BOARD)-
5. endif
6.
7. all: $(ALL-y)
搜索$(obj)$(BOARD)-,发现,他是通过一个工具生成带头信息的
[plain] view plaincopy
1. ifdef CONFIG_SAMSUNG
2. $(obj)$(BOARD)-: $(obj)
3. $(TOPDIR)/board/$(BOARDDIR)/tools/mk$(BOARD)
4. $(obj) $(obj)$(BOARD)-
5. endif
好了,Makefile就分析到这里,知道了BL1是如何生成的了。下面里分析代码了。
首先分析arch/arm/cpu/armv7/start.S
[plain] view plaincopy
1. reset:
2. bl save_boot_params
3. /*
4. * set the cpu to SVC32 mode
5. */
6. mrs r0, cpsr
7. bic r0, r0, #0x1f
8. orr r0, r0, #0xd3
9. msr cpsr,r0
10.
11. /* the mask ROM code should have PLL and others stable */
12. #ifndef CONFIG_SKIP_LOWLEVEL_INIT
13. bl cpu_init_crit
14. #endif
15.
16. /* Set stackpointer in internal RAM to call board_init_f */
2024年6月1日发(作者:危问兰)
s5pv210 uboot-2012-10的移植
s5pv210 uboot-2012-10移植(一) 之分析Alex Ling的
linaro-2011.10 for mini210
好久好久前就买了s5pv210的开发板,一直都是东搞搞西搞搞,一点收获也没有,这次下
决心来移植最新的uboot到u-boot-2012.10上,并通过这个博客记录下来以防时间长给忘
了,我的开发板是QT210的。s5pv210的启动分为BL0,BL1,BL2,BL0是出厂的时候
就固化在IROM里的,所以我们的uboot就要实现BL1和BL2,BL1在uboot里叫做
,BL2就是我们很熟悉的了。在移植之前,我们先看下Alex Ling
的linaro-2011.10 for mini210的UBOOT是怎么实现的。这里主要还是分析SPL部分,
是如何生成的现在资料很多,也很复杂,我这个菜鸟也是一知半解的,所以就不
分析了。
1.顶层的Makefile,从中可以知道,我们要想生成就必须配置COFNIG_SPL,
那么依赖什么呢,我们继续
[plain] view plaincopy
1. ALL-$(CONFIG_SPL) += $(obj)spl/
2.
3. all: $(ALL-y)
搜索发现,是进入到uboot顶层目录的spl目录下执行Makefile的
[plain] view plaincopy
1. $(obj)spl/: depend
2. $(MAKE) -C spl all
2.打开spl/Makefile分析,一开始就给我们导出CONFIG_SPL_BUILD
[plain] view plaincopy
1. CONFIG_SPL_BUILD := y
2. export CONFIG_SPL_BUILD
然后分析目标,因为我们的平台是三星的,所以,会有两个目标,一个是不带头信息的
,一个是$(obj)$(BOARD)-。
[plain] view plaincopy
1. ALL-y += $(obj)
2.
3. ifdef CONFIG_SAMSUNG
4. ALL-y += $(obj)$(BOARD)-
5. endif
6.
7. all: $(ALL-y)
搜索$(obj)$(BOARD)-,发现,他是通过一个工具生成带头信息的
[plain] view plaincopy
1. ifdef CONFIG_SAMSUNG
2. $(obj)$(BOARD)-: $(obj)
3. $(TOPDIR)/board/$(BOARDDIR)/tools/mk$(BOARD)
4. $(obj) $(obj)$(BOARD)-
5. endif
好了,Makefile就分析到这里,知道了BL1是如何生成的了。下面里分析代码了。
首先分析arch/arm/cpu/armv7/start.S
[plain] view plaincopy
1. reset:
2. bl save_boot_params
3. /*
4. * set the cpu to SVC32 mode
5. */
6. mrs r0, cpsr
7. bic r0, r0, #0x1f
8. orr r0, r0, #0xd3
9. msr cpsr,r0
10.
11. /* the mask ROM code should have PLL and others stable */
12. #ifndef CONFIG_SKIP_LOWLEVEL_INIT
13. bl cpu_init_crit
14. #endif
15.
16. /* Set stackpointer in internal RAM to call board_init_f */