技术中心
 
 

嵌入式Linux在Blackfin处理器上的应用

   日期:2006-10-21     作者:管理员    

       1  UcLinux和Blackfin简介
       1. 1  Uclinux简介
  Uclinux是当前广泛应用的一种嵌入式Linux操作系统,是一个完全符合GNU/GPL公约的项目,与UNIX完全兼容,完全开放源码。英文单词中u表示Micro,c表示control,所以Uclinux的意思是“微控制领域的Linux系统”。

  Uclinux针对嵌入式应用的特点,对Linux的内核(所用版本为linux2.6)进行了修改和重新编译,其大小远小于原来。它包含Linux常用的API,保留了原来Linux操作系统具有的高稳定性、强大的网络功能和卓越的文件系统支持功能等优点。

       1. 2  Blackfin简介
  Blackfin系列DSP是ADI公司推出的高性能,低功耗的新一代DSP处理器,融合了Analog Devic

es/Intel的微信号结构(MSA),其应用范围广泛,包括汽车图像系统,宽带无线系统,多媒体消费电子产品,数字视频录像机,安防与监控,机顶盒和视频会议等。

  对下一代的数字通信和消费多媒体应用来说,Blackfin处理器是高度集成的片上系统解决方案。通过将工业标准接口与高性能的信号处理内核相结合,用户可以快速开发出节省成本的解决方案,而无需昂贵的外部组件。

  笔者使用的是BF533,其结构如图1:
  BF533包括一个UART口、一个SPI口、两个串行口(SPORTs)、四个通用定时器(其中三个具有PWM功能)、一个实时时钟、一个看门狗定时器,以及一个并行外设接口。 
 

BF533结构图

       1.3  Blackfin+Uclinux的优越性
  (1) 使用方便
  (2) 支持网络
  (3) 源码开放
  (4) 方便程序开发移植
       系统结构如图2所示。 
 

操作系统在Blackfin上的组织结构

       2  在Blackfin中嵌入Uclinux操作系统  
       2.1  建立开发环境
       要在Blackfin上嵌入Uclinux操作系统,首先应建立相应的开发环境。笔者所用的主机系统和开发平台如下:
      Windows XP与REDHAT 9.0双操作系统
      P4 1.8GHz,512 MB内存
      Blackfin533 EZ-KIT 开发板

  Linux环境下的程序通过GNU的一系列工具完成编译工作,其中包括预处理、编译、汇编和连结4个互相关联的步骤,每一步由相关工具完成。

       (1)GCC:是GNU编译器的前端程序,负责完成预处理和编译过程,生成以.O为后缀的目标文件。
  (2)AS:是GNU编译器的汇编器,负责把后缀为.S的汇编文件编译成以.O为后缀的目标文件。
  (3)LD:是GNU 编译器的连结器,负责把目标文件和库文件连结起来,重定位它们的数据,把所有符合连结起来。
  笔者用的是bfin-gcc-3.4-2005R3.1.tar.gz。
  在REDHAT中打开terminal,将目录转换到工作目录(根目录),键入以下命令:
  tar  –xzf  bfin-gcc-3.4-2005R3.1.tar.gz
在/opt下会出现/uclinux/bfin-elf和/uclinux/bfin-uclinux两个新文件夹,此时Blackfin所用的交叉编译器已建立成功。

  2.2    在EZ-KIT上植入U-BOOT
       从网上下载u-boot_1.1.3.tar.bz2,在terminal下键入:
  bunzip2  u-boot
_1.1.3.tar.bz2
  tar -xzf  u-b







































oot_1.1.3.tar.bz2
此时会出现名为u-boot_1.1.3的文件夹,将当前目录转为此文件夹下,键入以下命令:
    make  clean
    make  mrproper
    make  ezkit_533_config
  make
以上步骤完成后,会出现以下文件:
   u-boot:这是elf文件,可以用它生成其它格式的文件。
   u-boot.bin:这是二进制文件,可以用来升级u-boot。
在terminal下键入:
/opt/UcLinux/bfin-uclinux/bfin-uclinux-objcopy  –I  binary  –O  ihex  u-boot.bin  u-boot.hex
此时在u-boot文件夹下生成u-boot.hex。
    将主机系统转换为Windows XP下,打开VDSP++开发软件,点开TOOL下的flash
programmer,打开如图3所示的选项环境: 
 

u-boot的载入环境


按图中所示设置好参数后,点击load file即可。

  2.3    编译Uclinux
  将主机系统转为REDHAT9.0,打开terminal,当前目录应为Uclinux所在目录,输入以下命令:
 export  PATH=/opt/uclinux/bfin-elf/bin: /opt/uclinux/bfin-uclinux/
  bin:$PATH
  make  menuconfig
  此时出现选择参数界面,包括厂商,器件型号等,选好参数后继续。过一段时间后,将出现两个模块选择介面,这里不更改任何选项,直接选择exit。

  在terminal中键入:make ,开始编译Uclinux,这个过程大概需要几分钟左右,当编译成功后,在uclinux文件夹下的image文件夹中将生成名为linux的文件。

  2.4    嵌入Uclinux
       将主机系统转为Windows XP系统。
       将ezkit板和主机用串口连接起来,打开hyperterminal,选COM1,确定后进入设置参数界面,如图4所示。 
 

hyperterminal参数选择界面

设置好参数后,按确定。给板子上电后,自动启动U-boot。
       在ezkit>后键入:“ loadb”  ,点击“传送”,“发送文件”,出现如图5的界面: 
 

嵌入式Linux在Blackfin处理器上的应用如图

       按上图设置好参数后,点击发送,则出现传送文件的界面,并显示进度。由于linux文件有5.1M,而BF533 ezkit没有以太网接口,只能用串口进行传输,速度较慢,这个过程约1小时。为了缩短传输时间,笔者在Linux系统下将linux文件进行压缩,压缩后的文件大约1M左右,这样整个传输时间将缩短为10多分钟。
  压缩的指令为:
  /tools/mkimage –A blackfin –O linux –T kernel –C gzip –a 0x1000 –n “uclinux kernel Image”  –d  linux.bin.gz  uImage
这条指令将生成名为uImage的压缩文件。
       当传输完成后,在ezkit>后输入:
  bootelf  0x01000000(未经压缩)
  bootm   0x01000000 (压缩)
  此时将启动Uclinux,如果启动成功,将出现welcome画面。
  到此,Uclinux已成功的嵌入到BF533 ezkit中。

       3  在UcLinux中加入自己的应用程序
  笔者用了一个最简单的程序








































220;hello.c”来介绍如何在嵌入式操作系统中加入自己的程序。
       (1)在/uclinux-dist/user/下建立一个新的文件夹shello,将源程序放到里面。
  (2)修改/uclinux-dist/user/Makefile。加入:
  dir_$(CONFIG_USER_SHELLO_HELLO)+=hello
  (3)修改/uclinux-dist/config/configure.help。加入:
  CONFIG_USER_SHELLO_HELLO
     This is my program
       这里需要注意一点:第二行的开头字母“T”离第一行的开头字母“C”两个字母的距离,同时每行不要超过70个字母。
  (5) 修改/uclinux-dist/config/config.in。加入:
  bool ‘hello̵
7;CONFIG_USER_SHELLO_HELLO
  (6)在/uclinux-dist/user/shello/中加入makfile文件,此文件内容如下:
  EXEC=hello
  OBJS=hello.o
  All:$(EXEC)
  $(EXEC):$(OBJS)
       $(CC) $(LDFLAGS) –O $ @ $ (OBJS) $ (LDLIBS)
  romfs:
       $(ROMFSINST)  /bin/$ (EXEC)
  clean:
       rm –f $ (EXEC)  *.elf  *.gdb  *.o
   (7)做完以上步骤后,重新编译内核。此时hello应用程序会被加入内核中,注意在选择模块时选中hello。编译结束后,将内核下到板子上,启动Uclinux,在root>后键入hello,会出现“hello,world”。

  4  结语
  嵌入式操作系统是当今最热门的研究课题,本文详细介绍了怎样在Blackfin中嵌入Uclinux以及如何加入自己的应用程序,该系统已广泛应用到我们开发的项目中。
   
参考文献
1 孙天泽,袁文菊,张海峰. 嵌入式设计及Linux驱动开发指南.  北京:电子工业出版社,2005
2 ADI公司. ADSP-BF533 BlackfinTM Processor Hardware Reference
3 Alesssandro Rubini, Jonathan Corbet. LINUX设备驱动程序. 魏永明等译. 第2版. 北京:中国电力出版社. 2002






























 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