snifer

(原创)基于balckfin架构下的socket通信-总体设计及原理

0
阅读(24362)

基于balckfin架构下的socket通信-总体设计及原理,进展比较顺利,同学们热情似火啊, 给大家汇报一下成果,今天晚上跟他们一起编程调试了,加油!!!

硬件环境:balckfin嵌入式(ADI),PC机AMD AM2 3000+、硬盘80G、内存512M,蓝牙模块*2。

软件环境:PC机操作系统UCLinux、GCC交叉编译环境、Qtopia。

本次课题采用的处理器是ADI公司的16微处理器。这款处理器具有低功耗、高集成度的特点,该处理器内部集成了ADI公司的微控制器,资源丰富.

内置blackfin MMU,支持ucLinux等操作系统;指令Cache、数据Cache、写缓冲;支持ucLinux调试结构,片上ICE支持JTAG调试方式;内置先进为控制器总线接口AMBA。

2建立交叉编译环境

交叉编译技术的引入为软件的不同平台移植创造了便利条件。其中一种交叉编译技术叫GNU GCC 模式,即通常所讲的Cross GCC 技术,本次课题用到的就是这个模式。GCC 所有源代码是和硬件平台无关的,当然有一些必要的硬件参数是需要给出的,GCC 最终输出的是汇编语言源程序。

      

                             图1 GCC 模式

 嵌入式交叉编译环境模型包括目标板和开发主机。开发主机安装桌面的ucLinux操作系统。在开发主机的ucLinux操作系统上交叉编译目标板的ucLinux引导程序、内核和文件系统,之后可以通过JTAG接口、串口、以及以太网接口下载到目标板上运行。Linux使用GNU的工具,工具包括三个部分:binutils,二进制处理工具;gcc,编译工具;glibc,链接和运行库。这里介绍交叉编译工具安装步骤如下:

(1)从ucLinux官方网站下载交叉编译器。

(2)执行如下命令:

mkdir /usr/local/arm ;

cp arm-linux-gcc-3.3.0.tar.bz /usr/local/arm ;

tar jxf arm-linux-gcc-3.3.0.tar.bz 。

(3)执行vi ~/.bash_profile,加入PATH=/usr/local/arm/3.3.0/bin:$PATH。

(4)执行source ~/.bash_profile,将交叉编译器路径加入到环境变量当中。

3 软件系统

3.1 内核配置

uc—Linux嵌入式操作系统是一个高度优化、代码紧凑的ucLinux嵌入式子集,它保留了ucLinux的大多数优点。与其他常用的嵌入式操作系统如Windows CE、Vxworks相比,它的稳定性和移植性更加良好;它对各种文件系统提供完备支持,以及标准丰富的API;它的网络功能非常优秀,带有一个完整的TCP/IP协议,同时也支持其他许多网络协议。基于ARM—Linux操作系统的应用开发环境一般由目标系统硬件开发板和宿主PC机构成 。通常需在安装有Linux的宿主PC机上安装交叉编译器,以将用户应用程序编译成可运行于AR—Linux下的可执行文件和编译操作系统内核。目标硬件开发板用于运行操作系统和系统应用软件。

课题开始之前,首先要做的是ucLinux内核移植,这是基于ARM开发的第一步,同时也可以让我们了解ucLinux开发环境,掌握ucLinux内核的配置和剪裁,了解ucLinux的启动过程,进一步熟悉交叉编译环境的建立和使用。

3.1.1ucLINUX内核移植

在主机的RedHat Linux操作系统下安装Linux发行包以及交叉编译器arm-linux-gcc。然后对Linux进行配置(make menuconfig),并选择适合的相关配置,配置完成后进行编译生成Linux映像文件zImage,然后通过u-boot的tftp命令将文件下载到目标板并执行。

3.1.2ucLINUX内核源代码的安装

这个实验系统的ucLinux发行文件为ucLinux-jx2410.tra.gz,将该文件复制到/home/cvtech/jx2410目录下,然后解压,生成的新目录下就是进行ucLINUX开发的所有源码。

3.1.3ucLINUX交叉编译环境的建立和使用

当主机系统(运行编译器的系统)和目标系统(产生的程序将在其上运行的系统)不兼容时,该过程就叫做交叉编译。采用交叉编译的另外两个重要是原因是:

  • 当目标系统对其可用的编译工具没有本地设置时;
  • 当主机系统比目标系统要快得多,或者具有多得多的可用资源时。

实验的主机采用x86体系结构的uc Linux系统,目标系统是blackfin处理器。

3.1.3配置和编译uclinux核心

①配置内核:

$cd/home/cvtech/jx2410/uclinux

$make menuconfig

启动配置菜单工具后,选择Load an Alternate Configuration File选项,然后确认(左右箭头移动选择到select,然后键入回车)。该选项将载入jx2410的标准配置文件config-jx2410,此文件保存在/home/cvtech/jx2410/uclinux目录下,此文件不能修改。然后在提示框里键入configblackfin配置文件名,单击OK按钮,回到主菜单,按ESC退出,提示是否保存,选YES保存。

②建立依赖关系

$make dep

③编译:使用$make zImage命令进行编译。  

3.1.4下载ucLinux核心并运行

在编译成功后的linux核心为/home/cvtech/blackfinarch/boot/zImage。通过blackfin的u-boot将该核心下载到SDRAM,另外内核启动过程将加载RAMDISK文件系统,因此需要先将/tftpboot/ramdisk.gz下载到SDRAM,然后才能运行内核。

3.2 通信实现

ucLinux系统是通过提供套接字(socket)来进行网络编程的,网络程序通过socket和其他几个函数的调用,会返回一个通信的文件描述符,可以通过向描述符读\写操作实现网络之间的数据交流。实验中通过使用蓝牙实现PC机与balckfin的无线通信。

本次设计的socket通信程序采用server/client模式,即服务器端的应用程序用于接收客户端的连接请求、接收客户端的信息、处理客户端的计算请求、向客户端发送计算结果以及应答信息等。客户端的应用程序用于申请与服务器的连接、向服务器发送计算请求、处理服务器发回的计算结果和其他信息。整体流程图如下: