/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所示的选项环境:
按图中所示设置好参数后,点击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所示。
设置好参数后,按确定。给板子上电后,自动启动U-boot。
在ezkit>后键入:“ loadb” ,点击“传送”,“发送文件”,出现如图5的界面:
按上图设置好参数后,点击发送,则出现传送文件的界面,并显示进度。由于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中加入自己的应用程序
笔者用了一个最简单的程序“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’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