基于嵌入式Linux的风力发电监控系统开发平台的构建

发布者:iota19最新更新时间:2013-03-06 来源: dzsc关键字:Linux  风力发电  监控系统 手机看文章 扫描二维码
随时随地手机看文章
  引言

  为了适应不同的应用场合,同时考虑到计算机系统的灵活性、可伸缩性以及可裁剪性,一种以应用为中心、以计算机技术为基础、软硬件可裁剪的嵌入式操作系统随之诞生。这种嵌入式系统能适用于对功能、可靠性、成本、体积、功耗要求严格的应用系统。而在众多嵌入式操作系统中,Linux以其体积小、可裁减、运行速度快、网络性能优良、源码公开等优点而被广泛采用。特别是2.6内核版本的Linux更是在实时性能方面有了很大的提高,因此在工业控制场合得到了越来越多的重视和应用。

  本文正是在这一背景下,为基于S3C2410的嵌入式平台(扩充了多种外围设备,包括:LCD、A/D、网络芯片等等)构建出一个基于Linux2.6.16内核的嵌入式系统开发平台,以满足风力发电监控系统开发的需求。

  1系统构架

  本系统的硬件平台是以32位高性能嵌入式处理器S3C2410A作为系统的CPU,其工作频率最高为203 MHz,具有强大的处理能力。另外,还扩展有多种外围设备,如:分辨率为640×480的26万色TFT液晶显示屏、串口、USB口、网口、64MB Flash、64MB SDRAM等等。可以充分满足风力发电监控系统开发的需求。

  本硬件平台的软件构架主要分为以下几个部分:BSP层、操作系统层以及应用层,图1所示是其软件构架图。本系统的硬件平台是由嵌入式微处理器及其外围设备所构成的。硬件抽象层(BSP)是存储在硬件平台ROM或Flash上的负责与硬件底层交流的硬件驱动程序,主要负责对系统进行初始化,并将收集的硬件信息传递到接下来运行的操作系统内核中去。操作系统内核通过BSP来管理系统硬件资源,并为上层软件提供进程调度、内存管理、文件系统、设备驱动等服务。应用层主要负责与用户进行交流。


  在完成系统的构架设计以后,就可以针对硬件平台进行具体的构建了,其工作主要包括以下几个部分:BootLoader移植、内核移植以及文件系统的建立等,其中内核移植包括网络设备、LCD和USB等驱动的移植。文中针对本系统的设计给出了相关程序的移植。

  2 BootLoader移植

  BootLoader (引导加载程序)是系统加电后运行的第一段代码。这段小程序用于初始化硬件设备和建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

  目前,较流行的BootLoader主要有U-boot和Vivi等。本设计主要是以S3C2410为控制器的硬件平台,因此可以选用带有网络功能的Vivi作为系统的BootLoader。作为引导程序的Vivi一般分为stage1和stage2两大部分。stage1主要是根据CPU的体系结构进行设备初始化等工作,通常都用短小精悍的汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现更加复杂的功能,且代码会具有更好的可读性和可移植性。为了使Vivi更适合本系统的硬件平台,设计时需要对其进行部分修改。

  (1)修改编译器

  首先要把Vivi中Makefile的有关编译的选项指向安装好的3.4.1版本的交叉编译工具链,将编译所需的Linux文件夹“UNUX-INCLUDE-DIR=”指向交叉编译器所在的文件夹“LINUX-INCLUDE-DIR=/usr/local/arm/3.4.1/include”,并将“CROSS-COMPILE=”项修改为“CROSS-COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-”。[page]

  (2)修改启动参数

  接着根据硬件平台的实际情况要修改Vivi中Flash分块情况。本系统将Flash划分成四个部分:第一部分用来存放系统的Vivi:第二部分用来存放Vivi以及Linux操作系统的启动参数;第三部分用来存放嵌入式Linux操作系统;最后一部分用来存放文件系统。具体的地址及块大小分配如表1所列。


  修改完以上两项就可以对Vivi进行编译了,之后通过JTAG将生成的二进制代码烧写到Flash的第一部分,即完成了Vivi的移植。

  3内核移植

  内核移植和BootLoader移植一样要根据设计的硬件平台来进行。根据本嵌入式系统硬件平台的设计,需修改内核Makefile文件、设置Flash分区、配置与编译内核等,并完成网络设备、LCD以及USB等驱动的移植,下面简单介绍一下针对本硬件平台的相关移植工作。

  (1)内核编译与移植

  在交叉编译内核之前,要先对编译选项进行配置。执行“make menuconfig”指令,进人Syetem Type选项,选择对S3C2410系统板的支持,然后配置File System和Block device,接下来使用“make dep”指令设置依赖关系,之后便可以使用“make zImage”指令进行编译。编译内核交叉编译时间相对较长。最终会生成一个文件zImage,这就是编译成功后的ARM Linux内核文件。将编译好的内核镜像文件写入到Flash中,即完成了内核的移植。

  (2)网络设备移植

  系统中采用CS8900A作为网络芯片,最高支持10 Mb/s的传输率,它使用S3C2410的nGCS3作为片选线,IRQ_EINT9作为外部中断信号线。其驱动移植方法如下:

  1)在linux/driver/net/arm目录下加入芯片的驱动程序文件cs8900.h和cs8900.c:

  2)在smdk2410_init函数中完成相应寄存器设置;在cs8900_probe()函数中对S3C2410的网络控制寄存器进行设置:加入_raw_writel(0x221ldll0,S3C2410_BWSCON);和_raw_writel(0x1f7c,S3C2410_BANKCON3);两个语句;

  3)将网卡的物理地址(0x19000000)映射到vSMDK2410_ETH_IO所指向的虚拟地址上去,即在/arch/arm/mach-s3c2410/mach-smdk2410.c文件中的smdk2410_iodesc []结构数组中添加如下内容:{vSMDK2410_ETH_IO,0x19000000,SZ_1M,MTl_DEVICE};

  4)配置网络设备驱动的Makefile、Kconfig文件,并对头文件做部分修改。

  (3) LCD移植

  在2.6.16内核中已经包含了S3C2410的LCD驱动程序,因此,移植的主要工作是要根据驱动程序及LCD屏的实际情况进行初始化。S3C2410自带5个LCD控制器,每个控制器有不同的功能,必需对每个控制器的参数进行相应的设置才能顺利地启动LCD,这些参数包括:液晶屏类型(TFT屏或CSTN屏)、颜色位数、垂直度、水平度、控制信号线的极性以及液晶屏的分辨率等等。

  本系统采用的是SHARP 8.0英寸的TFT液晶屏。参考该液晶屏手册,根据实际情况设置各个寄存器的参数如表2所列。[page]


  设置好液晶屏的参数后,再在平台初始化函数smdk2410_devices[]_initdata中启动液晶屏。最后,修改drivers/video目录下的Kconfig和drivers/video目录下的Makefile文件。

  4文件系统建立

  每种操作系统都有适合自己的文件系统,如:Windows一般采用FAT32或NTFS文件系统格式,Linux采用EXT2或EXT3文件系统格式,而嵌入式Linux操作系统是建立在一种称为YAFFS2(YAFF文件系统的改进版)的针对嵌入式Linux的文件系统之上。因此可根据本系统的硬件平台设计及所采用的Linux内核。构建出YAfTS2文件系统,步骤如下:

  (1)在内核中建立YAFFS2目录fs/yaffs2,并把下载的YAFFS2代码(可以从网上下载开源的YAFFS2的源码)复制到该目录下面;

  (2)修改Kconfig和Makefile,使其可以配置YAFFS2;

  (3)在YAFFS2目录中生成Makefile和Kconfig文件;

  (4)根据表1在内核中修改NAND分区;

  (5)配置内核时,应选中MTD支持和YAFFS2支持;

  (6)编译内核并将其下载到开发板的Flash中;

  (7)制作根文件系统下载到Flash的指定地址(地址如表1所示)。

  至此,就搭建好了风力发电监控系统开发所需要的软硬件平台。图2所示是基于搭建好的平台并使用Qt/Embeded开发的风力发电监控系统的截图。


  5结束语

  本文根据一个特定的目标平台,介绍了如何构建基于Linux 2.6.16的嵌入式开发平台,介绍了移植的主要技术和整个流程,并在Qt/Embedd下开发了风力发电监控软件。掌握这些移植和开发技术,对于开发嵌入式Linux应用系统十分重要,同时对于开发其它类型的嵌入式系统也具有一定的参考意义。

