基于S3C2410A的嵌入式系统的U-Boot移植

发布者:Joyful222Life最新更新时间:2010-01-18 来源: 现代电子技术关键字:ARM  U-Boot  移植  嵌入式系统  引导程序 手机看文章 扫描二维码
随时随地手机看文章

  0 引 言

  ARM嵌入式处理器已被广泛应用于消费电子产品、无线通信、网络通信和工业控制等领域。其中,ARM9的芯片更是以其低价格、低功耗、高性能在手持设备中占据着重要市场。在嵌入式操作系统中,Linux,Vxworks,WinCE三足鼎立,其中Linux由于其开源性、稳定性、安全性、可裁减性更是一支独放。在嵌入式系统中,如何实现在ARM9平台下Linux操作系统的引导工作是嵌入式技术开发的重要环节。

  1 嵌入式系统的软件组成

  1.1 系统的软件组成

  嵌入式的软件系统主要由Bootloader、操作系统、文件系统、应用程序等组成。其中,Bootloader是介于硬件和操作系统之间的一层,其作用就好像PC机中的BIOS。系统加电运行后,由系统自动加载。通过这段程序,可以初始化硬件设备,建立内存空间的映射图,从而将系统的硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好环境。对于一个嵌入式系统,通常BootLoader是依赖于硬件而实现的。对于不同类型的嵌入式芯片、不同的操作系统和外围接口都需要重新移植、修改和编译Bootloader。

  1.2 U-Boot分析

  嵌入式Linux系统中常用的Bootloader引导程序有U-Boot,redboot,blob和vivi等,其中U-Boot遵循GPL条款的开放源码项目,功能最为强大;U-Boot对PowerPC系列处理器支持最丰富,同时还支持MIPS,x86,ARM,Nios,XScale等诸多常用系列的处理器;U-Boot引导程序分为Stage 1和Stage 2两大部分,Stage 1中主要包括设备初始化、中断设置、时钟设置和存储器初始化等工作,并且采用汇编语言实现,而一些通用功能大多采用C语言实现,放在Stage 2中。

  2 U-Boot的启动分析

  Stage 1的代码在CPU/arm920t/start.s中定义,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码系统启动后,从NAND FLASH自动加载到SDRAM中,它包括对S3C2410A中寄存器的初始化和将U-Boot的Stage 2代码从FLASH拷贝到SDRAM。Stage 2的起始地址是在Stage1代码中指定的。被复制到SDRAM后,就从第一阶段跳到这个入口地址,开始执行剩余部分代码。第二阶段主要是对内存的分配,对NAND FLASH以及对外围设备的初始化,其代码在lib-arm/board.C中。启动的流程分析如图1所示。

  (1)跳转到C语言程序之后,首先定义初始化函数表,程序在lib-arm/board.e中,如下所示:

  (2)初始化FLASH设备和显示FLASH设备信息;

  (3)初始化系统内存分配函数;

  (4)如果目标系统拥有NAND设备,则初始化NAND设备;

  (5)初始化显示设备;

  (6)初始化网络设备,填写IP地址、MAC地址等信息;

  (7)开启中断处理;

  (8)进入命令循环,接收用户从串口的命令输入。

  3 U-Boot的移植方法

  本文选用交叉编译环境arm-linux-gcc-2.95.3,选用U-Boot-1.1.4版本作为移植平台。为了使U-Boot支持新的开发板,一种简便的做法是在U-Boot已经支持的开发板中选择一种与目标板接近的,在其基础上进行修改。这里选用的是smdk2410的配置。

  3.1 修改cpu/arm920t/start.S文件

  Start.s是采用汇编语言编写的U-Boot程序入口代码,完成对底层硬件的初始化,其中有一个很重要的功能是从NAND FLASH中把Stage 2阶段的代码复制到SDRAM中。在此阶段,涉及到对NANDFLASH的读操作,在U-Boot中,没有对NANDFLASH读操作的驱动,采用以下方法实现:

  通过调用board/smdk2410/nand_read.C中的nand_read_11函数将Stage 2阶段的代码复制到ram中。

  3.2 修改board/smdk2410目录下文件

  (1)增加对NANDFLASH的读驱动nand_read.c

  (2)在smdk2410.C文件中添加对NANDFLASH初始化的程序

  在此主要是对主板的GPIO的一些设置,并加上对NANDFLASH初始化程序。

  (3)在该目录下的Makefile文件中添加nand_read.C文件的编译

  OBJS:=smdk24 10.o FLASH.o nand_read.o

  3.3 在include文件中设置NAND FLASH硬件参数

  在/linux/mtd/nand_ids.h中设置参数:

  3.4 编译与运行

  配置好以后,进入U-Boot主目录,重新编译U-Boot代码,运行命令:

  (1)查看交叉编译器的版本号

  ARM-linux-gcc-v

  (2)清除生成的连接

  Make distclean

  (3)编译make smdk2410_config

  (4)make CROSS-COMPILE=arm-linux-编译成功后,将生成三个文件:

  u-boot:ELF格式的文件,可以被大多数Debug程序识别。

  u-boot.bin:二进制bin文件,纯碎的U-Boot二进制执行代码,不保存ELF格式和调试信息。这个文件用于烧到用户的开发板中。

  u-boot.srec:Motorola S-Record格式,可以通过串口下载到开发板中。

  将得到的u-boot.bin文件借助于FLASH芯片烧写工具,通过JTAG口下载到目标板后,检查U-Boot能否正常工作。如果能从串口输出正确的启动信息,就表明移植基本成功。

  4 结 语

  目前笔者移植的U-Boot已经能稳定地运行在开发板上。U-Boot引导程序是嵌入式Linux系统软件开发中的一个重要环节。在此通过分析U-Boot的代码结构和启动过程,并针对开发板系统的硬件资源,通过分析与调试,实现了U-Boot的移植,并且能够引导嵌入式Linux内核和文件系统,为今后进一步开发奠定了坚实的基础。

