U-Boot-2009-03移植笔记(第二阶段移植准备)
2013-05-29 12:09
295 查看
在U-Boot-2009-03移植笔记(从Nandflash启动二)中,我们移植好了Nandflash的读驱动,并且将U-boot从nandflash中搬运到了sdram,接下来的工作,就是沿着u-boot的执行主线,继续往下修改代码。
测试代码是否正确执行到第二阶段
U-BOOT的启动,分为两个阶段,第一个阶段是在cpu/arm920t/start.S中的汇编代码,主要工作是设置CPU工作模式、关看门狗、禁中断、初始化内存、代码搬运,初始化堆栈,清BSS段,然后跳转到start_armboot函数执行,这个start_armboot在lib_arm/board.c中,我们在这个start_armboot函数的一开始,点亮led1,led2,led3三盏灯。
1、在board/xinna2440下面增加一个led_op.c文件,内容如下:
led_op.c
2、修改board/xinna2440/Makefile增加对led_op.c的编译。
3、修改lib_arm/board.c,在start_armboot函数一开始死循环调用led_on(3)。
4、烧写,运行,发现三盏灯全亮。
找出移植点
我们基于smdk2410的bsp进行移植,那么只要找出s3c2410和s3c2440的不同点以及主板的不同点,然后针对这些不同点进行代码修改,即可完成移植。
S3C2410 vs S3C2440:
1、时钟不同
2、Nandflash控制器不同
3、中断控制器不同
4、主板GPIO链接不同
5、网卡芯片不同。
找出这些不同点,我们一步一步修改代码,直到U-boot正常运行即可。
测试代码是否正确执行到第二阶段
U-BOOT的启动,分为两个阶段,第一个阶段是在cpu/arm920t/start.S中的汇编代码,主要工作是设置CPU工作模式、关看门狗、禁中断、初始化内存、代码搬运,初始化堆栈,清BSS段,然后跳转到start_armboot函数执行,这个start_armboot在lib_arm/board.c中,我们在这个start_armboot函数的一开始,点亮led1,led2,led3三盏灯。
1、在board/xinna2440下面增加一个led_op.c文件,内容如下:
#define GPBCON (*(volatile unsigned long *)0x56000010) #define GPBDAT (*(volatile unsigned long *)0x56000014) int led_on(int index) { if(index == 1) { GPBCON = (1 << 10); GPBDAT = ~((1 << 5)); } else if(index == 2) { GPBCON = (1 << 10) | (1 << 12); GPBDAT = ~((1 << 5) | (1 << 6)); } else if(index == 3) { GPBCON = (1 << 10) | (1 << 12) | (1 << 14); GPBDAT = ~((1 << 5) | (1 << 6) | (1 << 7)); } else { GPBCON = (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16); GPBDAT = ~((1 << 5) | (1 << 6) | (1 << 7) | (1 << 8)); } return 0; }
led_op.c
2、修改board/xinna2440/Makefile增加对led_op.c的编译。
3、修改lib_arm/board.c,在start_armboot函数一开始死循环调用led_on(3)。
4、烧写,运行,发现三盏灯全亮。
找出移植点
我们基于smdk2410的bsp进行移植,那么只要找出s3c2410和s3c2440的不同点以及主板的不同点,然后针对这些不同点进行代码修改,即可完成移植。
S3C2410 vs S3C2440:
1、时钟不同
2、Nandflash控制器不同
3、中断控制器不同
4、主板GPIO链接不同
5、网卡芯片不同。
找出这些不同点,我们一步一步修改代码,直到U-boot正常运行即可。
相关文章推荐
- U-Boot-2009-03移植笔记(第二阶段:时钟!)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(点亮第一展灯)
- U-Boot-2009-03移植笔记(从Nandflash启动一)
- U-Boot-2009-03移植笔记(点亮第一展灯)
- TQ2440 学习笔记—— 31、移植U-Boot【U-Boot 的启动过程第二阶段源码分析】
- U-Boot-2009-03移植笔记(调试篇)
- U-Boot-2009-03移植笔记(目录:持续更新)
- U-Boot-2009-03移植笔记(从Nandflash启动二)
- U-boot-1.1.6-2008R1到vdsp5(bf561)的移植记录(12):第二阶段的程序入口
- uboot移植(六)——uboot启动第二阶段(init_sequence)
- U-boot在开发板上移植过程详解(3)---U-boot实现源码分析(第二阶段)
- U-boot-2009.03移植之十二:第二阶段——支持128M Nandflash
- TQ2440 学习笔记—— 30、移植U-Boot【U-Boot 的启动过程第一阶段源码分析】
- mini2440系统移植篇之u-boot第二阶段C语言
- linux内核学习初笔记(3)u-boot执行第二阶段typedef int (init_fnc_t) (void)解释
- uboot移植(五)——uboot启动的第二阶段(gd和bd)
- u-boot-1.1.6移植到TQ2440笔记——准备工作(1)