嵌入式Linux之我行 史上最牛最详细的uboot移植,不看别后悔

合集下载

UBOOT移植1

UBOOT移植1

移植u-boot-2011.03到S3C2440(utu2440)方法与步骤###1. 配置和初步编译摘要:在2011年的时候,本人把u-boot-2011.03成功移植到了S3C2440(utu2440开发板)上。

通过这次移植使自己对u-boot有了较深刻的理解并掌握了u-boot 的移植。

对于未移植过u-boot的人来说,可能觉得很神秘,甚至觉得很难。

实际上,从整个移植过程来看,并未想像中那么难。

如果你接触过嵌入式linux的开发,我觉得移植u-boot并不是难事,至少没想象中的难。

reille博客作为技术分享、技术交流的个人博客,把自己移植u-boot-2011.03的过程、遇到的问题及解决方法作为一个系列专题分享出来。

希望对正在移植u-boot的人有用。

本节主要介绍u-boot-2011.03的配置和初步编译。

开发环境:主机:Window XP SP2;linux:VMware7.01+ubuntu9.10;目标板:扬创utu2440-F开发板交叉编译器:arm-linux-gcc4.3.2(一开始用的是编译内核的版本arm-linux-gcc3.4.1,但出现了软浮点问题,于是换成了现在用的版本,当然本人编译内核的时候还是用3.4.1版本)。

1. 下载uboot源码:u-boot-2011.03本来想移植最新版本u-boot-2011.06,但见其还在修改中,故改为移植u-boot-2011.03,其源码可从如下地址中下载:ftp://ftp.denx.de/pub/u-boot/ 2. 裁减和配置2.1 裁减:1). 删除u-boot-2011.03/arch目录下除arm目录外的所有目录;2). 删除u-boot-2011.03/arch/arm/cpu目录下除arm920tmulu外的所有目录;3). 删除u-boot-2011.03/arch/arch/arm/cpu/arm920t目录下除s3c24x0目录外的所有目录,注:文件不要删;4). 删除u-boot-2011.03/arch/arm/include/asm目录下除arch-s3c24x0目录外的所有arch-xxxx目录,注:文件不要删;5). 删除u-boot-2011.03/board目录下除samsung目录外的所有目录;6). 删除u-boot-2011.03/board/samsung目录下除smdk2410目录外的所有目录;7). 删除u-boot-2011.03/include/configs目录下除smdk2410.h文件外的所有头文件。

嵌入式μCLinux系统移植(全文)

嵌入式μCLinux系统移植(全文)

嵌入式μCLinux系统移植XX:1007-9416(20XX)04-0086-01嵌入式Linux系统在开发过程中需要对Linux内核进行重新定制,所以熟悉内核配置、编译和移植是非常重要的。

掌握一定的Linux内核的内容,是对Linux进行手动内核移植前必须要做的。

1 Linux内核移植Linux内核移植,通俗讲马上内核由一种硬件平台移植到另一种硬件平台上运行的方式。

虽然大部分的处理器和硬件平台,嵌入式Linux系统都可以支持,但最好还是以自己定制的硬件板为主,移植工作也可通过硬件平台的变化进行调整。

本文以Linux2.6.32.4版本内核为例,过程是如何将其移植到RM内核S3C2440处理器上,该处理器是Smsung公司出产的。

1.1 内核修改(1)解压内核源码。

加压命令:tr jxvf linux-2.6.32.4.tr.bz2。

(2)修改Mkefile。

Mkefile是贯穿整Linux内核的生命线,并以此完成编译和链接。

具体过程为:内核源码目录――进入一级目录(通过编译工具)――找到Mkefile文件――修改相关变量。

(3)修改目标板输入时钟。

内核源目录――找到文件rch/rm/mch-s3c2440/mch-smdk2440.c并打开(通过编译工具)――找到函数mini2440_mp_io(void)的实现代码:s3c24xx_init_clocks(12000000)。

