Uboot在s3c2440移植笔记
虚拟机:VMWare - Ubuntu 14.04.1
开发板:s3c2440
编译器:arm-linux-gcc
U-boot:u-boot-2009.08.tar.bz2
一:下载适当的U-boot版本并解压并配置交叉编译工具链
1、在ftp://ftp.denx.de/pub/u-boot/网站上下载u-boot-2009.08.tar.bz2,拷贝至ubuntu下
2、运用test@ubuntu:~/Documents$ tar -jxvf u-boot-2009.08.tar.bz2 解压
二:uboot目录结构说明
Uboot移植思想:
由于本次实验使用了NandFlash启动Uboot,NandFlash传输方式为非总线式访问,在NandFlash上电后自动将4K复制到片内内存SRAM中,然后在将后续的NandFlash的数据拷贝到SDRAM中,故可将Uboot分为两个部分stage1 stage2
stage1 :代码通常放在cpu/xxxx/start.S文件中,用汇编语言写成;
Stage2 :代码通常放在lib_xxxx/board.c文件中,他用C语言写成。
三、U-boot源码分析
==================================stage1阶段===================================
1、由于u-boot官方并没有针对s3c2440的soc的直接可用的源码,故我们选择与之相近的S3c2410的soc作为分析
①分析首要工作是通过分析链接脚本lds文件来查找程序的入口 故在uboot\cpu\arm920t\u-boot.lds中可查看到内存分配结构
② 在链接脚本中我们可以清楚的看到uboot链接的第一个文件是start.S文件 故我们查看uboot\cpu\arm920t\start.S
(1)在start.S文件中 第一步:建立异常向量表
(2)在start.S文件中 第二步:保存各个内存段的入口地址
(3)在start.S文件中 第三步:关看门狗 屏蔽所有中断 设置时钟
(4)在start.S文件中 第四步:跳转至 使能icache 关mmu
(5)在start.S文件中 第五步:跳转 初始化SDRAM (uboot\board\samsung\smdk2410\lowlevel_init.c)
(6)在start.S文件中 第六步:重定位relocate 将flash后4k拷贝到sdram
1、uboot中默认为NORFLASH拷贝至SDRAM (我们需求nandflash 注释此段)