致远i.mx287开发板u-boot移值(一)前言

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012351051/article/details/86584842

致远i.mx287开发板u-boot移值(一)前言

致远i.mx287开发板u-boot移值(二)start.S分析

致远i.mx287开发板u-boot移值(三)start_armboot函数分析

致远i.mx287开发板u-boot移值(四)main_loop函数

  • 前言: 

       u-boot作为一种常用的用于引导Linux的bootloader,用途是很广泛的,而且其兼容性比较强,针对n多框架的CPU均支持。至于为什么需要bootloader,简单的讲,就是这是复杂系统的必然,单片机说到底还是比较简单的,不管有没有移值小系统,最终也是一个大程序而已。

       正常来讲,u-boot作为bootloader,包含的功能不仅仅是boot功能,还有针对CPU和外围的各种初始化设定,比如SDRAM、以太网接口、串口等,如果需要的话,几乎可以把目标板上所有的外围进行初始化,所以对于一些CPU,比如说常见的S3C24XX,网上的移值教程,最复杂的就是对SDRAM等关键器件的初始化。

    

u-boot针对i.mx28系列的支持

         i.mx28芯片厂家Freescale为了方便工程师使用,官方提供了关键外围器件的初始化代码,分别为:

       power_prep——这部分代码主要负责初始化偏上PMU

       boot_prep——这部分代码主要负责初始化系统时钟及内存;

       linux_prep——这部分代码主要负责Linux内核引导预处理。

       针对i.MX28x系列芯片的Linux发行包提供两种镜像引导启动方式,分别是“Linux内核引导启动”和“U-boot引导启动”。经过bootlets工程编译后的“启动流”分别如图所示:

      所以我们可以知道,飞思卡尔帮助工程师节省了开发时间,我们在移值u-boot的时候,起码不用再去做SDRAM的初始化,要知道SDRAM的初始化是让人很头大的。

       针对u-boot源代码编译后可以得到u-boot文件,该u-boot文件需要经过

Imx-bootlets-src工程进一步编译成imx28_ivt_uboot.sb(用于少写道NAND Flash的文件),前面说的power_prep和boot_prep就在上面的工程里。

       [1]imx-bootlets-src-10.12.01工程简称bootlets工程,是针对i.MX28x芯片设计的引导加载程序,专门负责用户程序执行前的初始化工作,如初始化内存、加载用户程序、初始化PMU等。该程序的初始化工作执行完后将执行跳转指令,将CPU的控制权交给用户程序。

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/86584842