此代码单位是Hz,是目标板中处理器晶振的频率的意思。

依照目标板实际晶振震荡器的大小进行修改,本文以12MHz晶振为例。

(4)修改MTD分区。

MTD驱动程序在Linux下,其接口分为用户模块和硬件模块两种。

将MTD子系统编译到内核中,是为了访问特定的闪存设备,并在它上面放置文件系统,这包括选择适当的MTD硬件和用户模块。

MTD子系统就目前而言,支持绝大多数的闪存设备,且不断的有更多的驱动程序添加进来,以用于不同的闪存芯片。

Linux系统移植之—uboot移植,你们要的uboot终于来了,堪称精品

Linux系统移植之—uboot移植,你们要的uboot终于来了,堪称精品

Linux系统移植之—uboot移植,你们要的uboot终于来了,堪称精品作为一名过来人,uboot、kernel对每个学linux的来说都有很深的情谊,因为它们是一个系统跑起来的最基础,每个学linux的都会首先接触到。

而它们本身就是一个精美的小系统,里边代码所体现的逻辑、算法以及每个绝妙的C知识点都让你沉醉其中。

uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核。

具体内容如下:1 uboot 的介绍及系统结构1.1 uboot 介绍1.2 获取 uboot1.3 uboot 体系结构1.3.1 uboot 目录结构2 uboot 的启动过程及工作原理2.1 启动模式介绍2.2 阶段 1 介绍2.2.1 定义入口2.2.2 设置异常向量2.2.3 设置 CPU 的模式为 SVC 模式2.2.4 关闭看门狗2.2.5 禁掉所有中断2.2.6 设置以 CPU 的频率2.2.7 设置 CP152.2.8 配置内存区控制寄存器2.2.9 安装 UBOOT 使的栈空间2.2.10 BSS 段清 02.2.11 搬移 Nand Flash 代码2.2.12 进入 C 代码部分2.3 阶段 2 的 C 语言代码部分2.3.1 调用一系列的初始化函数2.3.2 初始化网络设备2.3.3 进入主 UBOOT 命令行2.4 代码搬运3 uboot 的移植过程3.1 环境3.2 步骤3.2.1 修改 Makefile3.2.2 在 board 子目录中建立 crane2410 3.2.3 在 include/configs/中建立配置头文件3.2.4 指定交叉编译工具的路径3.2.5 测试编译能否成功3.2.6 修改 lowlevel_init.S 文件2.9 UBOOT 的 Nand Flash 移植3.2.8 重新编译 uboot3.2.9 把 uboot 烧入 flash4.2 常用命令使用说明4.2.1 askenv(F)在标准输入(stdin)获得环境变量。

u-boot移植心得

u-boot移植心得

几经艰辛,终于基本完成了u-boot在s3c44b0的移植工作,在些记录一下在移植过程中所碰到的困难和解决方法(一些心得),作为日后参考之用,也希望能够帮到其它有需要的人^_^。

1.来由:在我搞完ucos后(本来我是想学uclinux的,不过在对系统一无所知的情况下,还是先学一下ucos比较实际^_^,从中也可以对系统有个清晰的概念),我意识到要搞系统的话一个功能强大的bootloader是必不可少的,而我的板上自带的是armboot(其实我个人觉得应用在ARM上的话armboot已经足够了,毕竟u-boot也是从armboot中发展过来的,纯属个人意见),如果我的板上自带光盘有已经移植好的armboot源代码供我参考的话,我想我也不会花这么多时间去搞u-boot,可恨的是我的光盘上只有armboot.bin这个二进制文件,而没有源文件,没办法,我下定主意自己搞一个,考虑了一番后我选择了u-boot,毕竟参考资料相对比较多,再我学完u-boot后再回头看armboot,简直是一个炉里出的饼,这是后话。

2.准备:说是容易,做起来却挺难。

因为编译u-boot要在linux环境下,而不能在我们平时所熟悉的ads下那么直观。

