当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1 Uclinux和Blackfin简介1. 1 UcLinux简介Uclinux是当前广泛应用的一种嵌入式Linux操作系统,是一个完全符合GNU/GPL公约的项目,与UNIX完全兼容,完全开放源码。英文单词中

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

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

笔者使用的是BF533,其结构如图1:

BF533包括一个UART口、一个SPI口、两个串行口(SPORTs)、四个通用定时器(其中三个具有PWM功能)、一个实时时钟、一个看门狗定时器,以及一个并行外设接口。

 


1.3 Blackfin+Uclinux的优越性

(1) 使用方便

(2) 支持网络

(3) 源码开放

(4) 方便程序开发移植

系统结构如图2所示。

 


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-boot_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

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[!--empirenews.page--]

这条指令将生成名为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以及如何加入自己的应用程序,该系统已广泛应用到我们开发的项目中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

刚入门嵌入式,选入门级RZ/G2L开发板,采用邮票孔形式封装了RZ/G2L核心板。

关键字: 开发板 嵌入式LINUX 嵌入式系统

2019年上映的《复仇者联盟4:终局之战》无疑是漫威和超级英雄粉丝心中的剧痛,该片中最受观众喜爱的钢铁侠为了打败灭霸,一个响指也夺走了自己的生命。影片最后,复联成员们还为钢铁侠举办了一个葬礼,一众英雄出席让人泪奔。钢铁侠...

关键字: 漫威 HELLO OS

来源:百问科技❞Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和...

关键字: CONFIG HELLO MAKEFILE WORLD

  ospf报文   OSPF协议使用一种称之为Hello的报文来建立和维护相邻邻居路由器之间的链接关系。这个报文很简单的,容量很小,仅用来向邻居路由器证明自己的存在,就像人与人之间的打

关键字: OS 路由器 HELLO 数据库

手机钱包是区块链生态的重要一环,Hello团队作为社区领先的开发团队,针对比特股特性开发的SuperONE是基于区块链的数字资产投资管理平台,我们的目标是为用户提供更加安全、更加透明、去中心化的

关键字: 区块链 数字资产 SUPER HELLO

Hellokimi定位是做全球区块链游戏综合服务平台,我们的目标是成为区块链游戏领域领先的开发商和综合服务平台。我们是国内资深的原创游戏开发团队,深耕游戏行业十几年,有较深的游戏技术沉淀和行业资

关键字: 区块链 HELLO 开发者 游戏开发

在今天于上海举办的世界人工智能大会上,微软执行副总裁Harry Shum透露,Hololens 2将于9月发售。 Hololens 2发布于今年2月的MWC 2019大展,定价3500美

关键字: 微软 HOLOLENS HELLO Windows

01 前言 STM32上hello world,说白了就是使用串口向PC上的上位机软件或者串口调试助手发送字符串。 串口的使用方法百度一下就能知道了,简单来说就是下面这样。 uint8_t buff[BUFF_SIZE]...

关键字: STM32 HELLO WORLD BUF

整理自网络,排版:付斌 对嵌入式系统工程师及嵌入式硬件工程师而言,2020年将是振奋人心的一年。随着物联网应用的普及,MCU市场将再次繁荣。因此,市场上对嵌入式系统工程师人才的需求也将出现新高。这些都是底层编程领域中即将...

关键字: 嵌入式 软硬件 BSP 嵌入式LINUX

(文章来源:SSL网站安全) 自从Google宣布chrome68会将所有的HTTP网站标记为不安全,之后我们访问没有HTTP类型网站的网站都会被提示“红色不安全”的提示。随后掀起一阵网

关键字: HELLO 应用程序 数据压缩 浏览器
关闭
关闭