U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植

发布者:Xiangsi最新更新时间:2007-09-13 来源: 国外电子元器件关键字:内核  加载  重组  乘法 手机看文章 扫描二维码
随时随地手机看文章

1 引言

Boot Loader(内核引导程序)是在操作系统内核运行之前运行的一段自举程序,用于初始化硬件设备、改变处理器运行模式、重组中断向量和建立内存空间映射图,从而将系统的软硬件带到一个合适的状态或者用户定制的特定状态,以便为最终加载操作系统内核准备好正确的环境[1]。

嵌入式Linux系统常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全称Universal Boot Loader)是当前比较流行的遵循GPL条件的开放源码项目。U-Boot具有源码公开的特点,开发人员可根据自身需要进行裁减;支持多种处理器和嵌入式操作系统内核;具有多种设备驱动源码:支持种引导方式;具有功能强大且成熟、稳定等诸多优点,故在嵌入式系统开发过程中广泛采用。U-Boot严重依赖于底层硬件,不同的CPU或嵌入式板极设备需要不同的U-Boot,因此,在嵌入式系统中建立通用的U-Boot是非常困难的,故U-Boot需针对开发板量身定做。

2 开发平台

2.1 BF533简介

Blackfin系列DSP是ADI公司与Intel联合开发推出的第一款高性能、低功耗第四代定点DSP产品,融合了Analog Devices/Intel公司的微信号结构(MSA)。它将一个32位RISC型指令集和双16位乘法累加(MAC)信号处理功能与通用型微控制器所具有的易用性组合在一起。这种组合使Blackfin处理器能够在信号处理和控制处理应用中发挥最佳的性能。且Blackfin处理器通过将工业标准接口与高性能的信号处理内核相结合在一起,用户可以快速设计出节省成本的解决方案,而且无需昂贵的外部组件。

本开发系统采用BF533,BF533是主频高达600 MHz、峰值处理能力为1.2 GMI/s的高性能Blackfin处理器。BF533内核包含2个16位MAC、2个40位ALU、4个8位视频ALU以及1个40位移位器。另外,BF533还包括1个UART口、1个SPI口、2个串行口(SPORT)、4个通用定时器(其中3个具有PWM功能)、1个实时时钟、看门狗定时器以及1个并行外设接口。外部存储器控制器可与SDRAM、SRAM、Flash和ROM实现无缝连接[2]。

2.2 系统硬件平台简介

本系统的开发板硬件系统如图1所示。

目标板以Blackfin嵌入式处理器为核心,数据地址线复用到SDRAM、Flash、USB、Ethernet,并通过FPGA实现逻辑控制。此外,将UART端口转换为RS232端口引出。其中SDRAM的地址为0x00000000~0x02000000,Flash的地址为0x20000000~0x20300000。

宿主机采用Window和Suse10.0双操作系统,采用串行接口和以太网连接宿主机和目标板,程序先在宿主机上编译,然后下载至目标板上运行,目标板的终端被重定向到串行接口,由宿主机输出。

2.3 开发环境的建立

2.3.1 在宿主机上设置终端

大部分嵌入式系统在宿主机大多都采用kermit或minaicom实现与目标板的通信,本系统采用inicom。minicom是Linux下一个类似于Windows超级终端的友好串口通信程序。在终端输入bash#minicom-s进入minicom设置画面,设置串口波特率、有效数据位、停止位以及奇偶校验位分别为57 600、8 bit、1位停止位以及无奇偶校验位等。

2.3.2安装交叉编译器

交叉编译是在一个架构下编译另外一个架构的目标文件。要从http://blackfin.uclinux.org网站上下载Blackfin ToolChain,然后安装并修改环境变量PATH,使其包含ToolChain的安装目录。

3 U-Boot启动两阶段

U-Boot代码一般分为stage1和stage2两大部分。stage1依赖于cpu体系结构如设备初始化代码,常用汇编语言编写以达到短小精悍,提高系统运行效率的目的。它主要包括cpu/bf533目录下的start.s。stage2一般采用C语言编写实现复杂功能,这样代码则具有更好的可读性和可移植性,主要包括lib blackfin/board.c文件和common/main.c文件中main_loop函数。

stagel从cpu入口函数cpu/bf533/start.s开始,通常包含以下步骤:

(1)基本硬件的初始化,为随后执行kernel准备好基本的硬件环境。包括:屏蔽所有中断,引导装载程序的执行过程中不必执行任何中断,中断屏蔽可通过写cpu的中断屏蔽寄存器或状态寄存器实现;设置cpu的速度和时钟频率,初始化pll;RAM初始化,初始化内存控制器的各个寄存器;初始化UART,向串口打印U-Boot的字符信息;关闭cpu内部指令,数据cache。

(2) 为加载U-Boot的stage2准备RAM空间,通常将stage2置于整个RAM空间的最顶层1 MB空间。

(3)拷贝U-Boot的stage2到RAM。判断是否是Flash运行,如果是就将stage2的代码拷贝到TEXT BASE处。将stage2安排到RAM空间的最顶层1 MB是较推荐的方法。

(4)设置堆栈指针sp为C语言代码执行做好准备。

(5)跳转到stage2的C语言代码入口点。

stage2主要包括lib-blackfin/board.c中board_init_f、board_init_r函数以及common/main.C中main_loop函数。通常包含以下步骤:

(1)初始化此阶段需用的硬件设备,由board_init_f和board_init_r函数实现。

(2)内存映射检测。

(3)加载内核并为内核设置启动参数。

(4)调用内核。

4 U-BOOt的移植

4.1 U-Boot方法与要点

移植U-Boot简便的方法是从U-Boot支持的开发板中选择一个与其目标板接近的开发板进行修改。需修改的是与硬件相关的部分,涉及到两个层面:针对CPU的移植,由于U-Boot_1.1.3支持BF533,故只需做第二层面的移植:针对目标板硬件的移植。在移植前,需仔细阅读U-Boot/readme文件,该文件对目录结构和如何移植作了简要介绍。从移植U-Boot的最小要求、U-Boot能够正常启动的角度出发,选择BF533的STAMP板为模板,相关源代码在/board/stamp目录下,结合U-Boot的启动流程,主要修改文件如下:

(1)与目标板相关的代码部分:在board下创建mybf533目录,无需从头开始,参考与目标板相似的STAMP板在mybf533目录下创建mybf533.c、mybf533.h、flash.c、config.mk、Makefie等文件。需要修改/board/mybf533/config.mk:

TFEXT_BASE用于设置程序编译链接的起始地址即将U-Boot的stage2拷贝到SDRAM的TEXT_BASE处,即SDRAM最顶层一段存储区。修改board/mybf533/Makefile:



(2)与CPU相关的代码部分:U-Boot_1.1.3/epu文件中含有BF533的目录,其中包含start.s、cpu.c、cpu.h、interrupt.c、init_sdram.s等。故不需要建立与cpu相关的文件目录。

(3)与头文件相关的代码:在include/configs创建mybf533.h,参考include/configs/stamp.h,如下:



Flash的修改与具体型号和容量有关,修改过程中参考Flash擦除数据命令、特定寄存器的写入地址以及扇区的大小和位置。

与SDRAM相关设置:




注意:最后一行要用Tab键开头表示命令。其中blackfin表示CPU的种类.bf533是cpu bf533对应的代码目录,mybf533是目标板对应的目录。这样可使用make mybf533_config配置自身的开发板。

其他修改视情况而定。如根据SDRAM大小修改cplb表,根据需要修改堆栈大小。如drivers/cfi_flash.c中flash_init()函数,cpu/bf533/ints.c中init_IRQ()函数等。

修改完毕后就可以采用如以下命令编译U-Boot:bash$>make clean,bash$>make mrproper,bash$>make mybf533_config,bash$>make。

编译完后U-Boot_1.1.3生成U-Boot的二进制文件U-Boot.bin(U-Boot.bin只能用于更新)。执行bash$>bfin-uclinux-objcopy-I binary-Oihex U-Boot.bin,生成可在Windows下首次烧写到Flash的十六进制文件U-Boot.hex。

4.2 U-Boot的烧写

第一次下载U-Boot到目标板或者当U-Boot不能正常启动时。必须通过JTAG或者ADI ICE将U-Boot下载到目标板。在此可将ADI公司的仿真器与Visual DSP++环境相连,通过Visual DSP++,在TOOLS-->Flash Programmer下执行Flash驱动程序M25P64.dxe,选择"Erase all"-->Load Flie烧写U-Boot.hex文件到Flash中。

移植成功后,打开终端minicom复位开发板,若串口能输出正确的启动信息.则表明移植基本成功。启动后,如果在设定的时间内,串口没有接收到按键。U-Boot将自动加载操作系统内核和文件系统。若设定时间内串口接收到按键,则U-Boot停止自动加载,进入命令行,可看到U-Boot的提示符"mybf533>",查看Flash信息,调试或手动加载内核。

生成新的U-Boot.bin文件后。可通过Ethernet或者串口更新U-Boot。因为网络的传输速度远比串口快,故一般选择网络传输。将新生成的U-Boot.bin拷贝到宿主机根目录下的tftpboot目录(前提是已经创建tftp sever),在目标板出现U-Boot提示符后。按任意键进入下载模式:
mybf533>tftp 0x1000000 U-Boot.bin

0x1000000为SDRAM默认的下载地址空间,用于U-Boot的升级、调试。当需要升级或者修改U-Boot,可将新的U-Boot从SDRAM烧写到。Flash,覆盖原来的U-Boot,以减少烧写Flash的次数。在烧写以前最好测试一下所下载的U-Boot能否正常运行:

如果不正确,应重复执行Erase all和Copy命令,直到正确为止。至此,U-Boot移植的步骤已基本完成。

5 结束语

U-Boot是一个功能强大的Boot loader。前期移植工作是嵌入式系统开发的首要环节。但其移植不可避免的存在一些难以预料的问题。嵌入式开发人员应该在了解U-Boot的工作机理、移植条件后,根据目标板和具体情况灵活裁减U-Boot以提高操作系统移植的稳定性,缩短移植周期,降低产品成本。

本文结合U-Boot的运行机理以及U-Boot移植的基本要求,研究了U-Boot在基于BF533的嵌入式系统上的移植。本文的移植是在不改变U-Boot框架前提下,对嵌入式目标板和CPU相关代码进行修改,实现了成功移植且移植后的U-Boot能够在目标板上稳定运行,为后续开发奠定了良好的基础。

关键字:内核  加载  重组  乘法 引用地址:U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植

上一篇:基于ARM Linux的图像采集与蓝牙传输
下一篇:基于μClinux的SoPC应用系统设计详解

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

4412 内核模块传参数
单个参数 应用程序中可以在main的参数传值 头文件在 include/linux/moduleparam.h 内核模块可以通过module_param来传单个参数 module_param(name, type, perm) name:模块参数的名称 type:模块参数的数据类型(支持int long short uint ulong ushort 类型) perm:模块参数的访问权限(S_IRUSR参数表示所有文件所有者可读) 多个参数 传递多个参数module_param_array(name, type, nump, perm) name:模块参数名称 type:模块参数的数据类型(支持i
[单片机]
ATtiny2313 内核介绍
本节从总体上讨论ATtiny2313 AVR 内核的结构。CPU 的主要任务是保证程序的正确执行。因此它必须能够访问存储器、执行运算、控制外设以及处理中断。 结构综述Figure 3. AVR 结构的方框图 为了获得最高的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令( 在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH。 快速访问寄存器文件包括32 个8 位通用工作寄存器,访问时间为一个时钟周期。从而实现了单时钟周期的ALU 操作。在典型的ALU 操作中,两个位于寄存
[单片机]
ATtiny2313 <font color='red'>内核</font>介绍
谷歌计划将移动网络网页加载速度提高一倍
    4月19日消息,据国外媒体报道,作为谷歌的技术总监,艾维那·简恩(Arvind Jain)一直在通过全球的旅馆、办公室、机场休息区等各种途径监控网络接入速度,寻求途径来加快接入网络的速度。简恩的任务是使移动网络的网页加载速度比目前提高一倍。目前,美国移动网络的网页加载速度平均为9.2秒。     作为全球最大的搜索引擎提供商,谷歌力求通过提高移动网络接入速度来推动电子商务和网络广告的发展,这当中有数十亿美元的开发空间,这已成为全公司的目标。当用户等待网页加载时,他们无法购物或浏览广告。对于网络巨头和本地企业而言,这无疑阻碍了他们赢得更多客户。     简恩谈到:“网速和网络业务的成功之间有著明显的联系。”是什么使移动网络连接
[手机便携]
三星本月或重组高管团队 此前因腐败丑闻推迟
    新浪科技讯 北京时间5月9日消息,《韩国先驱报》援引知情人士的话称,三星准备对高管团队进行重组,最快本月进行。   一般来说,三星会在12月份定期对高管进行改组,重新指派,包括指派新的CEO。不过,去年三星的指派工作推迟,因为三星卷入了腐败丑闻,丑闻使得韩国前总统朴槿惠遭到弹劾,三星实际领导人李在镕被捕。   一名三星内部人士告诉《韩国先驱报》:“的确有消息说高管重组不应该再推迟了,因为他们都是集团总体运营的实践者。”   之前有消息称,三星集团主要的子公司三星电子已经通过人力资源部门完成了大部分重组工作。至于指派新的CEO,预计要到8月或者8月之后才能进行,到时李在镕的审判应该已经结束。   关于CEO的
[半导体设计/制造]
STM32H7系列SDMMC1中的IDMA 和 ARM Cortex-M的分散加载
先来一张中文参考手册中的系统架构图,可以看到,STM32H7系列包含两个SDMMC控制器:SDMMC1和SDMMC2。 在芯片手册中的架构图能够更直观地看出来: SDMMC内部集成一个IDMA,H7系列有很多总线主设备,包括DMA1、DMA2、BDMA、MDMA、DMA2D,还包括IDMA和以太网DMA这种专用DMA。 查看系统架构图和关于总线主设备的描述: SDMMC1和SDMMC2相比,和SRAM1、SRAM2都没有构成总线矩阵,只能访问AXI SRAM区域的内存。 所以我们的使用IDMA进行SD卡的访问时,buffer必须放在AXI SRAM上面。 观察SRAM的分配,可以知道AXI SRAM分布在从0
[单片机]
STM32H7系列SDMMC1中的IDMA 和 ARM Cortex-M的分散<font color='red'>加载</font>
Cortex-M3与ARM7TDMI-S内核运算性能比较
自从STM32推出后,我对它很感兴趣,由于它采用了ARM的Cortex-M3内核,所以很想了解一下其性能和ARM7相比究竟如何?很巧的机会知道了EDNCHINA,参加了EDN这次的团购活动,我得到了一块STM32开发板,使得我有机会测试一下这2种内核CPU的性能。 在测试之前先简单测试的2个平台,编译环境和测试方法。 Cortex-M3:ARM公司为要求高性能(1.25 Dhrystone MIPS/MHz)、低成本、低功耗的嵌入式应用专门设计的内核。Cortex-M3内核主打存储器和处理器的尺寸对产品成本影响极大的各种应用市场,是针对这些市场的低成本需求,专门开发设计的微处理器内核。Cortex-M3内核增强了芯片上集成
[单片机]
Cortex-M3与ARM7TDMI-S<font color='red'>内核</font>运算性能比较
纷繁标准呼唤创新算法,可配置内核前景看好
对嵌入式CPU内核市场来说,近年来兴起的可配置(configurable)内核技术,随着采用的客户日益增加,已逐渐受到市场的关注。市场研究机构Semico Research公司的技术长Tony Massimini日前表示,对于需要大量数据运算以及标准不断演进的新兴消费性电子产品来说,可配置内核确实有其优势,并预期此一市场将能够持续成长。 回顾嵌入式内核的发展历程,Tony Massimini指出,在1990年代初期,32位嵌入式控制只是非常小的一块市场,直到手机与游戏机产品的兴起,才让ARM、MIPS公司开始崭露头角。到现在,随着消费性电子市场的增温,嵌入式CPU内核也有许多不同的类型以及不同的设计方法,包括ASSP、高
[嵌入式]
专为高性能计算应用而生,赛昉科技RISC-V 处理器内核问市
赛昉科技有限公司,发布全球性能最高的基于RISC-V的处理器内核 –天枢系列处理器。该系列处理器是商用化基于RISC-V指令集架构的64位超高性能内核,针对性能和频率做了高度的优化,具有非常优异的性能,频率可达3.5GHz@TSMC 7nm,SPECint2006 数值为31.2 @ 3.5GHz,Dhrystone 达到5.6 DMIPS/MHz,专为高性能计算应用市场而设计,可广泛应用于数据中心、PC、移动终端、高性能网络通讯、机器学习等领域。 天枢系列处理器的发布标志着赛昉科技处理器产品取得了跨越式的成功,是迈向高端处理器内核的重要里程碑。 随着人工智能、5G、工业物
[嵌入式]
专为高性能计算应用而生,赛昉科技RISC-V 处理器<font color='red'>内核</font>问市
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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