首先要建立好交叉编译环境,这个交叉编译环境可以自己来做,不过完全没必要,而且难度也挺大,一般是下载人家编译好的工具。

我刚开始在这里就郁闷了很久,现在会了以后觉得原来就是这么简单,在些我把方法说清楚,希望不会再有人为这个问题郁闷了^_^:1)在网上下载一个u-boot源代码,我用的是1.1.2版本的,最新的应该是1.1.4的吧,其实差不多,那就像我那样下载一个1.1.2版本的吧。

把源文件解压,这个应该不用说了吧,学过linux的人应该会,不会的话我想你继续做下去也困难,那就先装个linux用下吧(我用的是RedHat的,哦对了,编译程序是需要gcc 编译器的,所以安装方式一定要选择工作站哦^_^)。

ARM的嵌入式Linux移植体验

ARM的嵌入式Linux移植体验

ARM的嵌入式Linux移植体验之BootLoader1BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序。

通过BootLoader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。

因此,在嵌入式世界里建立一个通用的 BootLoader 几乎是不可能的。

尽管如此,我们仍然可以对BootLo ader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。

BootLoader 的实现依赖于CPU的体系结构,因此大多数 BootLoader 都分为stage1 和stage2 两大部分。

依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在 stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。

而stage2 则通常用C 语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。

BootLoader 的 stage1 通常包括以下步骤:·硬件设备初始化;·为加载Boot Loader的stage2准备 RAM 空间;·拷贝Boot Loader的stage2 到RAM空间中;·设置好堆栈;·跳转到 stage2 的 C 入口点。

Boot Loader的stage2通常包括以下步骤:·初始化本阶段要使用到的硬件设备;·检测系统内存映射(memory map);·将kernel 映像和根文件系统映像从flash上读到 RAM 空间中;·为内核设置启动参数;·调用内核。

本系统中的BootLoader参照韩国mizi公司的vivi进行修改。

1.开发环境我们购买了武汉创维特信息技术有限公司开发的具有自主知识产权的应用于嵌入式软件开发的集成软、硬件开发平台ADT(ARM Development Tools)它为基于ARM 核的嵌入式应用提供了一整套完备的开发方案,包括程序编辑、工程管理和设置、程序编译、程序调试等。

uuboot 移植流程

uuboot 移植流程

uuboot 移植流程U-Boot 移植流程介绍U-Boot是一个开源的引导加载程序,常用于嵌入式系统中。

移植U-Boot可以将其适配到不同的硬件平台上,以满足特定需求。

本文将详细说明U-Boot移植的流程。

准备工作1.硬件选型:根据项目需求,选择适合的硬件平台。

2.获取源代码:从U-Boot官方网站或仓库下载最新版本的源代码。

3.安装交叉编译工具链:根据目标硬件平台的指令集架构,选择合适的交叉编译工具链,并进行安装。

4.了解目标硬件平台:熟悉目标硬件平台的架构、引导方式、存储器布局等相关信息。

移植流程1.配置编译环境:设置交叉编译工具链的环境变量,以确保正确编译U-Boot源代码。

2.配置U-Boot:修改U-Boot源代码中的配置文件,根据目标硬件平台的特性和需求进行相应配置。

–配置目标硬件平台的处理器类型、存储器布局等基本信息。

–配置启动方式,如通过网络(TFTP)或存储介质(SD卡、NAND Flash)等进行启动。

–配置启动流程,如引导加载程序的加载顺序、启动脚本等。

3.添加适配代码:根据目标硬件平台的需求,编写适配代码,包括引导加载程序和设备驱动等。

–引导加载程序:为目标硬件平台选择合适的程序入口点,配置启动参数,加载适配的设备驱动等。

–设备驱动:根据目标硬件平台的外设,编写相应的设备驱动代码,以支持外设的初始化和操作。

4.编译U-Boot:使用交叉编译工具链,编译修改后的U-Boot源代码。

–执行make clean清除之前的编译结果。

