当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于μClinux的网络构件的设计与实现

随着网络技术的发展,在工业监测、控制等各个领域,嵌入式系统将越来越多地支持互联网功能。人们对互联网的嵌入式系统的功能和可靠性都提出了越来越高的要求。同时,随着微电子技术和半导体技术的迅速发展,高档处理器的成本大幅度下降及软件技术的发展,嵌入式操作系统日趋成熟。
  本文对基于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,可以参考一下添加的函数的语法格式,将网卡的基地址、中断号都放到这里面定义:[!--empirenews.page--]
  #elif defined(CONFIG_ARCH_S3C44B0)
  static int once = 0;
  if (once)
  return -ENXIO;
  if (base_addr == 0) {
  dev->base_addr = base_addr = ARM_NE2000_BASE;
  dev->irq = ARM_NE2000_IRQ;
  once++;
  }
  其中,ARM_NE2000_BASE和ARM_NE2000_IRQ是在配置内核的时候定义的。
  (2)ne_probe是被Space.c调用的,这里网卡的检测是从./drivers/net/Space.c的ethif_probe函数中实现的,关键代码如下:
  if (probe_list(dev, eisa_probes) == 0)
  return 0;
  eisa_probes                   :在前面定义成全局
  static struct devprobe eisa_probes[] __initdata = {
  #ifdef CONFIG_DE4X5???????????? /* DEC DE425, DE434, DE435 adapters */
  {de4x5_probe, 0},
  #endif
  …………
  {NULL, 0},
  };
  添加的函数是:
    if (probe_list(dev, arm_probes) == 0)
    return 0;
  并定义:
  static struct devprobe arm_probes[] __initdata = {
  #ifdef CONFIG_ARM
  {ne_probe, 0},
    #endif
  {NULL, 0},
  (3)地址偏移的问题
  同样是在ne.c中ne_probe1的代码中。为了更好地说明所修改的地方,首先应该先介绍一下硬件的配置和连接。这里8019在S3C44B0的Bank 5上,工作在跳线模式,所以起始基地址就是0x0a000600。还有一点需要特别注意的是:8019工作在16位模式下,数据线一对一地连接,地址线错开一位,即8019的A0连接S3C44B0的A1……这样,8019的基地址(Reg0的地址)是0x0a000600,Reg1的地址就是0x0a000602……所以地址不是连续增加的,那么对应的驱动程序要做相应的修改。
  #elif defined(CONFIG_ARM)
  #define EI_SHIFT(x) ((x)*2)
   其中EI_SHIFT可以查看到8390.h的定义。
   也有直接访问外部的代码,所以要添加的还有:
  #ifdef CONFIG_ARM
  regd = inb_p(ioaddr + 0x0d*2);
  outb_p(0xff, ioaddr + 0x0d*2);    :函数outb_p和inb_p访问外部IO的函数
  #else
  regd = inb_p(ioaddr + 0x0d);
  outb_p(0xff, ioaddr + 0x0d);
  这样就被解决了地址偏移的问题,这里采用预处理来添加自己的代码,不直接在原有的代码上修改,可以保证代码的完整性和可移植性,也较容易比较和发现问题。
  主程序和μClinux中的系统文件放在同一个程序下,进行编译即可。为了提高执行效率,可以根据实际应用修改μClinux的部分常用代码,甚至剪切掉某些不必要的代码。
  基于μClinux的网络构件的设计方案在硬件上简洁可靠;软件可维护性好,可扩展性好,有利于系统的后续开发,降低了系统设计的复杂性。随着嵌入式产品研究的深入,网络接口芯片的研究也会快速发展,使智能化产品的设计更趋向简单、标准、成熟。可以看出,嵌入式μClinux操作系统与网络将会得到更大的发展和更广阔的应用。

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

李宁官方微博19日发布声明称,近日,网络上出现对于“逐梦行”秀款部分产品的讨论,李宁公司对此高度关注。此次相关产品的设计及造型给大家带来了困惑和疑虑,我们表示诚挚的歉意。本次“逐梦行”秀款产品的设计以“飞行”为主题,从飞...

关键字: 防护 网络

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

据CNMO了解,有韩媒报道称,韩国将在下个月公布下一代网络战略,为6G移动通信的商业化做准备。据悉,战略中除了6G网络的智能化、融合和空间扩展的技术战略外,还将提出公私合营的合作方式。

关键字: 6G 网络 战略

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