参考文献:

[1]. S3C2410A datasheet http://www.dzsc.com/datasheet/S3C2410A_5.html.
[2]. ROM datasheet http://www.dzsc.com/datasheet/ROM_1188413.html.
[3]. CS8900A datasheet http://www.dzsc.com/datasheet/CS8900A_593567.html.

关键字:Linux  风力发电  监控系统 引用地址:基于嵌入式Linux的风力发电监控系统开发平台的构建

上一篇:基于Murphypinyin的嵌入式键盘设计
下一篇:基于ZigBee的无线传感器网络定位系统的设计

推荐阅读最新更新时间:2024-03-16 13:19

浅谈Android软硬件巧妙整合的开发技巧
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。 Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为“Android”的公司开发,谷歌在2005年收购“Android.Inc”后,继续进行对Android系统开发运营,它采用了软件堆层(software stack,又名软件
[嵌入式]
OK6410A 开发板 (八) 48 linux-5.11 OK6410A linux内存管理总览
linux内存管理 总览 进程 与 内存管理 linux 内存 从 内存类型角度分为 A. 虚拟内存 B. 物理内存 linux 内存 从 管理角度分为 A. 用户内存 B. 内核内存 从而 正交 形成了 4种 1. 内核物理内存 由 struct page 管理, 不同的 内存模型 有不同的管理方式 // CONFIG_FLATMEM CONFIG_DISCONTIGMEM CONFIG_SPARSEMEM_VMEMMAP CONFIG_SPARSEMEM 2. 内核虚拟内存 由 四种方式() 管理 // 直接(线性)映射 vmalloc动态映射 持久映射kmap 固定映射f
[单片机]
HART智能仪表在线监控系统的设计与实现
   1 智能仪表的广泛应用   随着过程控制技术和智能仪表的发展,DCS已经在石油、化工、钢铁、冶金和电力等领域得到广泛的应用,实现了企业生产操作的高度自动化。智能传感器技术的发展和微电子技术的成熟,也为充分发挥DCS的优越性提供了可靠的保证。   基于HART协议的智能仪表已经在DCS中得到广泛应用。如何最大限度地利用先期制造生产的自动化系统的昂贵投资,在已有智能仪表设备和DCS的基础上,在不影响原有DCS正常工作的情况下,构成企业智能仪表的在线诊断和管理系统,并向局域网发布实时智能仪表信息,让实时过程管理扩展到现场信息系统的每个领域,已经成为自动化领域有待解决的技术课题。针对企业现场生产的实际,能满足上述需要的在线诊
[嵌入式]
通过嵌入式Linux和S3C2440处理器实现无线监控报警系统的设计
随着计算机网络技术、移动通信技术、多媒体技术的快速发展,无线监控系统以其便捷、实用、安装方便等优点被广泛应用于军事、工业、农业等场合,更走进了人们的日常生活,给人们的生活带来了便捷的信息化服务。文中设计实现了一种基于ARM9的室内无线监控报警系统,实现了室内环境信息监控、智能家居控制、图像信息采集存储及与用户实时远程信息交互的功能,并可在紧急情况下报警。在智能楼宇、智能家居、农业大棚、养殖等领域有广泛的应用和发展前景。 1、 硬件设计 1.1 系统总体架构 无线监控报警系统以ARM9为核心,主要实现室内环境信息采集、智能家居控制、图像信息采集、远程无线监控报警等功能。系统的总体架构如图1所示,由7个主要模块构成。其中室内信息采
[单片机]
通过嵌入式<font color='red'>Linux</font>和S3C2440处理器实现无线监控报警系统的设计
基于嵌入式Linux的LCD背光调节及驱动实现
  在手持式设备中,液晶显示屏的使用越来越广泛。由于LCD自身是不能发光的,它需要一个强劲的光源来给它提供背光,以便清晰地显示信息。这样的光源是非常耗电的,通常液晶显示屏的功耗常常占到系统总功耗的60%以上。以群创的7寸屏为例,通常背光灯的功耗为2.5W,而LCD的功耗只有0.825W。由此可见,背光光源的功耗在整个电源中的比重是相当高的。如果系统在不用显示屏时,也全功率的运行,系统的电池能量将很快被耗光。所以,调节LCD的背光源,降低系统在不用显示屏时的能耗是十分必要的工作。   另外,由于手持式设备工作环境的变化,也需要根据外界光线强度的变化,对背光的亮度做出相应的调节,以适合人眼观看的舒适度。   基于上述2种原因,考虑
[电源管理]
基于嵌入式<font color='red'>Linux</font>的LCD背光调节及驱动实现
回顾Linux、Git 之父Linus Torvalds的传奇技术人生
提起 Linus Torvalds 大家的第一反应是怎样的?是严苛刻薄,还是神级伟大,亦或是孤傲清高?二十五年来,Linus Torvalds 一直坚持在技术第一线,开发了 Linux 和 Git 两个项目,并深刻影响了软件行业。如果没有 Linux,就不会有基于 Linux 的安卓系统,那世界是怎样的?如果没有 Git 的诞生,就不会基于 Git 的 GitHub,那么开源的兴旺之势将会迟来多久?下面就随手机便携小编一起来了解一下相关内容吧。 回顾Linux、Git 之父Linus Torvalds的传奇技术人生 有人问 Linus,你是如何成长为今天的你自己的?Linus Torvalds 说,我本人并不适合回答这个
[手机便携]
基于ARM+Zigbee的温室大棚智能监控系统
平台选型说明 设计说明
[单片机]
基于ARM+Zigbee的温室大棚智能<font color='red'>监控系统</font>
在FS2410开发板上移植linux2.6.24初步成功
说是移植,也不太准确,因为linux2.6.24内核已经将s3c2410纳入。在移植的时候只是需要做几个小的改动以及几个注意的地方。 一. 前言 使用的内核:linux2.6.24, http://www.kernel.org/pub/linux/kernel/v2.6/ 使用的arm交叉编译工具(4.2.1): http://www.codesourcery.com/gnu_toolchains/arm/download.html 环境:VMware中的Ubuntu 7.10 二. 移植 1. 修改MakeFile文件,确定arm平台以及使用的交叉编译工具: 修改的文件: linux-2.6.24/Makefile 修改
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved