标题:
现场总线的开关I/O模块设计:操作系统移植与驱动开发
[打印本页]
作者:
forsuccess
时间:
2013-5-27 23:58
标题:
现场总线的开关I/O模块设计:操作系统移植与驱动开发
5.1常用的嵌入式操作系统
当前常见的嵌入式操作系统主要有嵌入式Linux、Windows CE及VxWorks,在各个领域得到广泛应用,具有各自的特性与优势:
①从系统性能比较
Linux是一个成熟而稳定的网络操作系统,为嵌入式操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务、多进程的操作系统,支持广泛的计算机硬件,包括X86 ,Alpha、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部分芯片,可以定制,其系统内核最小只有约134K B,在信息家电、工控等领域有广泛应用。
WinCE是一个软实时系统,具有模块化、结构化和基于Win32应用程序接口和与处理器无关等特点,主要用于对实时性要求不高,但对界面要求较高的领域,在PDA、手机、显示仪表等领域得到非常广泛应用。
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),具有多达1800个功能强大的应用程序接口(API ) ,它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。
②从开发角度比较
Linux程序源码全部公开,任何人可以修改并在GNU通用公共许可证下发行,这样,开发人员可以对操作系统进行定制。同时由于有GPL (General Public License )的控制,大家开发的东西大都相互兼容。Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理(Xwindows )。其强大的语言编译器gcc、g++等也可以很容易得到。目前正在开发的嵌人式系统中,49%的项目选择Linux作为嵌入式操作系统。
就VxWorks与Win CE而言,厂商不但提供了稳定可靠方便的集成开发环境,而且提供了大量针对具体应用的完整解决方案,为具体开发带来极大便捷,但系统开发成本较昂贵。
本论文最终采用嵌入式Linux作为系统开发软件平台。
5.2 BOOTLOADER移植
引导加载程序Bootloader是系统加电后运行的第一段代码。Bootloader就是在操作系统内核或应用程序运行之前的一段程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。Bootloader是依赖于硬件而实现的,特别是在嵌入式系统中。不同的体系结构需求的Bootloader是不同的;除了体系结构,Bootloader还依赖于具体的嵌入式板级设备的配置。
5.2.1 U-Boot简介
U-Boot全称为Universal Bootloader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序。
选择U-Boot的理由:
▶开放源码;
▶支持多种嵌入式操作系统内核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;
▶支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;
▶较高的可靠性和稳定性;高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;
▶丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
▶较为丰富的开发调试文档与强大的网路技术支持;
5.2.2 U-Boot运行过程分析
U-Boot编译后的代码定义一般不超过100 KB,并且这100KB又分为两个阶段来执行。第一阶段的代码在start.s中定义,大小不超过10KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C2440的一些寄存器的初始化和将U-Boot的第二段代码从Flash复制到SDRAM中。第二段的起始地址是在第一段代码中指定的,被复制到SDRAM后,就第一段跳到这个入口地址开始执行剩余部分代码。第二段主要是进行一些BSS段的设置、堆栈的初始化等工作,最后会跳转到main -loop函数中,接收命令并进行命令处理。
5.2.3 U-Boot移植
本系统用到的U-Boot版本为1.3.2.它不仅提供了对ARM-920T内核的支持,而且直接提供了对于S3C2440的板级支持,这使移植工作量相对减少。
(1) U-Boot版本1.3.2,gccversion4.1.2
(2)在Makefile中加入
zq2440_config:u nconfig @$(MKCONFIG ) $(@ :_config=) arm arm920t zq2440 NULL S3C24x0把板子起名为zq2440
(3)建立board/zq2440目录,复制board/smdk2410下的文件到board/zq2440目录,将smdk2410.c更名为zq2440.c.
(4)cp include/configs/smdk2410.h include/configs/zq2440.h
(5 )添加arm-softfloat-linux-gnu-到Makefile的CROSS_COMPILE=
(6)编译 make zq2440_config
make
(7)通过JTAG口将U-Boot烧写到Flash中,就可以从Nand Flash启动了。
Uboot在超级终端下运行结果如图5.1所示:
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0