关键字:ARM  U-Boot  移植  嵌入式系统  引导程序 引用地址:基于S3C2410A的嵌入式系统的U-Boot移植

上一篇:微软将丰富的互联用户体验带给数字标牌市场
下一篇:嵌入式操作系统内存管理技术的分析与比较

推荐阅读最新更新时间:2024-05-02 20:59

德仪推出基于ARM的高清音频解码DSP
消费者希望通过价廉物美的高级系统迅速获得远程音乐收集与因特网无线电广播流媒体服务。为了充分满足这一不断增长的需求,德州仪器 (TI) 日前宣布推出第三代 DA830 与 DA828 Aureus™ 数字音频处理器。这一高度集成的双内核 DA8x 产品系列不但将 ARM 应用处理器与音频数字信号处理器 (DSP) 内核进行了完美结合,还支持各种丰富外设,从而以低成本实现了高性能解决方案,能充分满足网络互联式音频/视频接收机 (AVR)、单机家庭影院 (HTIB) 以及小/微型组件系统等消费类产品的需求。由此,设计人员得以帮助消费者在获得无穷无尽音乐的同时,还能以更低的成本享受堪比家庭影院效果的音质。 对 AVR、HTI
[嵌入式]
arm开发经验笔记
前一段时间做了arm的一些开发,主要是编写了arm的启动软件和移植了uCOS-II到arm7。我做事情喜欢深入简 出,及从最简单,最原理的方面先做一个框架,然后在这个框架里面进行补充。我还是一个很喜欢和别人讨论的人,希望有人可以给我提出意见和建议。我的这个心 得很初级,都是一些基本的东西。现在拿出来和大家分享,希望在我毕业之前能给大家留一些纪念。^_^ 由于这些东西发paper实在是没有价值,但是我感觉可以作为arm开发的入门。由于我的水平和经验有限,错误也是难免的。但是如果不拿出来和大家分享, 就算有错误我也发现不了,是么?呵呵。我现试试发连载的第一篇,看看有多少价值,如果大家觉得有价值,我会继续连载的。 前言 这个文
[单片机]
<font color='red'>arm</font>开发经验笔记
取代x86、ARM 第三大CPU架构RISC-V还不够格:至少高性能上不会
目前主要的CPU指令系统中,x86在桌面及数据中心等领域占优,ARM则是移动芯片之王,开放开源的RISC-V发展迅猛,已经成为第三大CPU体系。 由于不受封锁限制,RISC-V这两年也深受中国厂商欢迎,国内的芯片公司也是RISC-V发展的推动力量之一。 本月初阿里平头哥发布全新RISC-V高能效处理器玄铁C908,官方表示,玄铁C908计算能效全球领先,较业界同性能处理器能效提升超20%,可用于智能交互、多媒体终端、AR/VR、无线通讯等领域。 尽管RISC-V受到了普遍欢迎,甚至主流意见也有认为它会取代x86、ARM架构成为主流,不过这个过程要很久,RISC-V的生态系统还要太多补课要完成。 就目前来看,RISC
[嵌入式]
基于ARM的远程无线监控系统的设计与实现
随着计算机、网络、通信技术的发展,以及多媒体视频技术的不断完善,基于网络的第三代远程网络视频监控系统取得了长足的发展。新一代的监控系统以网络为依托,以数字视频的压缩、传输、存储和播放为核心。系统采用嵌入式多任务操作系统、高效的视频压缩芯片和功能强大的嵌入式处理器,将视频压缩和传输处理工作全部内置到芯片上,前端摄像机送来的视频信号数字化后经过压缩、打包等过程变成基本网络协议的视频流,通过网络的传输,视频流发送到接收端。视频接收端可利用软件进行解码,在PC上进行显示和处理。 系统硬件平台 本系统是以PXA270为微处理器的ARM开发平台组成。PXA270是一个32位处理器,可在312MHz、416MHz、520MHz和624MHz
[单片机]
基于<font color='red'>ARM</font>的远程无线监控系统的设计与实现
ARM连接器错误一则
在用RVCT3.1工作编写ARM程序的时候,出现了一个连接错误:Error: L6915E: Library reports error: scatter-load file declares no heap or stack regions and __user_initial_stackheap is not defined.在网上找了一些资料,原因是使用了自定了的scat文件后,编译器没有没有定义Image ZI Limit,默认提供的__user_initial_stackheap()函数会用到这个值,此时有两个解决办法: 1.改写scat文件,定义ZI段,并将*(+ZI)数据放入该段. 2.覆盖系统默认提供 的_
[单片机]
ARM+Win10为何只打雷不下雨
  在微软surface新品发布之前,由于微软宣布和高通合作推出基于 ARM 处理器的 Win10 完全版和系统设备,主打实时互联网络和续航能力更强的PC设备,Windows10全面进入 ARM 生态。很多媒体报道微软将率先推出搭载 ARM 的Windows PC,微软surface新品有可能搭载高通骁龙835。下面就随嵌入式小编一起来了解一下相关内容吧。   然而在微软surface新品发布后,传说中的搭载高通骁龙835的新品依旧不见踪影,而Intel的X86处理器依旧坚挺。那么,为何微软surface新品依旧选择Intel呢?    高通骁龙835并不适合上PC   首先要明确的一点是,高通骁龙835这款处理器是移动芯片