–执行make命令编译U-Boot源代码。

5.烧录和运行:将编译生成的U-Boot镜像烧录到目标硬件平台,并进行测试。

–根据目标硬件平台的烧录方式(串口、JTAG等),将U-Boot镜像烧录到目标设备。

–启动目标设备,观察U-Boot的启动信息是否正常输出,检查设备驱动是否正常加载。

6.调试和优化:根据实际情况,进行U-Boot的调试和性能优化。

–使用调试工具进行调试,如调试器、串口打印信息等。

(精)嵌入式Linux的U-boot系统启动过程.doc

(精)嵌入式Linux的U-boot系统启动过程.doc

嵌入式Linux的U-boot系统启动过程本章基于Intel公司的pxa270芯片分析U-Boot的工作机制,介绍了嵌入式Linux交叉开发工具ELDK(Embedded Linux Development Kit),说明配置安装U-Boot到特定主板、交叉编译调试Linux的方法,分析了U-Boot的构架。

目录[隐藏]∙ 1 BootLoad启动方式o 1.1 网络启动方式o 1.2 2.磁盘启动方式o 1.3 3.Flash启动方式∙ 2 U-Boot介绍o 2.1 U-Boot功能介绍o 2.2 U-Boot安装o 2.3 U-Boot命令介绍o 2.4 U-Boot环境变量o 2.5 U-Boot脚本o 2.6 U-Boot单独应用程序o 2.7 位图支持∙ 3 2 ELDK工具介绍o 3.1 下载与编译o 3.2 建立开发系统o 3.3 编译安装Linux内核o 3.4 启动嵌入式Linuxo 3.5 Flash文件系统o 3.6 根文件系统的设计与编译o 3.7 覆盖层文件系统o 3.8 调试▪ 3.8.1 (1)U-Boot的调试▪ 3.8.2 (2)Linux内核调试▪ 3.8.3 (3)远程调试应用程序BootLoad启动方式Bootloader的主要功能是引导操作系统启动,开放源代码的BootLoader种类很多,常用的BootLoader的功能说明如表1所示。

表1 常用BootLoader的功能说明网络启动方式这种方式开发板不需要配置较大的存储介质,跟无盘工作站有点类似。

但是使用这种启动方式之前,需要把Bootloader安装到板上的EPROM或者Flash中。

Bootloader通过以太网接口远程下载Linux内核映像或者文件系统。

第4章介绍的交叉开发环境就是以网络启动方式建立的。

这种方式对于嵌入式系统开发来说非常重要。

使用这种方式也有前提条件,就是目标板有串口、以太网接口或者其他连接方式。

uboot2009移植

uboot2009移植

嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)(2009-11-27 10:46)分类:Bootloader移植篇嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。

一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。

如有错误之处,谢请指正。

共享资源,欢迎转载:一、移植环境主机:VMWare--Fedora 9开发板:Mini2440--64MB Nand,Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2009.08.tar.bz2二、移植步骤本次移植的功能特点包括:支持Nand Flash读写支持从Nor/Nand Flash启动支持CS8900或者DM9000网卡支持Yaffs文件系统支持USB下载(还未实现)1.了解u-boot主要的目录结构和启动流程,如下图。

u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。

各个部分的流程图如下:2. 建立自己的开发板项目并测试编译。

目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。

1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440#tar -jxvf u-boot-2009.08.tar.bz2 //解压源码#cd u-boot-2009.08/board/samsung/ //进入目录#mkdir my2440 //创建my2440文件夹2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改#cp -rf smdk2410/* my2440/ //将2410下所有的代码复制到2440下#cd my2440 //进入my2440目录#mv smdk2410.c my2440.c //将my2440下的smdk2410.c改名为my2440.c#cd ../../../ //回到u-boot根目录#cp include/configs/smdk2410.h include/configs/my2440.h//建立2440头文件#gedit board/samsung/my2440/Makefile //修改my2440下Makefile的编译项,如下:COBJS :=my2440.o flash.o //因在my2440下我们将smdk2410.c改名为my2440.c3)修改u-boot跟目录下的Makefile文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。

