uboot移植总结
2014-06-27 21:18
197 查看
几经周折终于完成uboot的移植,下面对uboot的移植过程进行一下总结:
首先uboot是嵌入式开发过程中最常用的bootloader,它完成了硬件的初始化,并引导内核启动。Uboot的目的就是初始化硬件电路,保存某些信息给内核,然后把内核复制到SDRAM中,最终把控制权交给内核。如果我们不需要uboot的一些复杂的命令我们完全可以自己写一段代码来启动内核。
移植linux内核之前我们要先看一下README,了解一下配置项的作用,以及移植过程。
1 uboot的启动过程分为两个阶段,第一阶段主要完成基本的硬件初始化。主要包括这一阶段由cpu/XXX/start.S 以及board/your_board/lowlevelinit.S完成。
1) 设置中断向量表
2) 进入SVC模式
3) 禁止中断
4) 设置时钟(也可以在stage2设置,s3c2410源代码则在stage1和stage2均进行了设置)
5) 内存初始化(由lowlevelinit.S完成,这样便可以使用SDRAM)
6) 设置栈,为调用C函数做准备
7) 复制uboot的代码到SDRAM中(如果从nandflash启动则需要初始化nandfalsh,并编写复制代码的程序,自己写的这段代码必须在前4K中,可以再uboot.lds设置)
8) 对未初始化数据段清零(这些段的定义从链接文件uboot.lds传入,还有一些宏也从某些文件中传入,可以使用grep “宏名” ./ -nr 搜索)
9) 然后是stage1最后执行的语句,跳转到stage2 的入口点。Ldr pc=,_start_armboot
第二阶段则进行更复杂的操作,
1) 首先是lib_arm/board.c,start_armboot在该文件中定义。
2) 然后是CPU,gpio的初始化(初始化RAM,设置tag的存放位置,进一步的时钟初始化,设置输出终端等)。
3) 接着会初始化norfalsh,nandflash,网络接口。(这写是为了完成分区表的建立,实现Flash的读写,网络启动等,这些并不是必须的,可以参考doc中的READMe.XXX,来配置头文件以及如何编写我们自己的初始化函数)
4) 最后调用thekernerl();函数启动内核。
在移植过程中可能会出现很多问题,和错误要多借助网络,还有许多代码我们可以参考内核,或者其它的bootloader,这样可以进一步提高移植效率。
首先uboot是嵌入式开发过程中最常用的bootloader,它完成了硬件的初始化,并引导内核启动。Uboot的目的就是初始化硬件电路,保存某些信息给内核,然后把内核复制到SDRAM中,最终把控制权交给内核。如果我们不需要uboot的一些复杂的命令我们完全可以自己写一段代码来启动内核。
移植linux内核之前我们要先看一下README,了解一下配置项的作用,以及移植过程。
1 uboot的启动过程分为两个阶段,第一阶段主要完成基本的硬件初始化。主要包括这一阶段由cpu/XXX/start.S 以及board/your_board/lowlevelinit.S完成。
1) 设置中断向量表
2) 进入SVC模式
3) 禁止中断
4) 设置时钟(也可以在stage2设置,s3c2410源代码则在stage1和stage2均进行了设置)
5) 内存初始化(由lowlevelinit.S完成,这样便可以使用SDRAM)
6) 设置栈,为调用C函数做准备
7) 复制uboot的代码到SDRAM中(如果从nandflash启动则需要初始化nandfalsh,并编写复制代码的程序,自己写的这段代码必须在前4K中,可以再uboot.lds设置)
8) 对未初始化数据段清零(这些段的定义从链接文件uboot.lds传入,还有一些宏也从某些文件中传入,可以使用grep “宏名” ./ -nr 搜索)
9) 然后是stage1最后执行的语句,跳转到stage2 的入口点。Ldr pc=,_start_armboot
第二阶段则进行更复杂的操作,
1) 首先是lib_arm/board.c,start_armboot在该文件中定义。
2) 然后是CPU,gpio的初始化(初始化RAM,设置tag的存放位置,进一步的时钟初始化,设置输出终端等)。
3) 接着会初始化norfalsh,nandflash,网络接口。(这写是为了完成分区表的建立,实现Flash的读写,网络启动等,这些并不是必须的,可以参考doc中的READMe.XXX,来配置头文件以及如何编写我们自己的初始化函数)
4) 最后调用thekernerl();函数启动内核。
在移植过程中可能会出现很多问题,和错误要多借助网络,还有许多代码我们可以参考内核,或者其它的bootloader,这样可以进一步提高移植效率。
相关文章推荐
- UBOOT在OK210开发板移植知识点总结
- uboot移植与源码分析总结(3)-Serial驱动分析
- uboot移植总结
- uboot移植与源码分析总结(3)-Serial驱动分析
- uboot移植-从uboot官方源码开始移植过程总结
- 对韦东山老师移植最新uboot的总结
- 对韦东山老师移植最新uboot的总结
- 对韦东山老师移植最新uboot的总结
- 对韦东山老师移植最新uboot的总结
- uboot移植总结
- #嵌入式Linux最小系统移植# 对uboot移植和裁剪的一点点个人思考和总结
- uboot移植与源码分析总结(3)-Serial驱动分析
- uboot移植总结
- uboot在mini2440上的移植总结
- uboot移植与源码分析总结(4)-以太网驱动
- uboot移植总结
- uboot移植-从三星官方源码开始移植过程总结
- uboot移植到S3C44B0X开发板的经历
- 将公司系统从SqlServer 2K移植到Oracle 10g中的简要总结
- uboot 在 ARM s3c2410 上移植过程