以smdk2410开发板为基础的uboot学习笔记(1) 概览
2009-06-24 09:00
162 查看
零:目的
在非开发模式下,即启动加载模式下,uboot执行到最后,将linux的参数放在0x30000100为起始的地方,将linux内核放在0x30008000为起始的地址,然后跳转到0x30008000处执行,剩下的就是linux的事了。
一:上电
uboot被烧写到flash中以0x00000000为起始的地方。
开发板硬件决定了上电后,开发板从0x00000000处开始执行程序。
开始的几条指令是与程序编译时确定的地址无关的命令,做了些基本的设置后,将整个uboot代码复制到内存中(以0x33f80000为起始的地方)。然后,通过一条指令:ldr pc , _start_armboot
跳转到c语言代码,正式使用程序编译时确定的地址来执行程序。
二:架构
整个体系中,smdk2410开发板的独立文件有:
/board/smdk2410 文件夹
/include/config/smdk2410.h 文件
对于不同的开发板,类似。
其他的文件则是通用的。
三:编译命令
make smdk2410_config
make
得到我们想要的uboot映像。
四:配置
uboot的配置集中在 /include/config/smdk2410.h 中。
其中主要有两类宏:
一类是选项,前缀为"CONFIG_";
一类是参数,前缀为"CFG_";
五:编译链接
1.首先编译 cpu/$(CPU)/start.S ,对于不同的CPU,还可能编译cpu/$(CPU)下的其他文件。
2.然后,对于开发板相关的每个目录,每个通用目录都使用他们各自的Makefile生成相应的库。
3.将1 2 步生成的 .o .a 文件按照 board/$(BOARDDIR)/config.mk 文件中指定的代码段起始地址 和 board/$(BOARDDIR)/U-BOOT.lds 链接接脚本进行链接。
4.第3步得到的是ELF格式的U-Boot,后面Makefile还会将它转换为二进制格式,S-Record格式。
在非开发模式下,即启动加载模式下,uboot执行到最后,将linux的参数放在0x30000100为起始的地方,将linux内核放在0x30008000为起始的地址,然后跳转到0x30008000处执行,剩下的就是linux的事了。
一:上电
uboot被烧写到flash中以0x00000000为起始的地方。
开发板硬件决定了上电后,开发板从0x00000000处开始执行程序。
开始的几条指令是与程序编译时确定的地址无关的命令,做了些基本的设置后,将整个uboot代码复制到内存中(以0x33f80000为起始的地方)。然后,通过一条指令:ldr pc , _start_armboot
跳转到c语言代码,正式使用程序编译时确定的地址来执行程序。
二:架构
整个体系中,smdk2410开发板的独立文件有:
/board/smdk2410 文件夹
/include/config/smdk2410.h 文件
对于不同的开发板,类似。
其他的文件则是通用的。
三:编译命令
make smdk2410_config
make
得到我们想要的uboot映像。
四:配置
uboot的配置集中在 /include/config/smdk2410.h 中。
其中主要有两类宏:
一类是选项,前缀为"CONFIG_";
一类是参数,前缀为"CFG_";
五:编译链接
1.首先编译 cpu/$(CPU)/start.S ,对于不同的CPU,还可能编译cpu/$(CPU)下的其他文件。
2.然后,对于开发板相关的每个目录,每个通用目录都使用他们各自的Makefile生成相应的库。
3.将1 2 步生成的 .o .a 文件按照 board/$(BOARDDIR)/config.mk 文件中指定的代码段起始地址 和 board/$(BOARDDIR)/U-BOOT.lds 链接接脚本进行链接。
4.第3步得到的是ELF格式的U-Boot,后面Makefile还会将它转换为二进制格式,S-Record格式。
相关文章推荐
- 以smdk2410开发板为基础的uboot学习笔记(1) 概览
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(18)-Nand Flash驱动(FMD)及其简析(1)
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(7)-Serial串口驱动
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(9)-BINFS在Nand上的实现(OS镜像的烧写与加载)
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(1)-NBoot
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(6)-SDHC驱动
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(8)-USB Function驱动
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(14)-移植CS8900A网卡NDIS Miniport驱动
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(4)-LCD驱动
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(15)-CS8900 NDIS Miniport driver简析(1)
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(3)-基于Nor Flash的Eboot
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(2)-基于Nand Flash的Eboot
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(19)-Nand Flash驱动(FMD)及其简析(2)
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(10)-FAT分区在Nand上的实现
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(16)-CS8900 NDIS Miniport driver简析(2)
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(13)-HIVE注册表实现
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(5)-TouchPanel驱动
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(12)-不连续地址的内存配置