一为总结经验,二希望能给想入门嵌入式Linux 的朋友提供方便。

如有错误之处,谢请指正。

•共享资源,欢迎转载:一、移植环境•主机:VMWare--Fedora 9•开发板:Mini2440--64MB Nand,Kernel:2.6.30.4•编译器:arm-linux-gcc-4.3.2.tgz•u-boot:u-boot-2009.08.tar.bz2二、移植步骤本次移植的功能特点包括:•支持Nand Flash读写•支持从Nor/Nand Flash启动•支持CS8900或者DM9000网卡•支持Yaffs文件系统•支持USB下载(还未实现)1.了解u-boot主要的目录结构和启动流程,如下图。

u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。

各个部分的流程图如下:2. 建立自己的开发板项目并测试编译。

目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM 处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。

1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440#tar -jxvf u-boot-2009.08.tar.bz2 //解压源码#cd u-boot-2009.08/board/samsung/ //进入目录#mkdir my2440 //创建my2440文件夹2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改#cp -rf smdk2410/* my2440/ //将2410下所有的代码复制到2440下3)修改u-boot跟目录下的Makefile文件。

查找到smdk2410_config的地方,在他下面按照smdk2410_config的格式建立my2440_config的编译选项,另外还要指定交叉编译器4)测试编译新建的my2440开发板项目到此为止,u-boot对自己的my2440开发板还没有任何用处,以上的移植只是搭建了一个my2440开发板u-boot的框架,要使其功能实现,还要根据my2440开发板的具体资源情况来对u-boot源码进行修改。

3. 根据u-boot启动流程图的步骤来分析或者修改添加u-boot源码,使之适合my2440开发板(注:修改或添加的地方都用红色表示)。

1)my2440开发板u-boot的stage1入口点分析。

一般在嵌入式系统软件开发中,在所有源码文件编译完成之后,链接器要读取一个链接分配文件,在该文件中定义了程序的入口点,代码段、数据段等分配情况等。

那么我们的my2440开发板u-boot的这个链接文件就是cpu/arm920t/u-boot.lds,打开该文件部分代码如下:知道了程序的入口点是_start,那么我们就打开my2440开发板u-boot第一个要运行的程序cpu/arm920t/start.S(即u-boot 的stage1部分),查找到_start的位置如下:从这个汇编代码可以看到程序又跳转到start_code处开始执行,那么再查找到start_code处的代码如下:由此可以看到,start_code处才是u-boot启动代码的真正开始处。

以上就是u-boot的stage1入口的过程。

2)my2440开发板u-boot的stage1阶段的硬件设备初始化。

由于在u-boot启动代码处有两行是AT91RM9200DK的LED初始代码,但我们my2440上的LED资源与该开发板的不一致,所以我们要删除或屏蔽该处代码,再加上my2440的LED驱动代码(注:添加my2440 LED功能只是用于表示u-boot运行的状态,给调试带来方便,可将该段代码放到任何你想调试的地方),代码如下:/*bl coloured_LED_init//这两行是AT91RM9200DK开发板的LED初始化,注释掉bl red_LED_on*/#if defined(CONFIG_S3C2440)//区别与其他开发板//根据mini2440原理图可知LED分别由S3C2440的PB5、6、7、8口来控制,以下是PB 端口寄存器基地址(查2440的DataSheet得知)#define GPBCON 0x56000010#define GPBDAT 0x56000014#define GPBUP 0x56000018//以下对寄存器的操作参照S3C2440的DataSheet进行操作ldr r0, =GPBUPldr r1, =0x7FF //即:二进制11111111111,关闭PB口上拉str r1, [r0]ldr r0, =GPBCON //配置PB5、6、7、8为输出口,对应PBCON寄存器的第10-17位 ldr r1, =0x154FD //即:二进制010101010011111101str r1, [r0]ldr r0, =GPBDATldr r1, =0x1C0 //即:二进制111000000,PB5设为低电平,6、7、8为高电平str r1, [r0]#endif//此段代码使u-boot启动后,点亮开发板上的LED1,LED2、LED3、LED4不亮在include/configs/my2440.h头文件中添加CONFIG_S3C2440宏#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */#define CONFIG_S3C2440 1/* in a SAMSUNG S3C2440 SoC */现在编译u-boot,在根目录下会生成一个u-boot.bin文件。