[嵌入式]
基于ARM的MPEG4视频解码器
  1 引 言 本文旨在研究基于ARM微处理器的MPEG-4视频解码技术,主要应用在手持移动设备中。利用嵌入式系统实现MPEG-4视频解码,处理器的选择是关键。在嵌入式系统中常用的RISC处理器是ARM核,主要是因为它具有体积小,功耗低,成本低,性价比高的特点,这对于移动应用领域非常重要。ARM7系列微处理器为低功耗的32位RISC处理器,最适合于对价位和功耗要求较高的消费类应用。本解码器定位于低分辨率和低帧率的应用场合,因此选择在ARM7TDMI核上实现解码功能。要实现更高帧率和分辨率的解码,可将软件直接应用在更高端的处理器上。    2 MPEG-4视频解码算法的优化与实现 MPEG-4标准可以划分为一套子标准,标
[家用电子]
[Linux 底层]bootstrap移植裁剪及编译
bootstrap文件夹内容如下图: 在board/sama5d3_xplained目录下,有官方的默认配置文件 sama5d3_xplainednf_linux_uimage_dt_defconfig 从nandflash启动直接跳转到uimage类型内核阶段 sama5d3_xplainednf_linux_zimage_dt_defconfig 从nandflash启动直接跳转到zimage类型内核阶段 sama5d3_xplainednf_uboot_defconfig 从nandflash启动直接跳转到uboot阶段 sama5d3_xplainedsd_linux_uimage_dt_defconfig 从SD
[单片机]
[Linux 底层]bootstrap<font color='red'>移植</font>裁剪及编译
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved