位置:51电子网 » 技术资料 » D S P

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

发布时间:2008/5/27 0:00:00 访问次数:449

国外电子元器件

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语言代码执行做好准备

国外电子元器件

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语言代码执行做好准备

相关IC型号

热门点击

 

推荐技术资料

业余条件下PCM2702
    PGM2702采用SSOP28封装,引脚小而密,EP3... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!