然后我们利用mini2440原有的supervivi把u-boot.bin下载到RAM中运行测试(注意:我们使用supervivi进行下载时已经对CPU、RAM进行了初始化,所以我们在u-boot中要屏蔽掉对CPU、RAM的初始化),如下:/*#ifndef CONFIG_SKIP_LOWLEVEL_INIT //在start.S文件中屏蔽u-boot对CPU、RAM的初始化bl cpu_init_crit#endif*/#make my2440_config#make下载运行后可以看到开发板上的LED灯第一了亮了,其他三个熄灭,测试结果符合上面的要求。

终端运行结果如下:3)在u-boot中添加对S3C2440一些寄存器的支持、添加中断禁止部分和时钟设置部分。

由于2410和2440的寄存器及地址大部分是一致的,所以这里就直接在2410的基础上再加上对2440的支持即可,代码如下:# endif# if defined(CONFIG_S3C2440)//添加s3c2440的中断禁止部分ldr r1, =0x7fff //根据2440芯片手册,INTSUBMSK寄存器有15位可用ldr r0, =INTSUBMSKstr r1, [r0]# endif# if defined(CONFIG_S3C2440) //添加s3c2440的时钟部分#define MPLLCON 0x4C000004 //系统主频配置寄存器基地址#define UPLLCON 0x4C000008 //USB时钟频率配置寄存器基地址ldr r0, =CLKDIVN //设置分频系数FCLK:HCLK:PCLK = 1:4:8mov r1, #5str r1, [r0]ldr r0, =MPLLCON //设置系统主频为405MHzldr r1, =0x7F021 //这个值参考芯片手册“PLL VALUE SELECTION TABLE”部分str r1, [r0]ldr r0, =UPLLCON //设置USB时钟频率为48MHzldr r1, =0x38022 //这个值参考芯片手册“PLL VALUE SELECTION TABLE”部分str r1, [r0]#else //其他开发板的时钟部分,这里就不用管了,我们现在是做2440的/* FCLK:HCLK:PCLK = 1:2:4 *//* default FCLK is 120 MHz !*/ldr r0,=CLKDIVNmov r1, #3str r1,[r0]# endifS3C2440的时钟部分除了在start.S中添加外,还要分别在board/samsung/my2440/my2440.c和cpu/arm920t/s3c24x0/speed.c中修改或添加部分代码,如下:#if defined(CONFIG_S3C2440)if(pllreg == MPLL){ //参考S3C2440芯片手册上的公式:PLL=(2 * m * Fin)/(p * 2s)return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s));}#endifreturn((CONFIG_SYS_CLK_FREQ * m)/(p << s));}/* return HCLK frequency */ulong get_HCLK(void){S3C24X0_CLOCK_POWER *const clk_power = S3C24X0_GetBase_CLOCK_POWER();#if defined(CONFIG_S3C2440)return(get_FCLK()/4);#endifreturn((clk_power->CLKDIVN & 0x2)? get_FCLK()/2 : get_FCLK());}好了!修改完毕后我们再重新编译u-boot,然后再下载到RAM中运行测试。

结果终端有输出信息并且出现类似Shell的命令行,这说明这一部分移植完成。

示意图如下:4)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上Nor Flash的支持)。

通常,在嵌入式bootloader中,有两种方式来引导启动内核:从Nor Flash启动和从Nand Flash启动。

相关文档
最新文档