您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于μClinux的网络构件的设计与实现 正文
基于μClinux的网络构件的设计与实现

基于μClinux的网络构件的设计与实现

点击数:7924 次   录入时间:03-04 12:02:40   整理:http://www.55dianzi.com   嵌入式系统-技术

随着网络技术的发展,在工业监测、控制等各个领域,嵌入式系统将越来越多地支持互联网功能。人们对互联网的嵌入式系统的功能和可靠性都提出了越来越高的要求。同时,随着微电子技术和半导体技术的迅速发展,高档处理器的成本大幅度下降及软件技术的发展,嵌入式操作系统日趋成熟。
  本文对基于32位微处理器和μClinux[1]的嵌入式系统进行了研究,从硬件核心—32位微处理器的选型,其他硬件部分的设计,系统驱动程序的编写,嵌入式操作系统和文件系统的移植,完成了对一个嵌入式系统从计划设计到开发调试的完整过程的研究。
1 网络构件的整体结构设计
  μClinux的网络构件的硬件结构图如图1所示。本系统采用韩国三星公司的S3C44B0X[2]微处理器,外扩一片norflash芯片HY29LV160B、nandflash芯片K9F2808u和SDRAM芯片 HY57V561620,JTAG接口,RS232串口;带有开关量采集模块、模拟量采集模块和以太网通信模块;采用μClinux嵌入式操作系统来进行软件设计。

硬件系统上使用了两种类型的Flash,一种是norflash,另一种是nandflash。norflash适宜连续大容量存储,价格相对便宜;相比较,nandflash随机存储速度快、价格高。所以在本系统中结合两种Flash的优势,将移植的操作系统存放在norflash之中,nandflash则是用来存储应用程序的代码和常量,保证用户的程序在掉电后不丢失。
  该方案设计相对简单,硬件电路中采用韩国三星公司的S3C44BOX微处理器,8 KB Cache、可选的内部SRAM、2通道UART、8通道10 bit ADC、71个通用I/O口、2个可编程32 bit定时器,能够基于芯片设计复杂的系统。其架构满足了μClinux正常运行的基本要求。
2 系统软件设计
  为使该系统具有较好的实时性和稳定性,在μClinux平台上设计系统软件。系统中各个任务在宏观上按照一定的关系并行工作,CPU资源得到充分利用,系统可靠性得到很大的保证,方便组织开发任务。在μClinux平台上,软件设计工作主要包括:Bootloader的移植、μClinux在S3C44B0X上的移植、驱动程序的编写和应用程序的编写。
2.1 Bootloader的移植
  Bootloader是嵌入式系统软件开发的第一个环节,它紧密地将软硬件衔接在一起,对于一个嵌入式设备后续的软件开发至关重要。Blob是Boot Loader Object的缩写,是一款功能强大的Bootloader。MBA44B0是一款基于S3C44B0的开发板。本文将以运行在MBA44B0开发板上的Blob的源代码为基础,再针对自己的开发板进行Blob的移植。Blob的启动流程的文件关系如图2所示。

Blob编译后的代码定义最大为64 KB,并且这64 KB又分成两个阶段来执行。第一阶段的代码在start.s中定义,大小为1 KB,它包括从系统上电后在0x00000000地址开始执行的部分,并运行在Flash中,包括对S3C44B0的一些寄存器的初始化和将Blob第二阶段代码从Flash拷贝到SDRAM中。余下63 KB代码都是第二阶段的代码。其起始文件为Trampoline.s,被复制到SDRAM后,就从第一阶段跳到这个文件开始执行剩余部分代码。这个阶段最大为63 KB,单词trampoline词义为“蹦床”,所以在这个程序中进行一些BSS段设置、堆栈的初始化等工作后,最后跳转到Main.c进入C函数。
2.2 μClinux的移植[3]
  μClinux2.4.x发行包中的内核对S3C44B0X处理器的支持是不完整的,因此,不可能在make config配置选项中选中S3C44B0X目标板后,直接编译它来得到一个很好的支持S3C44B0X开发板的内核映像。这里对μClinux原代码的改写主要是对网卡支持部分和中断部分(这部分时为以后扩展准备的),由于RTL8019AS网卡与NE2000系列的网卡是兼容的,所以可以直接借助μClinuxdriversnetne.c源代码进行改写。
  (1)在Ne.c中函数ne_probe就是网卡的检测函数,如果检测到Ne2000兼容的网卡就是return 0,可以参考一下添加的函数的语法格式,将网卡的基地址、中断号都放到这里面定义:


本文关键字:网络  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术