首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
工业控制
» 现场总线的开关量I/O模块设计:操作系统移植与驱动开发
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
现场总线的开关量I/O模块设计:操作系统移植与驱动开发
发短消息
加为好友
forsuccess
当前离线
UID
871057
帖子
6281
精华
0
积分
3141
阅读权限
90
在线时间
282 小时
注册时间
2012-2-21
最后登录
2015-6-23
论坛元老
UID
871057
性别
男
1
#
打印
字体大小:
t
T
forsuccess
发表于 2013-6-10 09:49
|
只看该作者
现场总线的开关量I/O模块设计:操作系统移植与驱动开发
计算机硬件
,
Windows
,
吸引力
,
操作系统
,
嵌入式
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所示:
5.3嵌入式Linux内核的移植
5.3.1嵌入式Linux简介
嵌入式Linux是将日益流行的Linux操作系统进行裁剪、修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式系统的软件和硬件往往只需针对某种特别的应用定制,因此嵌入式操作系统需要量体裁衣,除去冗余,同时尽可能发挥系统的潜力。Linux最初目标是一个通用的操作系统,因此必须对其进行面向嵌入式系统和应用环境的改造,以适应嵌入式系统的特殊要求。
嵌入式Linux系统包括内核和应用程序两部分。内核为应用程序提供一个虚拟的硬件平台,以统一的方式对资源进行访问,并且透明地支持多任务。嵌入式Linux内核可以分为六部分:进程调度,内存管理,文件系统,进程间通信,网络,设备驱动。应用程序负责系统的部分初始化,基本的人机界面,必要的命令等内容。
从Linux2.6内核版本开始了实时性革命。Linux内核本身也已经特别注重了向嵌入式系统的应用,Linux2.6内核已经把uCLinux的大部分并入主流内核功能中,同时加入提高中断性能和调度响应时间的改进,有三个最显著的改进:采用可抢占内核、更加有效的调度算法以及同步性的提高。Linux2.6内核在一定程度上是可抢占的,即当有比正在运行的进程优先级更高的进程就绪时,系统可强行剥夺正在运行进程的CPU,提供给具有更高优先级的进程使用,比Linux2.4内核具备更好的实时响应性(不是所有的内核代码段都可以被抢占)。Linux2.6内核加入了多种微控制器的支持,无MM U的处理器已经整合进了新的内核中,而且在无MM U控制器上仍旧支持多任务处理,但没有内存保护功能。对于WLAN、Bluetooth、GPRS、CDMA和WiFi等最新出现的无线网络协议和设备,Linux2.6内核重建了驱动的体系层次和编程模型,可以方便的适应这些网络设备的变化,而且特别提出了NAPI(NewAPI)等模型提高网络处理效率。
5.3.2嵌入式Linux的优势
嵌入式Linux的开发和研究是操作系统领域中的一个热点,目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux.Linux之所以能在嵌入式系统市场上取得如此辉煌的成果,与其自身的优良特性是分不开的。
(1)开放的源码,丰富的软件资源
Linux是自由的操作系统,它的开放源码使用户获得了最大的自由度。Linux上的软件资源十分丰富,每一种通用程序在Linux上都可以找到。
(2)功能强大的内核,性能高效、稳定,多任务
Linux的内核非常稳定,它的高效和稳定性已经在各个领域,尤其在网络服务器领域,得到了事实的验证。Linux内核小巧灵活,易于裁减,这使得它很适合嵌入式系统的应用。
(3)支持多种体系结构,如X86、ARM、MIPS、PowerPC、SPARC等
目前,Linux已经被移植到数十种硬件平台上,几乎支持所有流行的CPU.
(4)完善的网络通讯、图形、文件管理机制
Linux自产生之日起就与网络密不可分,网络是Linux的强项。另外,Linux还支持多种文件和图形系统。
(5)支持大量的周边硬件设备
Linux上的驱动已经非常丰富了,它们支持各种主流硬件设备和最新硬件技术。
(6)大小、功能都可定制
Linux秉承Unix的优秀设计思想,非常灵活,各部分的可定制性都很强。
(7)良好的开发环境,不断发展的开发工具集
Linux有着非常优秀的完整开发工具链,有十几种集成开发环境,其中很多是免费的,大大降低了开发费用。
(8)软件开发者的广泛支持
Linux的自由精神吸引了成千上万的程序员投入到Linux的开发和测试中来,这使得Linux在短时间内就成为一个功能强大的操作系统。
(9)价格低廉
有效降低产品成本,对成本敏感的嵌入式系统来说至关重要,Linux恰好具有这一特性。
5.3.3嵌入式Linux的移植
在同一个硬件平台上可以嵌入不同的嵌入式操作系统,就好比PC既可以安装Windows又 可以安装Linux一样。同样,有些操作系统经过移植后可以运行在不同的硬件平台上。如果一个系统可以在不同硬件平台上运行,那么这个系统就是可移植的。 使某一个平台的代码运行在其他平台上的。过程叫做移植。
在Linux系统内核代码中有arch目录,其中包含了不同平台(包括i386、 ARM)的代码,arch目录中的代码是为多平台设计并使用的,与体系结构相关的代码都存放在arch//和 include/asm-/目录中,architecture是Linux支持的体系结构的简称。例如,ARM体系结构对应的简称是arm.与这种体系结 构相关的代码都存放在arch/arm/以及include/asm-arm /目录下。嵌入式系统是“硬件可剪裁”的,因此工程师设计的硬件电路会有所不同,从而这些代码可能无法正确运行(比如内核解压的地址不同)。因此,在剪裁 系统内核是必须结合硬件电路对内核代码进行修改移植。
本系统采用Linux2.6.12,Samsung S3C2440已经成为Linux的一个标准支持平台,对内核做简单的修改和配置后,无需任何其他的patch就可以在S3C2440的目标板上运行得很好。
(1)针对内核源码的修改
设置flash分区
内核对flash分区的支持是内核移植成功的一个关键步骤,一共要修改三个文件,分别如下:
指明分区信息
在arch/arm/machs3c2410/devs.c文件中,添加如下内容:
/**************增加的头文件**************/
# include< linux/mtd/partitions.h>
#include < asm/arch/nand.h>
#include < linux/mtd/nand.h>
/**************建立NANDFlash分区表**************/
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
测试测量
软件开发
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议