嵌入式构建范文

2024-06-02

嵌入式构建范文(精选10篇)

嵌入式构建 第1篇

针对高职院校嵌入式学科教学面临的机遇和挑战, 本文构建了一种集理论学习与图形化开发于一体的嵌入式辅助教学平台。此平台采用了探索式的自主学习方式, 学生可以根据自己的知识水平制定学习计划和安排学习进度, 实现传统教育无法做到的个性化教育。嵌入式辅助教学平台可以作为课堂教学的有效补充, 使教师教学与学生学习的方式更加灵活, 有效地降低了学生学习嵌入式系统的门槛, 提高了嵌入式学习的教学效果。

1嵌入式辅助教学平台总体设计方案

本方案设计一个适合高职院校学生学习嵌入式的辅助教学平台。此平台以完全图形化的编程[3]方式代替了基于文本符号的传统编程方式, 人机界面使用了“所见即所得”的可视化[4]技术来建立, 程序代码也是由图形控件来生成的。使得学生能够脱离C和汇编语言的束缚, 直接进行嵌入式MCU的快速开发。

嵌入式辅助教学平台的设计分为硬件和软件两部分。硬件平台由扩展板模块和核心板模块两部分组成。扩展板模块包含了嵌入式MCU的外围模块, 具有通用性。核心板模块是针对单个MCU开发的, 更换MCU型号时, 只需要更换核心板即可。软件部分采用模块化教学思想, 对各个知识点进行划分, 构建理论知识平台。为了实现软件平台的通用性和可扩展性, 系统提供了两个接口:教师接口和学生接口。教师接口用于增加新型MCU素材库;学生接口便于学生进行理论化知识的学习和图形化编程的开发。图1为整个平台的结构图。

2 硬件设计和实现

硬件平台由扩展板和核心板两部分组成。为了实现通用性, 扩展板的设计采用了与芯片无关的原则。核心板是针对特定芯片设计的, 使用接插件与扩展板相连, 包含3 个部分:最小系统、晶振和电源开关、写入器接口。不同的MCU只要更换核心板就可以了。系统目前支持Freescale 公司生产的HC08、HCS08和S12系列的MCU。

2.1 扩展板模块

本方案扩展板主要由电源模块、基本I/O 模块、串行模块、4×4 键盘模块、LED 模块、LCD 模块、A/D 模块等组成。由于MT-Extend Board I 型扩展板提供了160Pin 引脚核心板底座接口、LED 灯、蜂鸣器、继电器、8 段数码管、LCD、4×4 键盘、8 组开关、模拟电位计、红外传感器、光敏传感器、热敏传感器、串行口、USB、CAN、IIC、SPI、以太网口等模块接口, 而且也有HC08、HCS08 和HCS12 系列MCU 具有的基本模块接口, 本方案扩展板在MT-Extend Board I 型扩展板的基础上做了修改。

2.2 核心板模块硬件设计

核心板主要由三部分构成, 支撑芯片工作的最小系统部分、接口部分 (扩展板接口、写入器接口) 和开关部分 (电源开关和晶振开关) 。核心板将每一种芯片的最小支撑电路单独设计在一块电路板上, 把所有的模块和I/O 引脚引出来, 与扩展板上留有的 160 Pin 的接口相连。本系统支持 Freescale HC08、HCS08和S12系列的芯片, 因此本文设计了针对Freescale HC08、HCS08 和S12 系列几种芯片的核心板。图2为三种芯片的核心模块硬件结构框图。

2.2.1 GP32 核心板

GP32核心板主要包括GP32最小系统、MON08接口、电源和晶振选择开关、扩展板接口。

GP32单片机是HC08系列单片机大家族中具有通用性的一员, 具有三种封装形式, 分别为40脚、42脚、44脚。内部主要有以下主要部分:CPU08、存储器、定时器接口模块、定时器模块、看门狗模块、并行I/O接口、串行通信接口SCI、串行外设接口SPI、断电模块、A/D转换模块、键盘中断模块、时钟发生模块及锁相环电路、低电压禁止模块、复位与中断模块、监控模块MON、系统设置模块[5]。

2.2.2 GB60核心板

GB60核心板主要包括GB60最小系统、BDM接口、电源和晶振选择开关、扩展板接口。

GB60单片机是HCS08系列单片机大家族中具有通用性的一员, HCS08系列MCU是高性能与低功耗的完美结合, 其性能可与许多16位MCU相当。GB60内部主要有以下主要部分:HCS08内核、HCS08系统控制模块、中断、看门狗、电压检测、存储器、时钟发生模块、A/D转换模块、电压调节模块、调式模块、8位键盘中断模块、I2C模块、串行通信接口SCI1和SCI2、定时器接口模块、串行外设接口SPI[6]。

2.2.3 UF32核心板

UF32核心板主要包括UF32最小系统、BDM接口、电源和晶振选择开关、扩展板接口。

UF32单片机是HCS08系列单片机大家族中具有通用性的一员, 有两种封装形式, 分别为100脚和64脚。UF32内部主要有以下主要部分:S12内核、ROM、RAM、高速USB2.0接口、给USB批量数据传输使用的集成队列控制器、存储控制器接口、优盘类接口、闪存卡接口、智能多媒体接口、记忆棒接口、定时器模块、串行通讯接口模块、I/O通道、输入通道、系统集成模块[7]。

3 软件结构

如图3所示, 软件设计分为三层:系统平台层、通信层和应用层, 为此定义了3个API接口:HW-API、SYS-API和PS-API。HW-API定义了硬件的寄存器映射, 能通过直接访问硬件寄存器来控制硬件。系统平台层通过SYS-API接口给通信层提供服务。应用层通过PS-API调用通信层提供的服务。

系统平台层建立在μC/OS-II实时操作系统上, 以微软公司开发的VisusalStudio.NET为开发环境, 采用了C#开发语言。系统平台层又分为二个模块:DBM和HWD。DBM主要实现一个基于FLASH的小型数据库, 用来存储学生学习MCU的素材和教师添加新型号MCU的素材;HWD模块提供硬件驱动程序, 包括了MCU的寄存器访问接口 (HC08系列采用了MON08接口, HCS08和S12系列采用了背景调试模式BDM接口) 以及MCU和扩展板的SPI通信, 所有对硬件的控制都通过该模块提供的服务。

应用层包含软件平台由学生平台和教师平台两部分。学生平台和教师平台虽然使用的接口和权限不同, 但是都使用同一个素材库。学生平台主要面向的对象是无编程基础的嵌入式学习人员, 他们使用该平台进行嵌入式学习和编程。教师平台主要面向的对象是教学人员或者嵌入式开发人员, 要求使用者精通嵌入式MCU各个模块的程序编写和程序编译下载程序过程, 由使用者编写素材库, 并将其添加到软件平台中, 供给学生用户平台使用者使用。

4 结束语

针对目前市场上大多数嵌入式学习平台入门比较困难, 理论知识学习与实验操作相互脱节的情况, 引入可视化编程技术, 开发了嵌入式辅助教学系统。本教学平台的创新点在于遵循教与学相辅的设计思想, 提供了一种简单的嵌入式开发、学习方式, 即图形化编程方式, 以实现零基础快速编程, 为基础较薄弱的学生进行嵌入式入门学习提供一个良好的起点。实践表明, 该方案具有良好的通用性和可扩充性, 同时, 良好的性能价格结合点使其具有广阔的市场推广前景。

摘要:后PC时代的到来, 使得人们开始越来越多地接触到一个新的概念—嵌入式系统。近年来, 作为计算机技术和计算机应用领域的一个重要组成部分, 嵌入式系统的研究与学习逐渐呈现出高速增长的态势。主要针对高职院校学生的实际情况, 构建了一种集理论学习与图形化开发于一体的嵌入式辅助教学平台。详细说明了平台的硬件设计和软件结构, 且阐述了教学平台的芯片选型、系统的设计方案和关键技术, 并对平台的应用前景做了展望。

关键词:嵌入式教学平台,高职,设计

参考文献

[1]刘伟.模块化嵌入式MCU辅助教学平台的设计与实现.苏州大学研究生论文, 2008

[2] Nooshadadi S, Garside J.Modernization of teaching in embedded sys-tems design-aninternational collaborative project.IEEE, 2006; (4) :254—262

[3] Neilsen M L, Lenhert D H, Encouraging interest in engineeringthrough embeddedsysten design, 2005; (9) :68—77

[4]徐小良, 刘阳, 周泓, 等.图形化编程平台的结构设计及实现.计算机工程, 2001; (4) :4—5

[5] GP32 Technical Data.Motorola Inc, 2001

[6] GB60 Technical Data.Motorola Inc, 2003

嵌入式构建 第2篇

摘要:目前的嵌入式系统多使用FLASH作为主存,因此,如何有效管理FLASH上的数据非常重要。文章以MX29LV160BT芯片为例,讨论了在VxWorks操作系统下NorFlash上建立TFFS文件系统的一般步骤,从而为FLASH上的数据管理提供了理想的选择方式,同时也为开发者和用户升级程序提供了方便。

关键词:VxWorksFlashMTDTFFS文件系统

嵌入式系统正随着Internet的发展而在各个领域得到广泛的应用,作为一个优秀的操作系统,VxWorks实现了比其他实时操作系统更好的有效性、商用性、可裁减性以及互操作性,广泛应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

如今越来越多的嵌入式操作系统中,通常都使用FLASH作为主存介质。许多开发者和用户为了方便以后升级用户程序,通常在FLASH上建立TFFS文件系统,建立文件系统后,我们就可以象在windows操作系统下对硬盘操作一样,进行数据的拷贝、删除以及文件的建立等操作。

NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NORflash技术,彻底改变了原先有EPROM和EEPROM一统天下的局面。NOR的特点是芯片内执行XIPexecuteInPlace,这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,因此在嵌入式系统得到广泛的应用。

一、TFFS文件系统结构简介

Tornado的TrueFFS是和VxWorks兼容的一种M-SystemsFlite实现方式,版本为2.0。它为种类繁多的flash存储设备提供了统一的块设备接口,并且具有可重入、线程安全的特点,支持大多数流行的CPU构架。有了Tornado的TrueFFS,应用程序对flash存储设备的读写就好象它们对拥有MS-DOS文件系统的磁碟设备的操作一样。

如图1所示,TrueFFS由核心层(corelayer)和三个功能层,翻译层(translationlayer),MTD层(MTDlayer),socket层(socketlayer)组成。

核心层(Corelayer):核心层主要起相互连接其他几层的功能。同时它也可以进行碎片回收、定时器和其他系统资源的维护。通常WindRiver公司将这部分内容以二进制文件提供。

翻译层主要实现TrueFFS和dosFs之间的高级交互功能。它也包含了控制flash映射到块、wear-leveling、碎片回收和数据完整性所需的智能化处理功能。目前有三种不同的翻译层模块可供选择。选择哪一种层要看你所用的flash介质是采用NOR-based,还是NAND-based,或者SSFDC-based技术而定。

Socket层则是提供TrueFFS和板卡硬件(如flash卡)的接口服务。其名字来源于用户可以插入flash卡的物理插槽。用来向系统注册socket设备,检测设备拔插,硬件写保护等。后面将详细讲解它的.功能。

MTD层(MemoryTechnologyDrivers)功能主要是实现对具体的flash进行读、写、擦、ID识别等驱动,并设置与flash密切相关的一些参数。TrueFFS已经包含了支持Intel,AMD以及samsung部分flash芯片的MTD层驱动。新的芯片需要新的MTD支持,你可以使用一个标准的接口来加入这些驱动。

以上四部分,我们通常要的工作就是后两层。

当在VxWorks下配置TrueFFS时,你必须为每一层至少包含一个软件模块。后面我们将详细讨论。

二、MX29LV160BT芯片上建立TrueFFS文件系统

1、配置相关文件

在此,我以NorFlashMX29LV160BT为例,开发工具为Tornado2.2forPPC。要在VxWorks映像中包含TrueFFS文件系统,首先必须在config.h文件中定义INCLUDE_TFFS。这使得VxWorks的初始化代码调用tffsDrv来创建管理TrueFFS所需的结构和全局变量,并为所有挂接了的flash设备注册socket组件驱动。在链接的时候,通过解析与tffsDrv()相关联的符号(symbols)可以将TrueFFS所必需的软件模块链接到VxWorks映象中。

为了支持TrueFFS,每一个BSP目录下都必须包含一个sysTffs.c文件。它将TrueFFS所有的层(翻译层,socket层和MTD层)链接到一起并和VxWorks绑定。因此,我必须编辑这个文件并决定哪一种MTD和翻译层模块应该包含到TrueFFS中。即:

#defineINCLUDE_MTD_MX29LV/*MX29LV160BTMTDdriver*/

#defineINCLUDE_TL_FTL/*FTLtranslationlayer*/

#defineFLASH_BASE_ADRS0x2a10000/*Flashmemorybaseaddr

ess*/

#undefFLASH_SIZE

#defineFLASH_SIZE0x001f0000/*Flashmemorysize,2M(parameterblock)*/

其他无关的MTDdriver包含头都#undef掉,同时定义Flash在系统中的基地址和大小。另外,还必须编辑sysLib.c中的sysPhysMemDesc[]数组,将Flash基地址和大小加入到MMU中,以供将来访问Flash,否则访问Flash会失败。如果BSP目录下没有sysTffs.c文件,那么我们可以从其他BSP目录下拷贝一个即可,然后做上述修改,其他的内容基本可以不用修改。

接下来需要修改tffsConfig.c文件,为了方便管理,通常我们将src/drv/tffs/目录下该文件拷贝到我们BSP目录下,然后再做出修改。在MTDidentifyRoutinemtdTable[]表中加入如下语句:

#ifdefINCLUDE_MTD_MX29LV

mx29lvMTDIdentify,

#endif/*INCLUDE_MTD_MX29LV*/

并在该文件开头声明。

#ifdefINCLUDE_MTD_MX29LV

FLStatusmx29lvMTDIdentify(FLFlashvol);

#endif/*INCLUDE_MTD_MX29LV*/

最后就是将我们的flash相关MTD驱动加入到makefile中。即:

MACH_EXTRA=mx29lvMtd.o

为了方便我们调试MTD驱动,应该在重新编译VxWorks映象前将诸如格式化flash、创建TrueFFS块设备、绑定此块设备到dosFs所必要的功能包含到VxWorks映像中。比如如下定义:

#defineINCLUDE_TFFS

#ifdefINCLUDE_TFFS

#defineINCLUDE_TFFS_DOSFS

#defineINCLUDE_TFFS_SHOW

#defineINCLUDE_DOSFS/*dosFsfilesystem*/

#defineINCLUDE_SHOW_ROUTINES/*showroutinesforsystemfacilities*/

#defineINCLUDE_TL_FTL

#defineINCLUDE_IO_SYSTEM

#defineINCLUDE_DISK_UTIL

#endif/*INCLUDE_DOSFS*/

2、MTD驱动简介

做了上述配置后,进入VxWorks操作系统后,我们在shell上利用tffsShow工具来显示flash的信息。TffsShow函数最终会调用MTD驱动中的mx29lvMtdIdentiy()函数,在mx29lvMtdIdentiy()函数主要是通过读取MX29LV160BT芯片的设备和厂商ID来识别它,然后对FLFlash结构成员进行初始化,最主要的几个参数是:

type

Flash内存的JEDECID号。

erasableBlockSize

Flash内存的擦除块大小(字节)。设置这个值时应考虑到interleaving。因此,通常通过如下方法来设置它的大小。

Vol.erasableBlockSize=MX29LV_MTD_SECTOR_SIZE*vol.interleaving;

对于MX29LV160BT,MX29LV_MTD_SECTOR_SIZE为64K字节。

chipSize

使用来构建TrueFFS文件系统的flash实际大小(字节)。

noOfChips

使用来构建TrueFFS文件系统的flash实际片数。

interleaving

Flash内存交叉因子(interleavingfactor)。即扩展数据总线的设备数。比如,一个32位数据总线上,我们可以使用4片8位或2片16位的设备。

map

指向flash内存映射(map)函数。该函数将flash映射到内存区。

read

指向flash内存的读函数。在MTD驱动识别函数中,这个成员函数已经被初始化为缺省的读函数。通常情况下,我们不需要再初始化它,否则还需要修改很多相关的函数。

write

指向flash内存的写函数。这个成员必须初始化,这是我们要做的一个重要工作。

erase

指向flash内存的擦除函数。这个成员必须初始化,这也是我们要做的一个重要工作。

针对FLFlash结构成员,我们所关心的两个函数就是写和擦除函数。在mx29lvMtdIdentiy()函数中必须有如下定义:

vol.write=mx29lvWrite;

vol.erase=mx29lvErase;

在mx29lvWrite()函数中主要是实现将数据写到flash中。首先需要对扇区进行解锁,然后写入写命令,之后才能进行数据的写入。最后需要判断数据是否写完。为了确保操作成功,我们应该在写完每个数据后进行数据的比较,比较正确后方能进行下一个数据的操作。

在mx29lvErase()函数中主要是实现f

lash扇区的擦除。如今的flash一般都是按照扇区进行擦除操作的。在擦除操作之前也应该首先对扇区进行解锁,然后写擦除建立和扇区擦除命令。擦除成功后,flash中的内容应该是0xffff。所以为了确保成功,我们还是应该在擦除后进行比较,比较正确后方能进入下一个扇区的擦除操作,否则返回擦除错误标志。

所以,对于MTD驱动的调试,基本上就是调试写和擦除两个函数。在调试过程中,我们可以在这两个函数相应位置加入打印语句来调试。为了能调试这两个函数,我们通过在shell上输入命令tffsDevFormat来格式化flash,tffsDevFormat最终会调用mx29lvErase和mx29lvWrite函数,如果成功就会返回0,否则返回-1。当然也可以调用tffsDevCreate函数来验证我们的写和擦除函数的正确性。图2说明了tffsDevCreate调用过程。

在shell上利用tffsShow来验证mx29lvMtdIdentiy。

ètffsShow

0:socket=RFA:type=0x2249,unitSize=0x10000,mediaSize=0x1f0000

value=49=0x31=“1”

说明已正确识别到MX29LV160BT设备,设备号为0x2249。

三、建立TFFS设备

1、挂接设备名

MTD驱动调试成功后,我们就可以给flash设备挂接上dos设备名,如下操作:

格式化:

ètffsDevFormat

value=1

èusrTffsConfig0,0,”/tffs0”

value=0

然后通过devs来查看挂接的设备名。

èdevs

drvname

0/null

1/tyCo/0

1/tyCo/1

5host:

6/pty/rlogin.S

7/pty/rlogin.M

3/tffs0/

8/vio

value=25=0x19

看到/tffs0/说明挂接设备已经成功,接下来就可以利用dosFs文件系统相关命令来操作flash了。如,ls、copy等。

2、从Flash中启动并下载VxWorks映像

要从flash中下载VxWorks映像,首先需要把VxWorks映像拷贝到flash中,在shell中的操作命令为copy“VxWorks”,”/tffs0/VxWorks”,然后修改config.h文件中引导行,如下:

#defineDEFAULT_BOOT_LINE

“tffs=0,0(0,0)host:/tffs0/VxWorksh=192.168.0.153e=192.168.0.154u=targetpw=targeto=cpm”

修改完后,重新编译生成bootrom_uncmp.bin,并把它烧写到flash中(注意:该flash与上面建立TFFS文件系统的flash不一样,它并没有建立文件系统)。然后重新启动,即可看到如下启动画面:

bootdevice:tffs=0,0

unitnumber:0

processornumber:0

hostname&

nbsp;:host

filename:/tffs0/VxWorks

inetonethernet(e):192.168.0.154

hostinet(h):192.168.0.153

user(u):target

ftppassword(pw):target

flags(f):0x0

other(o):cpm

AttachingtoTFFS...done.

Loading/tffs0/VxWorks...894304

Startingat0x10000...

DevelopmentSystem

VxWorksversion5.5.1

KERNEL:WINDversion2.6

CopyrightWindRiverSystems,Inc.,1984-

CPU:MotorolaADS-PowerPC860.Processor#0.

MemorySize:0x1000000.BSPversion1.2/5.

WDBCommType:WDB_COMM_END

WDB:Ready.

到此,说明引导成功。flash整个TFFS文件系统就已经建立成功。

四、结论

VxWorks操作系统中支持TFFS文件系统,我们将VxWorks映像作为文件放到flash上,这就有利于开发者和用户更新应用程序而不需要影响bootrom,直接更新VxWorks映像或者将应用程序直接copy到flash中,然后装载到RAM中运行。

参考文献

嵌入式构建 第3篇

嵌入新主体,构建新教育

2010年,学院与龙信集团合作,开始尝试“双主体”办学模式。将龙信集团引入学校教学体系后,集团将每年投入100万元,用以奖励学习成绩及综合表现优异的学生。符合条件的贫困生不仅可以得到龙信集团的助学金,成绩优异者还可获得龙信集团优先录用的机会。

双主体,双投入。学院与龙信集团共同出资200万元,在校内打造了一个现代化的实训基地——龙信学院。龙信学院的成立,不仅为学生提供了一个稳定的实习基地,同时宣传了企业的优质形象。龙信学院的日常工作由学校与集团共同负责,学校抽调骨干力量承担龙信学校的日常工作,集团也选派多名管理干部及技术骨干,从事教学及管理工作。

双主体,双育人。企业成为教育主体后,在教学问题上拥有了一定的自主权,可以根据自己的需求制订教学计划。从实施的结果来看,企业制订的教学计划更加符合市场需求的实际情况,也更有利于培养学生的实践能力与专业技能。在具体教学活动中,龙信集团不仅派出了优秀的管理人员与工程技术人员,而且将企业文化、新技术、新工艺、新标准等全面带入学校。除课堂教学外,龙信集团为学生安排了大量的实践教学课程。集团根据计划将学生安排到各个项目组,并且派专业的工程技术人员进行系统性的指导,并且以企业标准进行考核。因此,学生在实践能力以及专业技能方面的进步非常迅速。

双主体,双师资。对于高职教育而言,发展中所遇到的最大问题往往不是硬件设施,而是教师人才。引入“双主体”后,学校的师资队伍出现了质的飞跃,在短期内解决了人才瓶颈的问题。根据协议,龙信集团每年分批派遣10名左右的现场技术人员来校从事教科研活动。同时,企业每年必须接受一定数量的在校教师在企业内从事挂职锻炼。采用这种模式后,由于在客观上缩短了人才培养的周期,从而大幅度地推进了双师队伍的建设。同时,企业所提供的优质培训条件,在很大程度上降低了学院的人才培养成本。

双主体,双优势。对于龙信学院的毕业生而言,在职业发展上将具有双重优势。学生在完成龙信学院规定的教学任务后,既可以获得国家认可的高职毕业证书,也可以獲得由龙信集团颁发的学业证书。具有龙信集团学业证书的学生,将优先被龙信集团录取。此外,龙信学院的学生基本上都参与过龙信集团的实训。因此,进入企业后将很快融入企业。同时,企业也会为每个学生提供进一步的教育培养,让学生在今后的职业生涯中能有更大的发展。

创业嵌入教学,创业带动就业

学校从学生的根本利益出发,大胆尝试嵌入式创业教学模式,以创业带动就业,帮助毕业生找到一片属于自己的天空。

提供创业体验,激发创业激情。对于多数学生而言,创业既是充满梦幻的,也是充满神秘的一件事情。要想成为一个成功的创业者,仅有创业的欲望和激情是不够的。为了激发学生的创业意识,以及奠定良好的创业心态,学校开展了一系列创业体验活动:一是企业参观活动。学校每年会开展大量的企业参观活动,所参观的企业涉及各行各业,让学生全面了解企业的管理以及运营;二是开设创业讲堂。学校每年会邀请一批企业家、创业家来校开设讲座,现身说法,为学生讲述创业过程中所遭遇到的一些问题。生动的案例,对于激发学生的创业热情,具有十分显著的效果;三是创业实验。创业最大的问题其实不是资金问题,而是市场问题。如果一个创业者不了解市场,那么再多的资金投入仍旧可能导致创业失败。

为了提升学生的创业能力,学校开设一系列高品质的创业课程。例如“消费者行为分析”“市场信息采集与分析”“市场营销理论与实务”等,为学生了解市场提供了必要的理论与技术手段,为今后的创业活动奠定了坚实的理论基础。

打造模拟创业平台。创业是一种系统性的实践活动,需要调动创业者全部的知识,并且不断学习新的知识。为了让没有经验的学生能够更为顺利地实现创业,学校成立了专业的网络创业中心,为学生搭建起一个智能化的创业平台。网络创业中心通过模拟创业软件,让学生在虚拟空间内全方面地体验创业流程,从而为真实的创业活动打好基础。同时,网络创业中心采用团队化的管理方式,鼓励创业团队之间开展竞争,并且为创业团队提供创业商业计划指导服务,从而为真实的创业奠定基础。

全方位的创业管理。对于没有任何经验的学生而言,想要独立创业并且取得成功是非常困难的。为了提升学生的创业成功率,学校为每一个创业学生提供全方位、全程式的创业管理。

以凯达学生实训中心为创业平台。学校为创业学生提供各种企业的实训机会,帮助学生消除对企业的距离感,以及对创业的恐惧感。同时,让学生能够学习到必要的岗位技能,以及必需的创业经验。

提供市场咨询服务。大数据时代,信息的重要性越来越突出,有效的市场信息将是创业成功的关键。学校的智远信息调查中心,不仅为地方企业提供市场调查服务,同时为地方政府提供服务。因此,积累了大量准确的市场信息。在学生创业的过程中,教师会根据市场信息指导学生调整创业方向,从而提升创业的成功率。

网络创业中心。经过十数年的发展,网络商业已经成为一种主流商业模式,其前景非常广阔。学校适应时代潮流,积极鼓励学生在网上创业。学校的网络创业中心,为学生提供全方位的网络创业指导,从注册网店到产品营销。从实践的结果来看,经过学习的学生都具有十分丰富的网店实战技能。

嵌入多元教学理念 构建多层培养模式

鉴于高职教育是一种职业化教育,学校领导指出,由于学生层次不同、类别不同,需求也不同。因此,在具体教学中,必须采取差异策略,从学生的实际需求出发,开展有差异化的教学活动。

嵌入分层教学理念。考虑到学生的个体差异、用人单位的需求和高职培养目标等因素,学校在培养目标的制定上并不局限于就业,而是提升到发展的战略高度上,提出了嵌入分层教学理念,以发展眼光看待每一个学生。对于那些有意向在学历上进一步提升的学生,学校适当给予支持和鼓励,并且提供必要的教学辅导;对于一些成绩较差的学生,学校则及时帮其分析问题,找到落后的根源。通过树立多元的教学理念,推动教学体系的不断创新、发展。

开展针对性教学。学校领导认为,高职教育应当以就业为核心,开展有利于就业的、具有针对性的教学活动。目前,学校推出了“职业平台+专业方向”的培养模式。所谓职业平台是由一些具有相似性质的专业所构成的,入校学生根据其所填报的专业被安排在不同的职业平台中,经过基础教育后,自由选择不同的专业方向。为了让少数民族学生更快适应,学校为他们单独安排专业教师辅导学习,并且针对不同民族特点,开展有针对性的教学活动。

嵌入式构建 第4篇

移动医疗是基于生物医疗、计算机科学、通讯技术等多学科,将数据传输、计算机软硬件技术等密切结合的高新技术[1],是近几年来远程医疗领域内的一个研究热点。与建立在线缆连接基础上的传统远程医疗系统相比,移动医疗系统最大的优势在于数据传输采用无线技术及智能化的终端设备。目前,国内应用最为广泛的无线技术即为GPRS技术,同时,由于当今各种具备GPRS无线传输智能化要求使得系统设计的复杂度增加,传统8/16位单片机加GPRS模块的方式不再适用,采用32位微控制器加嵌入式操作系统进行智能化终端的开发已成为一种趋势[2]。

嵌入式系统构建主要分为嵌入式系统移植和根文件系统构建2部分。嵌入式是软件和硬件的结合,进行嵌入式系统的移植,关键是要确定硬件平台。目前,嵌入式移植中的硬件处理器有ARM、PowerPC、MIPS等[3],在国内占据主导地位的主要是ARM。目前移植的流行的操作系统主要有μC/OS-Ⅱ、linux(Vxworks、uclinux)等。其中,μC/OS-Ⅱ以体积小、编译方便著称,所有硬件平台均可使用,开发但非免费,开发商业产品需购买license;Vxworks主要流行于欧美,国内使用较少;Linux主要在带mmu的32位平台上使用(不带mmu的使用uCLinux),2.4内核以前仅支持分时调度,实时性较不好(主要是调度算法不同),2.6内核增加了实时调度,提供完善的进程通信、线程同步等服务,网络功能超级强大,支持动态链接,文件系统完善,有uboot、vivi等bootloader(引导加载程序)的支持,内核小巧容易裁剪,移植性很强。文件系统是指在一个物理设备上的任何文件组织和目录,它构成了Linux系统上所有数据的基础,Linux程序、库、系统文件和用户文件都驻留其中,因此,它是系统中庞大复杂且又是最为基本和重要的资源。

本文设计的GPRS智能传输终端选择linux 2.6内核,移植的内核为LCD(液晶显示屏)、触摸屏等作为人机交互的硬件接口设备提供支持,采用基于QT图形库的嵌入式桌面系统作为上层的人机界面,支持GPRS网络传输。因为产品的上市时间对占领市场有重要作用,构建具有一定通用性的嵌入式系统有利于加快研发进度,缩短上市时间。终端在基于32位ARM9高端嵌入式平台上实现GPRS网络在嵌入式领域的应用,构建的系统中生成的镜像文件可直接烧写入相似的硬件平台上,使产品的开发只剩应用程序的开发,大大提高了研发的进度,同时,为进一步实现基于GPRS技术的移动医疗智能终端奠定了基础,具有广阔的应用前景。

2 系统构建过程分析

嵌入式系统构建的一般流程如图1所示。

2.1 建立交叉编译环境

由于嵌入式平台的资源限制,嵌入式的开发采用的是一种宿主机—目标机的开发模式。在宿主机上交叉编译生成目标机上可运行的程序二进制代码,再下载到目标板上调试运行。因此,需要建立交叉编译环境。在建立交叉编译环境前,在宿主机上要有一个Linux环境主要通过2种方法实现:

(1)在PC机或虚拟机(适合配置较高的PC机)上安装Linux操作系统。

(2)在Windows下安装软件cygwin,通过cygwin软件在Windows下提供一个模拟的Linux运行环境。

交叉编译环境建立可以采用Binutils、GCC、Glibc等工具自己来构建交叉编译工具链,也可以直接下载网上一些成熟稳定的交叉编译器版本。在此选择后者,这样交叉编译环境的建立实际上就是各个交叉编译工具包的解压,以2.95.3版本为例:tar jxf cross2.95.3.tar.bz2-C/usr/local/arm即可在/usr/local/arm目录下创建2.95.3的目录,也就是构建了2.95.3的交叉编译环境,其他版本的交叉编译器以同样的方法即可创建对应的交叉编译环境,可在宿主机上同时建立多种交叉编译器环境。

2.2 Bootloader移植

Bootloader是操作系统内核启动前运行的一段小程序,嵌入式系统上的Bootloader的功能要求不仅包括从存储介质(如NAND FLASH)中读取系统内核并加以执行,还必须负责PC机上BIOS完成的部分即硬件初始化和一些硬件检测。Bootloader有2种模式:一种是启动加载模式,主要完成目标机将操作系统加载到RAM中运行的工作;另一种是下载模式,主要完成通过串口、网络或USB等将交叉编译好的文件下载到目标机上的工作。

大多数Bootloader都分为阶段1(stage1)和阶段2(stage2)2个部分,依赖于CPU体系结构的代码通常都放在阶段1中且通常用汇编语言实现,而阶段2则通常用C语言来实现。Bootloader两阶段的功能分别为[4,5]:

(1)stage1:(1)硬件设备初始化;(2)为加载bootloader的stage2准备RAM空间;(3)拷贝bootloader的stage2到RAM空间中;(4)设置好堆栈;(5)跳转到stage2的入口点。

(2)stage2:(1)初始化本阶段要使用到的硬件设备;(2)检测系统内存映射(memory map);(3)将kernel映像和根文件系统映像从flash上读到ram空间中;(4)为内核设置启动参数;(5)调用内核。

嵌入式系统移植的第一步就是要移植一个适合硬件系统的Bootloader。移植Bootloader到特定的目标平台,其实就是修改其代码中与硬件相关的部分。现在流行的Bootloader如Uboot、vivi、blob、redboot等已经非常成熟,它们的代码目录中都已经包含了大部分的处理器相关的代码,很多与CPU相关的文件不需要从头创建,只需要做少许的修改即可。在此使用的Bootloader为vivi。vivi是韩国Mizi公司开发的一种针对ARM9处理器的Bootloader。vivi作为一种Bootloader第一阶段的代码在arch s3c2410/head.S中定义,它包括从系统上电后在0x00000000地址开始执行的部分。第二阶段的代码在init/main.c中,进行一些开发板初始化、内存映射和内存管理单元初始化等工作后跳转到boot_or_vivi()函数中,接收命令并进行处理。

2.3 内核编译移植

Linux内核包含了许多功能如进程管理、内存管理、设备管理和网络等。因此,Linux运行时若加载所有功能选项开销较大。由于嵌入式系统的可用资源远比普通PC机少,必须先对Linux内核进行裁剪,再运行于嵌入式系统硬件平台上以控制开销。Linux系统各任务调度关系复杂,但Linux分明的分层结构将其中的硬件相关的代码独立了出来,因此,移植过程中需要改动的只是进程管理、内存管理和设备管理中与硬件相关的那部分代码[6]。在此要构建GPRS传输终端的内核移植只需针对ARM9 S3C2410的内核选项进行裁剪,并加载所需的LCD、触摸屏以及PPP协议驱动即可。

2.4 根文件系统构建

根文件系统内容可分为几部分:目录、Shell、库、脚本,因此根文件系统的构建其实就是以上几部分的创建和组织。通过简单的mkdir命令即可创建出所需的各个目录,并可用chmod命令改变各个目录的权限。根文件系统要包含这些必须有的目录:dev、bin、usr、sbin、lib、etc、proc、sys等。Shell的构建只需通过busybox工具包的交叉编译安装即可得到,它构建了/sbin和/bin下的内容。/lib的库其实就是进行busybox编译的库,即交叉编译器的库,只需将使用的交叉编译器安装lib目录下一些必须库拷贝过来即可。良好的人机接口界面(GUI)是嵌入式系统设计的一个关键技术,为能快速有效地构建出终端的GUI应用程序,在此还为文件系统添加了QT图形库的支持。

构建根文件系统最基本的要求就是系统能够在此基础上启动运行起来。由busybox构建出了init程序,它是引导过程完成后内核运行的第一个程序,它能启动全部其他程序。只要init完成运行全部必要的程序,系统就开始建立并运行。当程序开始启动时,init会读取一个配置文件inittab,在inittab中设置rcS启动脚本,进行系统初始化。除了启动脚本外,文件系统中还包括一些应用必须的脚本,如实现GPRS传输功能的gprs脚本等。

3 移植过程

目标板采用北京精仪达盛科技公司的EL-ARM-830实验教学系统,平台上的CPU为ARM920T的S3C2410芯片,具有MMU,工作频率为202 MHz,一片64M NAND FLASH,两片32M SDRAM,LCD为640×480的5.7 in(1 in=25.4 mm)屏,内部集成了触摸屏控制器、LCD控制器及A/D转换器,支持8路模拟输入混合器,12位模数转换,最大转换速率为100 kps。在移植工作开始之前,应该先做好准备工作,即准备好移植需要的软件包。移植主要需要3个软件包:Bootloader(引导加载程序)源码、Linux内核源码、交叉编译工具包以及构建文件系统的busybox工具包。在上述各源码和工具包众多版本中,本研究选择的分别是vivi.tar.gz、linux-2.6.24.7.tar.bz2、cross-2.95.3.tar.bz2、arm-linux-gcc-4.3.2、arm-linuxgcc-3.4.5、busybox-1.9.2.tar.gz。GPRS应用实现使用的是ppp-2.4.4.tar.gz安装包。

3.1 Bootloader移植

对vivi的交叉编译据经验采用2.95.3版本的交叉编译工具较为合适,否则易出现莫名其妙的错误(Bootloader使用的交叉编译工具与内核、busybox的无所谓匹配关系)。对vivi的移植主要包括以下几个步骤:

(1)Makefile文件修改,主要是设置其中LINUX_IN-CLUDE_DIR、CROSS_COMPILE、ARM_GCC_LIBS 3项。

(2)arch/s3c2410/smdk.c依据具体需要设计自己的分区信息mtd_partition_t default_mtd_partitions[]={},在此为平台设计的分区信息如图2所示。vivi还可通过修改char linux_cmd[]为内核传递系统启动参数。

(3)为加载可读写的yaffs文件系统支持,在此还为vivi增加了对yaffs文件系统映像的下载功能和命令的支持。由于源码中没有yaffs文件系统的支持,因此需先添加lib/loadyaffs.c文件;再修改lib/config_cmd.in添加CONFIG_LOAD_YAFFS配置选项;vivi的命令接口通过user_command结构体实现,把它所支持的命令通过链表连接起来,由通过add_command()把命令连到链表上如add_command(&loadyaffs_cmd)。

(4)执行make menuconfig进行对vivi裁剪,根据实际情况进行选择,注意要选上“[*]load yaffs to flash command”。

(5)最后执行make vivi命令即可在vivi目录下生成vivi的交叉编译版本,通过Jflash写进开发板,至此完成了Bootloader的移植。

3.2 系统内核的编译和移植

内核的编译前首先应先进行内核的配置,配置内核主要是处理器类型、板级支持、设备驱动支持、文件系统支持等[7]。首先完成以下几项工作:

(1)内核打补丁,如为内核打上yaffs2文件系统的支持,则应进入yaffs2源码目录下用命令:./patch-ker.sh c../linux-2.6.24.7。

(2)修改Makefile,确认ARCH与CROSS_COMPILER的定义:ARCH=arm CROSS_COMPILER=/usr/local/arm/4.3.2/arm-none-linux-eabignu-。

(3)使用一个与硬件平台最相近的配置文件进行配置选项的修改:在shell下通过命令cp arch/arm/configs/smdk2410_defconfig.config。上述完成后移植的主要工作是源码中各种驱动加载和新功能的添加。智能GPRS终端所需的驱动包括LCD驱动、触摸屏和网卡驱动,所需添加的新功能主要是GPRS传输的PPP协议支持,因此在此主要对以上几种驱动的移植和PPP协议支持功能的添加加以叙述。

除了基本的字符设备、块设备和网络设备,Linux内核源码不断细化,其中有一类platform设备,为内核添加一个platform设备,只需填写platform_device和platform_driver 2个数据结构(这2个数据结构的定义都可以在include/linux/platform_device.h文件中找到),为该类设备驱动加载提供了极大的便利。LCD和触摸屏均属于platform设备。移植过程包括:

(1)在arch/arm/mach-s3c2410/devs.c中完成platform_device数据结构的填写。

(2)在arch/arm/mach-s3c2410/machs3c2410.c文件中st-atic struct platform_device*smdk2410_devices[]__initdata={}中添加形如&s3c_device_lcd使得在linux初始化platform设备时能识别到对应设备。

(3)由device_init函数调用platform_driver_register(&device_driver)向内核注册这个platform设备驱动,并申请资源。platform设备在内核注册中的向下调用过程如图3所示。

需要说明的是,2.6.24.7内核源码中并没有S3C2410触摸屏驱动程序,像这样的设备必须独立完成驱动程序的编写,并将驱动程序加进内核源码对应设备类型目录下,经修改Makefile和Kconfig文件才可真正在make menuconfig编译中将驱动程序编译进去。

对于自带TCP/IP协议的GPRS模块则可以直接通过串口往GPRS模块写入AT控制指令实现网络功能。对于使用不带TCP/IP协议的GPRS模块进行无线数据传输,则必须利用系统的资源实现GPRS网络的支持。linux系统强大的网络功能使得在linux系统中只需添加PPP协议支持即可,而添加PPP协议支持只需在make menuconfig时将Network Device Support下PPP协议的各选项选中编译进内核即可。

修改完成后,直接用make zImage即可在arch/arm/boot/下生成所需的内核镜像zImage,将其下载到目标板上即可。

3.3 根文件系统制作

为了减少编译后的shell体积和降低应用程序编译难度,在此采用动态编译busybox,交叉编译器采用3.4.5版本(这里需要与内核的交叉编译器匹配,测试4.3.2无法正确加载文件系统,因此采用了3.4.5版本)。mdev是busybox自带的一个简化版的udev,简单易用,适合于嵌入式的应用场合。它的作用就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。使用了mdev机制在/dev目录下只需创建console、null 2个设备节点即可,其余所需的设备节点会在系统初始化或动态加载设备时自动创建。

Qt是一个跨平台的C++图形用户界面库,它的目的是提供开发应用程序用户界面部分所需要的一切,主要通过汇集C++类的形式来实现这一目的。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展的,并且允许真正地组件编程的GUI开发工具[8]。因此为嵌入式系统添加QT图形用户接口的支持。添加QT的支持,主要是完成QT工具包的交叉编译以得到库文件和测试程序,它的编译由以下几步完成:

(1)交叉编译jpegsrc.v6b.tar.gz、e2fsprogs-1.40.2.tar.gz。需要注意的是,QT的触摸屏功能支持需要在编译中添加,通常添加tslib触摸屏驱动支持,因此还需编译tslib源码。最终得到库文件libjpeg、libuuid和libts等备用。

(2)应先配置Qt交叉编译器export$PATH=/usr/local/arm/3.4.5/bin:$PATH。

(3)QT工具包交叉编译配置configure,配置选项用-I、-L设置上述编译好的几个功能支持的头文件和库文件所在目录。

(4)make&make install得到图形界面支持的所有文件。

最后是实现GPRS应用,通过交叉编译ppp-2.4.4.tar.gz得到pppd、chat 2个可执行文件,添加到/usr/sbin/下,再在etc/ppp下添加gprs-connect-chat、pap-secrets、chap-secrets几个配置文件,/etc/ppp/peers/下添加调用的gprs脚本。系统完成后,可在shell下用命令pppd call gprs完成GPRS的拨号上网功能。

根文件系统所需文件均制作完毕后通过mkyaffs工具即可制作出yaffs2文件系统映像。

4 目标板上运行测试

Bootloader运行起来后,通过命令load flash kernel x和loadyaffs root x分别将内核和根文件系统镜像下载到开发板上运行。通过设置rc S脚本文件添加开机启动Qtopia桌面程序信息/bin/qtopia&,得到运行在LCD上具有QT图形界面支持文件系统效果图如图4所示,根据提示点击桌面即可进入触摸屏校正。超级终端上看到内核启动信息中有关PPP协议的内容如图5所示,可见系统内核启动时成功加载了2.4.2版本的PPP协议驱动支持。

以上已经确定了PPP协议加载成功。在实际应用时应先做测试保证网络连接无误再运行应用程序,具体步骤如下:首先使用GPRS各应用脚本运行命令pppd call gprs进行拨号连接网络;接着为联网时正确使用GPRS模块连接,通过命令ifconfig eth0 down禁用网口;再用ifconfig命令确认使用的ppp0(GPRS的设备节点)端口的启动和eth0网口的禁用;最后运行ping www.baidu.com测试GPRS网络连接情况,测试表明,数据包发送成功,GPRS网络功能得到实现。超级终端中的联网测试主要信息如图6所示。

5 结束语

本文根据智能GPRS传输终端的要求,结合嵌入式Linux系统和EL-ARM-830硬件平台,研究和实践了Linux操作系统向ARM9 S3C2410平台上移植的过程,加载了所需驱动程序和GPRS应用,并为后续应用程序开发添加了QT图形用户接口的支持。构建的嵌入式系统具有很强的通用性,为GPRS在嵌入式平台上的开发应用奠定了基础,也为后续移动医疗系统的智能终端研究奠定了基础。

参考文献

[1]刘国伟,刘长兴.移动医疗系统临床应用的必要性[J].实用医学杂志,2010(2):182-183.

[2]刘庆敏,田岚,何国圆,等.智能化GPRS DTU的嵌入式混合文件系统[J].计算机工程,2009,35(12):256-258.

[3]于明,曾祥烨.ARM9嵌入式系统设计与实例开发教程[M].北京:电子工业出版社,2006.

[4]陈艳.引导加载程序vivi的分析和移植研究[J].电子设计应用,2006(11):112-114.

[5]杜文军,侯立刚,王艳梅.基于ARM的Linux移植分析与实现[J].辽宁石油化工大学学报,2009,29(2):56-59.

[6]朱珍民,段斌.嵌入式实时操作系统及其应用开发[M].北京:北京邮电大学出版社,2006.

[7]张绮文,解书钢.ARM嵌入式常用模块与综合系统设计实例精讲[M].北京:电子工业出版社,2008,(10):357.

新生代农民工工作嵌入测量量表构建 第5篇

关键词:新生代农民工;工作嵌入;组织嵌入;社区嵌入;回乡工作意愿

中图分类号:C922 文献标识码:A 文章编号:1000-4149(2013)04-0021-09

一、引言

目前,中国的农民工群体已不再是一个高度同质的群体,而逐渐分化为两代不同的群体——第一代农民工和新生代农民工。在研究领域,新生代农民工的定义多以年龄作为界限,具体指出生在20世纪八九十年代的农村进城务工人员。有研究指出,“80后”和“90后”农民工群体人数已经过亿,占农民工总数的六成以上,并且随着第一代农民工因为年龄逐渐退出城市劳动力市场和“90后”农民工陆续加入,其规模及所占比重将越来越大。另外,在农民工聚集的珠江三角洲地区,根据《2010年广东新生代农民工调查报告》显示,广东省80、90后的新生代农民工为1978万人,占全省农民工总量的75%,其中92%的新生代农民工分布在珠三角地区。

米契尔(Mitchell)最早提出了工作嵌入(iob embeddedness)概念,指出个体会受到来自组织和社区的各种因素牵制,使其“嵌入”到工作中,从而降低主动离职水平。在研究领域,引起离职的组织因素受到了重视,社区因素则常常被忽略。就新生代农民工而言,他们比第一代农民工文化程度高,吃苦耐劳精神较弱,对农業劳动不熟悉,外出工作主要是为了改变生活环境,留在和融入城市的意愿强。应该说,由于天然形成的血缘、亲缘和地缘关系,新生代农民工在家乡的社会关系和心理网络中往往具有较高的嵌入程度,再加上“重土难迁”、“在家千日好,出门一日难”等传统观念影响,他们之所以选择在异乡长久地工作和生活,是因为在打工城市形成并嵌入了新的关系网络、心理网络和经济网络,如果放弃这些网络而回乡工作或务农,将意味着社会资本的损失和社会网络的淡化,会带来利益和情感上的损失。反观现实,许多新生代农民工处在“既融入不了城市,也回不了农村”的尴尬位置,他们与乡村社会和文化日渐疏离,传统性正逐渐褪去,与此同时,城市社会及企業组织对他们低经济性接纳、高社会性排斥,使他们面临许多不公平的待遇和歧视,导致其组织和社区的嵌入程度较低,无法融入现代城市社会。从“农民工”向“产業技术工人”和“市民”转变,是解决新生代农民工问题的重要途径。在此过程中,新生代农民工的工作嵌入问题就变得非常重要了。本研究拟采用工作嵌入理论框架,探讨影响新生代农民工留职的组织和社区因素,构建工作嵌入测量量表,分析其对新生代农民工流动的影响,试图为降低新生代农民工主动离职,缓解经济发达地区“用工荒”问题提供理论分析的工具。

二、文献回顾与研究假设

1.工作嵌入

以往的研究侧重讨论与组织相关的行为态度变量对员工主动离职的影响,如工作满意、组织承诺和组织认同等。随着研究逐步深入,越来越多的学者认为,只是考虑组织因素是不够的,非组织因素同样对主动离职产生影响。为了完善理论对现实的解释,米契尔提出了工作嵌人理论。将工作嵌入定义为多维构念,分为组织嵌入和社区嵌入两个层面,包括组织联系、组织匹配、组织牺牲、社区联系、社区匹配和社区牺牲6个维度,开发了由40个项目构成的工作嵌入组合量表。这一结构及量表在后续研究中被广泛使用,并具有良好的信度、效度。克罗斯利(Crossley)认为40个项目的量表题项过多,为此他开发了7个项目的整体量表,用于测量工作嵌入,尤其是组织嵌入水平。在国内,黄丽、刘蓉也分别以知识员工、中高端人才为样本对工作嵌入结构维度进行了探索。

2.新生代农民工工作嵌入

目前,国外的工作嵌入研究主要针对银行、零售店、医院的雇员,在我国,则多以知识员工作为研究对象。在理论研究方面,直接探讨农民工或新生代农民工工作嵌入的研究相对较少。秦伟平、赵田田分别以新生代农民工为样本讨论了农民身份和城市工人身份对工作嵌入的影响。雷定欣指出,新生代农民工工作嵌入对离职意愿存在显著负向影响,工作嵌入在组织认同和离职意愿之间具有中介作用。上述研究均采用了克罗斯利2007年的工作嵌入量表,就问卷项目构成而言,主要是组织嵌入项目,缺少反映社区嵌入的项目,因此,尚未对新生代农民工社区嵌入的影响因素和后果变量等予以讨论。

除此之外,国内也有研究从社会资本或社会关系网络角度来探讨农民工城市融入问题。如刘传江、周玲指出,农民工社会关系网络规模和质量、网络密度和异质性、网络中所嵌入资源等是影响城市融入的决定因素,目前农民工社会网络主要是血缘、亲缘和地缘形成的关系型社会资本,而契约型社会资本尚未形成。钟水映、李魁将农民工社会资本分为现代型和乡村型,市民化实际上就是乡村型社会资本向现代型社會资本的转化过程。蔡禾、曹志刚将农民工社会网络分为乡土社会网络和新生社会网络,前者指带入城市的乡土关系网络,后者指在城市生活和工作建立起来的网络,选择离开会导致社会资本损失和社会网络淡化。上述研究均从加强社会资本或社会关系网络的角度探讨农民工城市融入问题,但是社会关系网络内涵相对较窄,而工作嵌入概念则更为广泛,它不仅包括社会关系网络,同时也包括个体所嵌入的心理网络、经济网络等,因此,讨论工作嵌入比单纯讨论社会资本或关系网络要更全面和丰富。

3.组织嵌入和社区嵌入对员工主动离职的影响

有研究指出,工作嵌入对员工主动离职行为和意愿具有显著的预测作用,其预测作用显著程度甚至超过组织承诺、可供选择的工作机会和工作满意度。关于社区嵌入对离职意愿的影响,李(Lee)指出社区嵌入比组织嵌入更能预测主动离职,但是范德克(Van Dijk)、艾伦(Allen)等的研究认为社区嵌入与主动离职无显著关系。上述两种研究结论截然相反,原因在于忽略了工作嵌入与主动离职之间可能存在的某些调节变量,如奥斯托夫(Ostroff)和克拉克(Clark)指出,社区嵌入对主动离职的影响会因为是否需要搬离原社区而不同,在需要搬家的情况下,社区嵌入对离职意愿存在显著影响,反之则不显著。本研究将采用“回乡工作意愿”作为结果变量,它同时包括两层含义:即不仅离开目前的工作单位,同时离开工作所在城市。因此,如果社区嵌入能够缓解回乡工作意愿,他们会转而选择留在城市中的其他单位工作,这虽然会出现劳动力本地流动,但并不会加剧“用工荒”问题。在此基础上,笔者提出以下假设:

nlc202309030341

假设1:新生代农民工组织嵌入对回乡工作意愿具有显著的负向影响。

假设2:新生代农民工社区嵌入对回乡工作意愿具有显著的负向影响。

4.社区嵌入在组织嵌入和回乡工作意愿之间的调节作用

目前,在农民工工资和福利方面,沿海企業与内地企業的差距正在缩小。换言之,在组织嵌入中最重要的经济报酬上,东南沿海地区企業的优势正在减弱。将来在吸引和保留新生代农民工方面,不同区域和城市将彼此存在着一定程度的竞争关系,在这种情况下,社区嵌入因素将逐渐发挥日益重要的作用。新生代农民工追求更高的工作生活质量,如果在城市中他们能获得良好的生活环境、公平的社会保障和就業机会、丰富的精神娱乐活动等,而这种良好的社区环境,是其在家乡工作所无法具有的,在这种情况下,即使新生代农民工在其工作单位中暂时未获得需求的充分满足,也可能会缓解其回乡工作意愿。在此基础上,提出以下假设:

假设3:新生代农民工社区嵌入在组织嵌入和回乡工作意愿之间具有显著的正向调节作用。

本文的总体研究框架如图1所示。

三、研究设计

1.研究步骤和方法

(1)文献分析和开放式问卷调查。在文献方面,本研究主要参考了米契尔、维加扬托(Wiiayanto)、李(Lee)、黄丽的分维度工作嵌入测量量表,以及克罗斯利、坎安宁(Cunningham)等的工作嵌入总体水平测量量表。开放式问卷题目是:作为一名新生代农民工,您认为促使您留在现在单位工作的组织因素和社区因素包括哪些方面?研究者共发放开放式问卷78份,回收有效问卷65份,共收集到340个初始项目。根据本研究对新生代农民工的定义,调查样本均为出生于20世纪80年代后的新生代农民工。对初始项目进行合并和归纳,确定了45个项目构成的新生代农民工工作嵌入预试问卷。

(2)预试。预试在珠三角地区两家家庭用品的制造企業中进行,共发放调查问卷220份,回收有效问卷195份,有效问卷回收率为88.7%。经过多次探索性因素分析,研究者最后确定了由32个项目构成的新生代农民工工作嵌入正式调查问卷。

(3)正式问卷调研。在正式调查中,研究者采用由32个项目构成的新生代农民工工作嵌入正式调查问卷,在珠三角地区农民工密集的东莞、佛山、中山、珠海四市的多家企業进行了较大规模的调查。共发放问卷500份,回收有效问卷410份,有效问卷回收率为82%。被试农民工分布在建筑、制衣、制鞋、五金、物流和物業管理等行業。

2.测量工具

本研究所使用的测量工具包括:①本研究开发的工作嵌入问卷;②回乡工作意愿问卷。回乡工作意愿问卷借鉴了阿忆(Aryee)的离职意愿问卷,并根据研究需要进行修订,强调新生代农民工离开目前生活和工作的城市和单位,选择回乡工作的意愿,包括“我开始在家乡的劳动力市场寻找其他相同性质的工作”等4个项目。

四、研究结果

1.探索性因素分析

从正式调查问卷中随机抽取204份有效问卷进行探索性因素分析,结果表明,新生代农民工工作嵌入呈现出清晰的六因素结构,总的方差解释量为64.482%,共由32个项目构成,探索性因素分析的结果如表1所示。

根据因素分析结果和项目的含义,各因素分别命名为:①F1-组织匹配。包括对职業成长和发展感觉良好等7个项目。②F2-组织关系网络。包括与同事(包括上级)经常联系,建立了良好的人际关系等6个项目。③F3-社区关系网络。包括虽然是外地人,但是我与很多本地人成为朋友等5个项目。④F4-社区生活环境。包括我非常喜欢社区的生活氛围等6个项目。⑤F5-社区损失。包括在外面工作和生活比家乡更能增长了我的见识和才干等4个项目。⑥F6-组织损失。包括我可以获得与绩效相当的报酬等4个项目。

2.二阶因素分析

为进一步简化模型,对六因素的问卷进行二阶因素分析。研究者采用常规方法,即先计算一阶因子得分,然后再进行探索性因素分析,二阶因素分析结果如表2所示,总的方差解释量为73.280%。通过二阶因素分析,六因素又分为组织嵌入和社区嵌入两个层面,这与米契尔、李(Lee)等的研究结果是一致的。

3.验证性因素分析

用正式问卷的另外206份数据,对探索性因素分析所得到的新生代农民工工作嵌入内容结构进行验证,并与其他竞争模型比较。通过定性分析,并根据米契尔、李(Lee)等的研究,研究者提出了两个竞争模型,分别是:①M2:二因素模型。按组织层面和社区层面来划分,将F1(组织匹配)、F2(组织关系网络)、F6(组织损失)合为一个因素,将F3(社区关系网络)、F4(社区匹配)、F5(社区损失)合为一个因素。②M3:三因素模型。按工作嵌入的联结、匹配和损失维度来划分,将F2(组织关系网络)、F3(社区关系网络)合为一个因素,F1(组织匹配)、F4(社区匹配)合为一个因素,F5(社区损失)、F6(组织损失)合为一个因素。从表3可以看出,六因素模型的绝对拟合指标、相对拟合指标和简约拟合指标均优于其他竞争模型,是比较理想的新生代农民工工作嵌入内容结构模型。

为了进一步探讨新生代农民工工作嵌入内容结构的六因素之间的关系,根据二阶探索性因素分析的结果,研究者对该模型进行了二阶验证性因素分析,验证结果是,X2=851.2,df=442,X2//df=1.93,RMSEA=0.077,IFI=0.867,CFI=0.865,PNFI=0.676,PGFI=0.633,拟合情况较好。这一层次结构模型,使得新生代农民工工作嵌入的结构更为清晰,同时也较好地验证了米契尔由组织嵌入和社区嵌入构成的工作嵌入模型。

4.问卷的信度、效度分析

(1)信度分析。量表常用的信度檢验方法为Cronbach a系数,该系数能反映出测量项目的一致性程度和内部结构的良好程度,一般要求在0.70以上。在本研究中,各因素的a系数最低值为0.772,最高值为0.881,总问卷的a系数为0.924,说明问卷信度较为理想。

nlc202309030342

(2)效标关联效度分析。本研究采用回乡工作意愿来检验量表的效标关联效度。各变量的描述性统计结果如表4所示。除社区关系网络外,新生代农民工工作嵌入的其他维度均与回乡工作意愿显著负相关,该问卷具有较好的效标关联效度。

此外,用正式调研收集到的410份问卷数据来对假设模型进行检验。具体拟合结果如图2所示,假设模型的拟合指数X2=30.580,df=25,X2/df=1.233,RMSEA=0.037,IFI=0.988,CFI=0.987,PNFI=0.521,PGFI=0.439,实际数据与假设模型拟合程度较好。研究表明,组织嵌入对回乡工作意愿的标准化路径系数为-0.381(p<0.001),社区嵌入对回乡工作意愿的标准化路径系数为-0.325(p<0.001),组织嵌入对回乡工作意愿的影响略高于社区嵌入。组织嵌入和社区嵌入对回乡工作意愿具有显著的预测作用,假设1和假设2都得到了支持,同时也说明量表具有较好的效标关联效度。

5.社区嵌入在组织嵌入和回乡工作意愿之间的调节作用分析

根据巴伦(Baron)和肯尼(Kenny)对调节作用的论述,本研究采取以下步骤探讨调节作用是否存在。第一步,以组织嵌入为自变量,以回乡工作意愿为因变量建立回归模型;第二步,以组织嵌入和调节变量为自变量,以回乡工作意愿为因变量建立回归模型;第三步,以组织嵌入、调节变量、组织嵌入×调节变量为自变量,以回乡工作意愿为因变量建立回归模型。社区嵌入在新生代农民工组织嵌入和回乡工作意愿之间的调节作用分析结果如表5所示。从表5可以看出,层次3回归模型总体检验的F值=24.082,在p<0.001的水平上显著,组织嵌入×调节变量对回乡工作意愿的标准化回归系数B为0.005,T=3.660(p<0.001),达到显著水平。说明社区嵌入在组织嵌入和回乡工作意愿之间具有显著的正向调节作用。

研究者将自变量(组织嵌入)、调节变量(社区嵌入)分为高水平(高于平均值1倍标准偏差)、低水平(低于平均值1半标准偏差)两种来绘制对应的折线图,结果如图3所示。在高社区嵌入情况下,新生代農民工组织嵌入与回乡工作意愿显著负相关(B=-0.151,t=-3.469,p<0.01),折线比较陡峭。在低社区嵌入情况下,新生代农民工组织嵌入与回乡工作意愿显著负相关(B=-0.070,t=-2.147,p<0.05),折线比较平缓。研究表明,在高社区嵌入情况下,组织嵌入对回乡工作意愿的影响较大。在低社区嵌入情况下,组织嵌入对回乡工作意愿的影响较小。社区嵌入在组织嵌入和回乡工作意愿之间具有显著的正向调节作用,假设3得到支持。

五、讨论

通过文献分析、访谈和问卷调研,本研究开发了新生代农民工工作嵌入的测量量表,由组织匹配、组织关系网络、社区关系网络、社区生活氛围、社区损失、组织损失等6个维度构成。二阶因素分析结果表明,6个维度又分为组织嵌入和社区嵌入两个方面,本研究建构并验证了新生代农民工工作嵌入的结构维度。

该内容结构与以往研究存在一定差异,从研究结论来看:①量表体现了新生代农民工的特征和需求。组织嵌入项目表明,在组织中基本权益的保障仍然是影响新生代农民工组织嵌入的主要因素,如收入、工作时间、劳动强度、管理方式等。与此同时,新生代农民工也越来越重视在组织中的个人发展,如符合自身兴趣的工作、良好的人际关系、技能学习和提升、匹配的企業文化等。在社区嵌入层面,体现了新生代农民工在融入城市过程中遇到的诸多现实问题,如制度化的社会福利、社会网络异质化、社会关系网络数量和质量、社区内的婚姻机会、丰富的精神文化生活、良好的居住环境等。②量表也能反映农民工之间的代际差异。第一代农民工的打工动机主要是为了增加个人收入,而新生代农民工不仅通过工作寻求经济网络的嵌入,同时追求心理网络和社会关系网络的嵌入,希望获得真正意义的市民化,其外出工作动机逐渐从经济型转变为发展型,从生存型转变为生活型,对尊严、公平、生活意义等方面的需求更为显著。③该内容结构具有一定的拓展性。由于城乡、沿海和内地发展的不均衡,在我国,存在着数量庞大的城市新移民群体,这其中既有就業层次较高的白领员工、大学毕業生员工和高技能工人,也有就業层次较低的农民工群体。远离家乡、在异地工作和生活,是这个群体共同的特征,其工作嵌入与本地员工将存在着明显的差异。量表对后续针对城市新移民员工的研究将具有一定的参考价值。

进一步研究表明,组织嵌入和社区嵌入对新生代农民工回乡工作意愿均具有显著负向影响,说明该量表具有较好的效标关联效度。同时研究显示,社区嵌入在组织嵌入和回乡工作意愿之间具有显著的正向调节作用。该结果表明,社区嵌入与组织嵌入之间存在着相互促进的关系,新生代农民工的保留效果不仅受组织内部管理的影响,同时也取决于组织外部的社区环境,并且社区嵌入在保留新生代农民工方面将发挥着越来越重要的作用。受成本因素影响,沿海地区企業提高工资水平的空间比较有限,试图大幅增长新生代农民工经济性嵌入程度的困难较大。在这种情况下,一方面,沿海企業应该通过業务调整、技术和管理创新以增强竞争优势,为提升新生代农民工的经济待遇创造物质基础,同时应着力于改善管理理念和制度,构建人本、尊重、关爱的企業文化,为其营造良好的工作氛围和发展机会。在社区层面,政府部门则应致力于供给有利于新生代农民工市民化的制度创新,如农民工的户籍制度、就業制度、社会保障制度、劳动权益保护制度、职業技能培训制度、社区管理制度等,将次属的、非正规劳动力市场上的农民工转变为首属的、正规的劳动力市场上的产業工人,促进其由农民转变为市民,才能真正解决其社区嵌入程度低的问题。除此之外,新生代农民工也应注重自身的人力资本、社会资本积累,提高自身素质,从意识形态、生活方式和行为方式等方面融入城市社会。

总的来说,首先,本研究结合我国城乡二元结构的实际情况,以新生代农民工这一特定职業群体作为研究对象,讨论其工作嵌入问题,体现了该研究领域中调查样本多样化、丰富化的趋势。其次,在以往的国内研究中,较少专门研究流动人群(如农民工)的工作嵌入问题,而较多研究高稳定性的正规就業群体,因此,社区嵌入常被认为与主动离职之间关联性较低,故应该更多考虑组织嵌入因素。本研究则表明,就新生代农民工群体而言,组织嵌入和社区嵌入均对回乡工作意愿具有显著的负向影响,这是对以往研究结论的一个补充和完善。该结论也进一步表明,本地员工和外来员工的类型在工作嵌入(尤其是社区嵌入)与主动离职之间具有某种调节作用,两者是否产生影响以及影响的强弱应该具有一定的前提条件。再次,本研究将新生代农民工组织融合和社区融合纳入同一个理论构念——工作嵌入,讨论其内容结构、对回乡工作意愿的影响、组织嵌入和社区嵌入之间的调节作用,是一种比较新的研究视角,对企業、社区、政府测量新生代农民工工作嵌入程度,并在此基础上,制定或改善进城务工人员管理政策,降低其回乡工作意愿,具有一定的借鉴意义。

[责任编辑 方志]

嵌入式构建 第6篇

随着信息技术的发展,嵌入式系统技术已经广泛应用于国防、通信、工业控制、消费电子等诸多领域。其中,Linux作为一款开源、成熟且高效稳定的多任务操作系统,先天具有许多不可比拟的优势,已成为目前最具潜力的嵌入式操作系统。众所周知,构建根文件系统对于嵌入式Linux开发至关重要,它是内核启动后加载的第1个文件系统,是决定系统能否正常启动的关键所在。在开发阶段,程序往往需要反复多次的调试,鉴于此,构建基于NFS(Network File System)的根文件系统就尤为重要;这样就免去了对目标开发板的反复烧写,方便地在线对程序进行更改与调试。本文以Busybox软件为基础,介绍了一种实用的NFS根文件系统构建方法。

1 嵌入式根文件系统简介

Linux启动时,第一个必须挂载的就是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会报错进而退出启动。系统成功启动之后,才可以自动或手动挂载其他的文件系统。

Linux系统各个分区存储文件时,需要遵循一定的格式,这种文件格式称为文件系统类型,比如常见的有ext2,ext3,ext4等。在存储设备方面,FLASH是目前嵌入式系统中广泛采用的主流存储设备,它是一种可电擦写的非易失性存储器,具有体积小,功耗低,密度高等优点。目前FLASH中常见的文件系统主要有Cramfs,Jffs2,Yaffs2等。嵌入式Linux基本的根文件目录结构如表1所示。

2 Busybox简介

Busybox常被形象地称为嵌入式Linux系统开发中的“瑞士军刀”,它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具相比较,Busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中已经足够了。它仅用一个可执行文件就可以提供基本的Linux操作系统所需的命令,体积很小,配置起来也很方便。

3 Busybox的编译与安装

3.1 开发环境

基于飞凌OK-2440Ⅲ的硬件平台采用S3C2440芯片,外围包括64 MB的SDRAM内存、128 MB的NAND FLASH,以及4 MB的NOR FLASH。采用宿主机加目标板的开发模式,宿主机的系统是Fedora12,目标板的内核版本是Linux2.6.30.4,Bootloader采用U-boot。

3.2 配置Busybox

Busybox的源码在官方网站www.Busybox.net/下载,然后解压并进行配置安装,具体步骤如下:

在执行make命令之前应该修改顶层Makefile文件(ARCH=arm,CROSS_COMPILE=arm-linux-),也可以在make menuconfig进一步根据自己的需要来灵活配置Busybox。执行完make install命令后会自动在当前目录的_install目录下生成bin,sbin,linuxrc三个文件。

配置界面如图1所示。

4 构建根文件系统

4.1 创建脚本文件

为了简化构建根文件系统的操作,首先进入到开发目录,如下新建一个脚本文件create_myrootfs_bash:

使用命令chmod+x create_myrootfs_bash改变文件的可执行权限,./create_myrootfs_bash运行脚本,就完成了基本根文件系统目录的创建。

4.2 建立系统配置文件inittab,fstab,rcS

4.2.1 创建inittab文件

init进程根据它来创建其他子进程:

4.2.2 rcS文件

脚本文件,可以添加想自动执行的命令:

4.2.3 创建fstab文件

定义系统的各个挂载点,需与实际的系统符合:

4.3 安装动态库

如果Busybox采用动态链接的方式编译,还需要加载器和链接库执行如下命令:

5 NFS的安装与配置

NFS(Network File System)是由SUN公司推出的一种分布式文件系统,它能使用户在使用另外的联网机文件或外设时,与使用本地机一样方便。以root的身份在控制台输入setup,在系统服务选项中选中nfs服务,如图2所示。

配置NFS服务器的共享主目录,注意权限问题:

6 挂载NFS根文件系统

通过串口和RJ45网口连接宿主机与目标开发板,启动超级终端,输入以下命令:

目标板启动后在超级终端中显示的结果如图3所示。可见,NFS根文件系统已经成功加载。

7 结语

对以Busybox制作嵌入式Linux根文件系统的基本方法进行了归纳和总结,进一步给出了基于NFS构建的嵌入式Linux根文件系统的一般方法。利用此法构建出来的NFS根文件系统可以直接用于嵌入式Linux系统的开发,实时方便地对开发程序进行更改和调试,有效地避免了反复对目标开发板的直接烧写,提高了开发效率,缩短了开发周期。

摘要:在嵌入式Linux系统开发过程中,根文件系统是构建嵌入式Linux系统的重要组成部分。为了方便和简化嵌入式Linux开发过程中的调试过程,主要研究了如何使用Busybox构建出基本的嵌入式Linux根文件系统,包括Busybox的配置、编译和安装。在此基础上,进一步构建出基于NFS的嵌入式Linux根文件系统,并给出了启动脚本和配置文件。这种根文件系统可以方便地在线更改、调试程序,降低了嵌入式系统的开发门槛。

关键词:NFS,Busybox,根文件系统,S3C2440,Linux

参考文献

[1]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.

[2]华清远见嵌入式培训中心.嵌入式Linux基础教程[M].北京:人民邮电出版社,2009.

[3]华清远见嵌入式培训中心.嵌入式Linux应用程序开发标准教程[M].2版.北京:人民邮电出版社,2009.

[4]陈卓,王田,梁新元.嵌入式系统开发[M].北京:电子工业出版社,2009.

[5]保定飞凌嵌入式技术有限公司.OK2440-Ⅲ用户手册[EB/OL].[2009-09-22].http://download.csaln.net/detail/gooogleman/2840871.

[6]LABROSSE Jean,陈慧.嵌入式软件[M].北京:电子工业出版社,2009.

[7]孙天泽,袁文菊.嵌入式设计及Linux驱动开发指南:基于ARM9处理器[M].2版.北京:电子工业出版社,2007.

[8]刘淼.嵌入式系统接口设计与Linux驱动程序开发[M].北京:北京航空航天大学出版社,2006.

嵌入式构建 第7篇

1、选择合适的实验教学平台

选择合适的实验平台、操作系统以及适宜的教学与实验内容在教学中起着非常关键的作用。综合考虑到现今市场对嵌入式人才的要求, 笔者对实验教学平台的构成有如下经验。

1) 实验平台的选择。众所周知, 一个优秀的实验平台必须具备丰富的硬件资源, 这样可以使我们在教学示范和实验中的内容选择不受硬件方面的限制[2]。基于此, 我们选择了广东省嵌入式软件公共技术中心所开发GEC2440B教学实验平台。平台选择三星公司的S3C2440AL-40, 配有64M的SDRAM及64M的Flash, 具备触摸屏、键盘、蓝牙模块以及SPI、USB、CAN接口等, 并使用ADS1.2集成开发环境编写和调试的程序。这样就构成一个资源丰富的实验教学平台。

2) 选择合适的RTOS。目前市面上有不少流行的优秀的嵌入式操作系统, 例如Linux, Vx Works, Win CE, μC/OS-II等等。面对这么多的操作系统, 我们从学校的实际情况出发, 结合当今的社会需求对诸多嵌入式操作系统进行了选择。Vx Works和Windows CE价格昂贵并且不提供源代码, 故我们不考虑。μC/OS-Ⅱ优点突出, 如公开源代码, 具有较好的可移植性、实用性和可靠性等, 但是其仅是一个实时内核, 还有很多工作需要用户自己去完成, 教学的难度非常大, 且市场占有率并不高, 所以考虑到高职的教学情况, 我们也不选择μC/OS-Ⅱ系统。而嵌入式Linux市场占有率非常高 (据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%) , 且其系统稳定、源代码公开, 人们可以任意修改, 并且查错容易。此外, 嵌入式Linux有大量的应用软件可用, 其中大部分是开放源代码和免费的, 还有大量的免费的优秀的开放源代码的开发工具, 软件的开发和维护成本很低, 具备优秀的网络功能, 内核精悍且运行所需资源少, 支持的硬件数量庞大, 而且各种硬件的驱动程序源代码都可以得到, 为用户编写自己专有硬件的驱动程序带来很大方便。可见, 对于嵌入式RTOS而言, 只要我们处理好了教学方面内容上的问题, 选择Linux无疑是性价比最高的选择。

3) 实验内容的选择。针对高职的教学情况, 为避免学生学习起来就感到无所适从, 嵌入式系统课程的教学内容和实验内容必须符合该阶段学生的认知规律。我们对内容的选择原则是由小到大、由浅到深、由单一到综合。基于该试验平台, 我们选择了有代表性的实验内容 (如表1所示) 。教学内容也围绕着实验内容来设计。

2、注重教学方法

1) 使用多种教学手段, 提高教学效率。我们必须采用多媒体进行教学, 并在课堂教学中进行换位思考, 充分引导学生的同步思维, 提供教学效率。在教学内容中涉及到的重点和难点, 必须加入必需的教学互动, 并注意将常见、典型的问题反映的教学中。此外, 还应在教学过程中利用示范性教学手段, 特别是在实验过程中, 需强调实验方法和步骤的设计, 采用灵活的挂箱组合式实验设计方法。

2) 开放嵌入式实验室, 建立兴趣小组。要真正的学好《嵌入式技术与应用》这门课程, 并达到学以致用的目标, 单单依靠课内的学时是远远不够的[3]。我校经过研究, 特别的制定了在课余实验室开放的时间, 这样就增加了学生课外自主实践的机会。其次, 我们认为建立学习兴趣小组必不可少, 我们一般定为3~4人建一个小组。开放嵌入式实验室为对嵌入式技术感兴趣的学生提供了一个沟通交流、学习提高的良好环境, 有利于营造互相帮助、老手带新手, 新手促老手的友好氛围。兴趣小组以"创新、协作、务实"为理念, 教师当然也应对兴趣小组进行指导, 坚持以点带面进而全面激发学生的学习热情。

3) 充分利用课程设计及毕业设计, 鼓励并大力支持学生参加各种比赛。在课程设计和毕业设计中, 我们特别布置了诸如"公车系统模拟控制模拟系统"、"智能抄表器"、"嵌入式智能家居控制器"、"智能楼宇控制"设计等项目, 这些项目要求学生必须从软件和硬件系统出发, 能较好地提高了学生嵌入式开发的能力。与此同时, 我们大力鼓励和支持学生参加各种比赛, 如"全国大学生电子设计大赛"等活动。实践证明, 我们所采用的方法确实激发了学生的兴趣, 提高了学生自主学习的积极性, 甚至对毕业生的就业也有很大的帮助。

3、结束语

本文结合作者在嵌入式系统的课程教学与建设中的体会, 重点的介绍了嵌入式系统教学的课程体系设置的经验, 包括实验平台建立, 课程内容选择等, 并探讨了嵌入式系统课程的教学方法。通过在岭南职业技术学院的教学实践, 嵌入式系统课程教学取得了良好的效果。

参考文献

[1]田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天出版社, 2005.

[2]周金和.电子信息工程专业嵌入式教学改革尝试[J].计算机教育, 2007 (6) :43-45.

嵌入式构建 第8篇

1 嵌入式芯片的应用优势

嵌入式系统是根据特定用户群体的使用需求,在高新计算机技术、电子科学技术及半导体设备应用技术等基础上,使用嵌入式芯片实现各项指令任务的计算机应用系统。嵌入式芯片是嵌入式系统的关键组分,它在嵌入式系统中的作用与通用CPU相同。相较于传统系统而言,将嵌入式芯片应用于计算机系统的优势主要表现为:

(1)嵌入式芯片可为多个任务的同时进行提供良好的运作平台,尽可能地缩短不同程序任务间的中断切换时间,最大限度地缩短系统内部各项指令的响应时间。

(2)嵌入式芯片具有功能清晰的模块化结构,其存储保护功能远高于一般水平。

(3)嵌入式芯片在计算机系统中,与其相关的处理器结构具有强度的系统扩展性能,可根据用户的安全性需求,在最短时间内开发出合乎要求的功能模块。

(4)嵌入式芯片多应用于便携式设备,芯片功率普遍较低。

因此,将嵌入式芯片应用于网络安全设备中,可显著加快安全设备的运行速度,提高网络安全设备的使用性能,从而为用户的网络使用提供更优质的体验。嵌入式芯片具有较高的实际应用价值,应用前景相当可观。

2 嵌入式芯片在网络安全设备中应用的技术

2.1 嵌入式智能岛技术

目前最常见的嵌入式系统为Linux操作系统,它具有优良的内核管理功能,还可为后续程序的编程修改提供相关的工具与数据库支持,且该系统的操作方法简单易行,在实际使用过程中备受推崇。现以Linux系统为基础,探讨嵌入式智能岛技术的实现过程及其可行性。

嵌入式智能岛技术是在嵌入式芯片内部功能的基础上,加设网络控制程序,最大限度地确保网络使用安全。用户可直接将嵌入式芯片应用于网络安全设备,从而达到安全用网的目的。

通过这一技术,未联网用户或内部网络用户在访问外部网络时,用户使用网络的相关指令将由浏览器发送至嵌入式芯片中的服务器,服务器可自动收集指令,并实现指令处理的智能化运作。同时,智能岛服务器还能对所收集的指令进行集中化处理,对指令中对应的网站点进行全网式搜索,将相关信息进行分类处理,并将合乎安全性要求的信息及其类别导入到芯片内部的数据库中,为后续使用提供便利。

若用户在未联网的情况下使用计算机等设备时,嵌入式智能岛结构中的网络开关可实现内部网络与外部网络的物理隔离,从而有效减轻来自外部网络的病毒或黑客攻击等安全隐患。

2.2 嵌入式防火墙技术

传统防火墙多位于网络入口的控制位置,可很好地抵抗来自外部网络的攻击,但其对内部攻击毫无抵抗能力,具有较强的安全局限性。嵌入式防火墙技术是将防火墙软件通过一定的编程技术写入嵌入式芯片,利用嵌入式芯片实现对整个网络的安全防护。嵌入式防火墙系统由多个内部网络中的客户端和一部集中管理器组成。

通过嵌入式芯片的使用,可很好地对内部网络中的每一客户端实行安全监控,具有过滤和检测进入内网的外部网络数据的作用,从而实现对各用户使用外部网络过程中不安全因素的有效控制。内网中所有的嵌入式芯片均可作为整个嵌入式防火墙的重要组分,通过与集中服务器的联合使用,可清楚明了地进行内部网络的安全管理工作,其具体作用过程为:服务器可通过嵌入式芯片的使用,制定相应的安全管理策略,根据各客户端的使用要求分配相应的安全控制任务。通过嵌入式芯片构建嵌入式防火墙系统,可实现对整个内网中的服务器、各客户端主机等组件在使用过程中的安全防护,进一步确保内网用户的网络使用安全。

利用嵌入式芯片实现嵌入式防火墙的关键技术主要体现在以下几个方面:

(1)利用分割点计算编写区域分割包的

有关算法,对嵌入式防火墙内部的库管理过程进行动态点计算,减小决策树的长度,有效提高防火墙的操作快捷性。

(2)根据用户在内网中的使用等级,编写相对应的策略生成算法,实现对不同用户使用外网的安全监护。

(3)可通过编程技术,创新性地将嵌入式防火墙应用于操作系统的桌面防护中,从硬件和软件两方面对内部网络中的用户进行保护。

此外,在构建嵌入式防火墙系统的同时,应将传统防火墙与嵌入式芯片技术联合使用,进一步提高网络访问的安全性能。

3 结束语

综上所述,嵌入式芯片相较于传统CPU的优势主要有:指令处理速度快、存储保护功能高、便于功能开发及使用功率小。将嵌入式芯片技术应用于网络安全设备的构建工作,是信息时代发展的必然趋势。可应用嵌入式智能岛技术、嵌入式防火墙技术等,将嵌入式芯片应用于网络安全设备的构建过程,从而实现内部网络整体安全性能的提高。因此,编程技术人员应在现有技术基础上,更深入地研究新型编程技术,将嵌入式芯片更好地应用于网络安全控制工作中,从而为用户提供更优质的网络使用体验。

参考文献

[1]王树佳.基于ARM的嵌入式IPv6防火墙研究与设计[D].武汉理工大学,2010.

[2]张媛媛.若干无线嵌入式系统的安全技术研究[D].上海交通大学,2009.

[3]梁亮理.嵌入式IPv6防火墙体系结构研究与设计[J].电脑知识与技术,2009,5(31).

嵌入式构建 第9篇

1 构建平台所用的软硬件配备

1.1 宿主机配置和源代码预备

宿主机主要是用来开发和调试嵌入式系统应用程序的计算机系统。宿主机硬件可以用PC机, 配置Linux操作系统。在构建本嵌入式图像处理平台的过程中需要准备如下源代码:用于生成目标系统的编译器gcc源代码、用于图形界面显示的Qt源代码以及用于图像处理的Open CV源代码。

1.2 建立rootfs目录

将下载的得到的文件解压, 使用如下命令建立相关目录:

1.3 权限环境变量的设置

正确的权限设置是保证正常创建编译环境的重要条件, 编译环境设置权限的基本原则是, 保证用户对所有操作目录及目录下的文件拥有读写的权限[2]。具体设置如下:

2 嵌入式图像处理平台的构建

2.1 嵌入式图像处理平台硬件结构

文章以友善之臂公司生产的Smart210开发板作为硬件平台, 以三星公司的S5PV210嵌入式中央处理器作为核心部件。该款处理器采用了ARM Cortex™-A8内核, ARM V7指令集, 主频可达1GHZ, 具有2000DMIPS的高性能运算能力, 已经被广泛应用于手机和平板等移动多媒体设备上。

2.2 软件平台搭建

软件平台的搭建主要分为操作系统移植、移植Qt和移植Open CV三个部分。在图像处理开发工具上选择了广泛应用的Open CV, 利用该视觉库可以很方便地实现数字图像处理。在显示方面, 选择以支持多平台而著称的Qt图形界面设计工具, 其优点在于一次编写, 随处编译, 已成为图像处理领域强有力的辅助工具。

2.2.1 操作系统移植

嵌入式图像处理平台的搭建的首要步骤为操作系统的选择和移植。嵌入式Linux操作系统作为嵌入式主流操作系统, 其最大的特点是源码公开并且遵循GPL协议。由于嵌入式Linux操作系统支持广泛的硬件、融合了各种强大的应用软件及完善的设备驱动和开发工具, 因此文章选用了嵌入式Linux操作系统进行移植, 其关键在于正确制作根文件系统以启动Linux内核。制作根文件系统的流程, 如图1所示。

2.2.2 图形界面库Qt的移植步骤

2.2.3 计算机开源视觉库Open CV的移植步骤

在进行Open CV的移植时文章提出改用Qt编写图形接口部分, 而不使用Open CV的High GUI库。其原因在于Open CV中的High GUI模块中的函数是基于GTK+的, 主要为了将图像显示在GTK+窗体上, 由于移植GTK+比较复杂, 需要的依赖库比较多, 移植相当繁琐, 容易出错。在嵌入式图像处理开发平台中, 应用程序的开发与GTK+相关性不大, 因此调用Open CV函数编写图像处理程序时, 不采用High GUI中的库函数会使界面的编写更简单。

具体移植步骤如下:

3 嵌入式图像处理平台应用

为了验证嵌入式图像处理平台是否构建成功, 文章设计了人脸识别应用程序进行验证。人脸识别是通过对摄像头获取的视频流数据进行图像处理中的检测定位和特征提取, 从而识别出人脸的具体位置, 并进行在线跟踪。实验中采用基于Open CV的人脸识别分类器, 通过接入的USB摄像头实时监测人脸。

3.1 人脸识别算法

Open CV人脸识别分类器利用Haar-like特征来表示人脸特征[3], 采用积分图作为加速器的方法高效计算人脸特征, 再由Ada Boost迭代学习算法进行特征选择和分类器的训练, 最终实现人脸图像的跟踪识别。对于每一个特征, Adaboost算法根据训练样本的特征值排序, 并计算样本权重, 求得分类误差后得出最优弱分类器, 经过多次循环特征选择能够得到更多的最优弱分类器, 再组合最优弱分类器得到强分类器, 相当于按照弱分类器的错误率加权投票的方式将弱分类器构造为一个强分类器;然后, 将强分类器强强联手串联成一个级联分类器。

3.2 实验结果

实验分为标识人脸和跟踪人脸两方面, 当单个或者多个人脸出现在摄像头前, 显示屏上均能显示并标识人脸, 当人脸从中间分别向两边移动时, 能够实时跟踪人脸。同时, 在本嵌入式图像处理平台上, 检测出人脸的平均时间为300ms, 而在普通的PC机上, 编写同样的算法, 运行也需要150ms的检测时间。在相同的代码下, 本嵌入式平台和普通PC机平台主要参数不同。由该实验可看出, 在本嵌入式平台下, 能够准确的检测到摄像头所拍摄到的人脸, 人脸识别的测试运行也证明了嵌入式图像处理平台的可行性和稳定性。

摘要:文章以ARM Cortex-A8 (S5PV210) 为核心, 构建了一种基于Open CV的嵌入式图像处理平台, 提出在主流的Ubuntu操作系统上交叉编译Qt和Open CV后将其移植到嵌入式Linux操作系统中, 为嵌入式平台下复杂图像处理算法的设计和实现提供了一条有效途径, 降低了开发难度。在此平台上进行的在线人脸识别实验结果表明该平台运行可靠, 功能正常。

关键词:OpenCV,嵌入式,图像处理平台,Qt

参考文献

[1]贾小军, 喻擎苍.基于开源计算机视觉库Open CV的图像处理[J].计算机应用与软件, 2008 (4) :276-278.

[2]宋凯, 严丽平, 甘岚.嵌入式图像处理系统的设计与实现[J].计算机工程与设计, 2009 (19) :4368-4370+4377.

嵌入式构建 第10篇

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁减,适用于应用系统对功能、可靠性、 成本、功耗有严格要求的专用计算机系统,通常由嵌入式微处理器、 外围硬件设备、嵌入式操作系统、及用户应用程序四部分组成,用于实现对其他设备的控制、监视或者管理等功能[1],类似于PC机上的Windows XP系统。嵌入式操作系统是一种更加精简、功能相对完整的操作系统,目前比较流行的嵌入式操作系统主要有Linux,Windows CE,Vxworks,μC/OS-Ⅱ等。Linux操作系统是一个免费并且源代码开放的操作系统,用户可以免费获得Linux源代码,然后根据自己的应用需求对系统进行定制和改造[2]。

本文选用的32位ARM920T内核微处理器是三星公司的S3C2410A-20[3],它可以支持2.4版本和2.6版本内核的Linux操作系统。本文把2.4版本内核的Linux操作系统嵌入到ARM体系结构中,并在此基础上搭建嵌入式开发平台,然后进行各种应用程序的开发。

1 硬件平台

本文使用的硬件平台是杭州立宇太电子有限公司的ARMSYS系列嵌入式系统开发板。它使用三星公司的S3C2410A处理器。S3C2410A是一款包含ARM920T内核的16/32位精简指令集计算机(RISC)嵌人式微处理器。ARM920T核由ARM9TDMI、存储管理单元(MMU)和高速缓存3部分组成。该处理器主要面向手持设备以及高性价比、 低功耗的应用,运行频率可达203 MHz,可支持ARM-Linux,Windows CE等操作系统的嵌入式硬件平台。

ARMSYS2410开发板的硬件资源主要由CPU、存储器、串口、2个USB Host A型接口、1个USB Slave B型接口、以太网控制器CS8900及接口、JTAG调试口、LCD(夜晶显示屏)触摸屏接口,音频接口、电源复位等电路组成。其中,CPU采用S3C2410A;存储器由1片64 MB的SDRAM,1片1 MB的NOR FLASH和1片64 MB NADN FLASH构成;2个串口为COM0和COM1。

2 嵌入式Linux系统的移植

有些操作系统如Linux,Windows CE等经过移植后可以运行在不同的硬件平台上。移植就是把某一个平台上的代码运行在其他平台上的过程。

2.1 U-Boot的移植

一般而言,计算机系统都需要有启动的引导程序。PC机的引导代码就是BIOS引导程序,而嵌入式Linux系统的引导加载程序称之为Bootloader。Bootloader是系统加电后运行的第一段代码,它的主要运行任务就是将内核映像从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统[4]。通过Bootloader小程序可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境[3]。Uboot是最常见的Bootloader,主要用来完成系统环境的初始化,将后期执行代码复制到SDRAM空间,为Linux内核的运行准备好条件。

2.1.1 Windows 和Linux系统的文件共享

实现Windows下文件到Linux系统的共享方法有很多种,比如使用Samba,硬盘挂载mount和直接使用虚拟机的Shared Folders等。在PC上安装一个虚拟机VMware和Red Hat Linux,虚拟机的好处就是可以在虚拟机中打开操作系统Linux,实现Windows XP系统下资源的共享和Linux操作系统图像界面的全屏化,共享的文件可以在/mnt/hgfs目录下看到[5]。

2.1.2 配置和编译U-boot

不同硬件板的U-boot配置也稍有不同。移植U-boot主要包括添加开发板硬件相关的文件等。为了不改动原来的smkd2410.h文件,在uboot2410/include/configs/下的smdk2410.h复制一份并更名为armsys2410.h,可以通过armsys2410.h来修改U-boot软硬件配置,包括硬件板直接相关联的CPU类型、开发板IP、波特率等。设置所需要的配置后就能编译U-boot。U-boot编译的具体过程如下:

(1) 将板子取名为armsys2410,在Makefile中加入armsys2410_config:unconfig@./mkconfig $(@:_config=) arm arm920t armsys2410 NULL s3c24x0.

(2) 在/u-boot_2410/board/下建立armsys2410目录,并把/board/smdk2410/下的文件拷贝到/board/armsys2410下,将smdk2410.c更名为armsys2410.c

(3) 编译U-boot,即可生成u-boot.bin可执行文件,具体的执行命令如下:

make smdk2410_config

make all ARCH = arm

(4)下载u-boot.bin到S3C2410开发平台的NAND FLASH,成功下载后开发板上电就能从超级终端上看到刚下载的U-boot启动程序。启动过程中按下任意键,出现如图1所示的启动画面。

2.2 zImage的移植

Linux内核主要由以下5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。内核结构中的几个主要目录存放着大量的源代码等信息[3]。ARMSYS2410开发板的CPU内核可以移植2.4和2.6版本的Linux内核,本文选用2.4版本的Linux内核。对Linux内核的移植是一个庞大的工程,首先要对其源码结构有清楚的认识,并能深刻理解其中的源代码,然后在此基础上修改或编写需要的源代码,以达到预期的目的。Linux内核目录[2]如下:/Documentation:存放了许多的文档/arch:不同体系结构特定的内核代码;/drivers:设备的驱动程序; /fs:文件系统代码;/include:相关库文件;/init:内核的初始化代码;/ipc:进程通信代码;/kernel:主内核代码;/lib:存放高速体系结构特有的和通用函数的实现;/mm:内存管理代码;/net:网络相关代码;/scripts:存放了配置内核的一些脚本文件。

2.2.1 交叉编译环境

开发板是ARM9处理器,开发板平台上没有编译器,只负责存放编译好的目标代码,并能够执行。源代码的编译器是存放主机Linux系统上的,为了使在主机Linux系统上编译的代码能够在ARM9处理器中执行,必须有一交叉编译工具。交叉编译器和链接器是在宿主机上运行的,并且能够生成在目标机上直接运行的二进制可执行文件。安装cross-2.95.3.tar.bz2,并设置好交叉编译器的启动路径,完成交叉编译环境的建立,上文编译u-boot.bin时已经用到arm-linux-gcc。

2.2.2 配置和编译Linux内核

tar zxvf kernel_armsys_070730.tar.gz(解压内核文件),当出现文件夹/kernel时,就能看到上述几个目录。每个目录下都有很多的相关模块,通过筛选和裁剪,选择所需要的极少部分即可。开发板的内存容量比较有限,而且有很多的用途,不能一味地去装很大的内核,所以只有通过适当地裁剪才能真正达到移植的目的。

配置内核:make menuconfig,对开发板做进一步的裁剪,Load an Alternate Configuration File,选择一个ARMSYS2410板的内核配置文件作为模板:Armsys2410_cfg;选择适合LCD和触摸屏规格的配置,Console drivers→Frame-buffer support→S3C2410 Board LCD Display Size→320x240;触摸屏选择:Character devices→S3C2410 TOUCHSCREEN Size→X>Y,表示横放模式。为了使嵌入式目标系统的Linux内核支持NFS客户端,在进行配置内核时必须选择File systems->Network File Systems->Provide NFSv3 client support 和NFS file system support。做这样简单的配置之后就可以进行编译了,make clean,make dep,创建内核的依赖关系;make zImage,创建内核镜像文件,编译成功后可得到刚裁剪配置的Linux内核压缩映像文件zImage。

2.2.3 zImage的下载

系统映像的下载只能由 bootloader 提供。通过bootloader 提供的命令行或者交互Shell界面可以指定内核映像和文件系统映像的下载位置,也可以检查目标板上内存地址中的内容[6]。使用U-boot下载Linux内核的最快捷方法是通过网络传输。TFTP是TCP/IP协议族中一个用来在客户机与服务器之间进行简单文件传输的协议,用于提供不复杂、开销不大的文件传输服务,它基于UDP协议实现。U-boot支持TFTP协议,因此可以利用网络接口,使用tftp传输的方法来下载zImage,在根目录下建一个/tftpboot目录,把zImage拷到/tftpboot目录下,启动tftp:/etc/init.d/vsftpd start。假设PC主机设IP为10.192.3.100,则开发板的设置如下:

使用ping命令查看是否与主机连通,若显示host 10.192.3.100 is alive,说明宿主机已经与目标机建立链接。传输zImage到开发板的内存为:

SMDK2410 # tftp 30000000 zImage ;映像文件zImage传送到暂存地址0x30000000

SMDK2410 # nandw c e0000 30000000 ;写入内核的起始块号为c的NAND FLASH

这样就可以把zImage固化到开发板的内存中,通过boot命令即可启动内核。

2.3 文件系统的移植

文件系统是操作系统中用来管理用户文件的内核软件层。根文件系统是Linux系统的核心部分,包括系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读/写结果的区域。在Linux系统启动时,首先完成内核安装及环境初始化,最后寻找一个文件系统作为根文件系统被加载。嵌入式系统中通常可以选择的根文件系统有:Romfs,Cramfs,Ramfs,YAFFS,JFFS和JFFS2等。本文使用的YAFFS是专为NAND FLASH存储器设计的嵌入式文件系统,适用于大容量的存储设备,YAFFS 是可读写的文件系统,而且保存在文件系统的文件和设置在掉电后不会丢失[1,2]。

U-boot也支持nfs挂载功能,把开发板提供的root-armsys-nfs-050801.tgz放到/armsys2410目录下,解压后的文件名更改为root,这是网络文件系统。在/armsys2410/root/bin/目录下有一个用于下载根文件系统到NAND FLASH的下载工具Writerootfs。把根文件系统压缩包root_armsys_l35t32.tgz拷到在/armsys2410/root目录下,这个压缩包就是用于固化在NAND FLASH上的根文系统YAFFS。

(1) 关闭Windows XP和Linux系统的防火墙,设置文件系统的nfs挂载,在宿主机上先启动NFS服务:/etc/rc.d/init.d/nfs start。设置服务器的共享目录,编辑文件/etc/exports,在文件中添加内容:/armsys2410/root *(rw,sync,no_root_squash),然后保存退出。其中:/armsys2410/root代表要共享输出的root文件系统的共享目录;*代表所有客户机都可以挂载次文件系统;rw代表客户机可以读写许可地挂载它们的根文件系统;no_root_squash表示允许客户机以主机上的root身份挂载根文件系统[2]。

(2) 开发板的启动参数设置:setenv linux_arg root=/dev/nfs init=/linuxrc nfsroot=10.192.3.100:/armsys2410/root ip=10.192.3.200:10.192.3.100:10.192.3.1:255.255.255.0:jmaylin:eth0:off console=ttyS0。它说明宿主机挂载在目标机上的目录是/armsys2410/root。

(3) 重启开发板,看到Welcome to NFS root file system!说明成功挂载主机目录/armsys2410/root。使用Writerootfs命令开始下载文件系统root_armsys_l35t32.tgz,该文件系统集成了Qtoqia等应用程序,开发板上电后,除了进入文件系统外,还在LCD上显示Qtoqia应用程序图形界面。

3 嵌入式Linux应用程序的开发

经过上面的过程,一个嵌入式开发平台基本搭建完成。在这个平台上就能进行各种应用程序的开发。基于ARMSYS2410开发板,其源程序的编写、编译调试等过程都在主机上进行,最后再把编译生成的可执行文件固化到开发板上去运行,下面讨论几种调试方法。

3.1 调试方法

(1) Nfs挂载

在配置内核的时候,选择选项File systems→Network File Systems→Provide NFSv3 client support 和NFS filesystem support,这样才能保证正常地从开发板的文件系统去挂载主机上的共享目录。然后可以在主机上使用交叉编译工具编译和直接运行,只要把相应的库文件设置好即可。这种方法不用传递可执行文件,即可在开发板的文件系统直接运行主机上的可执行文件,方便快捷,是较为常用的一种调试方法。

(2) ftp传输方法

① 查看主机有没有装ftp服务:

rpm -qa|grep vsftpd,然后启动ftp:/sbin/service vsftpd start。主机上的/var/ftp目录就是ftp的共享目录,把可执行文件(比如hello)放在该目录下。

② 开发板文件系统:

设置开发板的IP,使其与宿主机IP处于同一网段。在开发板的文件系统里ftp登录主机:ftp 10.192.3.100,使用匿名登录,显示主机共享/var/ftp目录下的hello可执行文件,下载可执行文件到开发板的文件系统:ftp>get hello。通常,使用这种方法还要修改可执行文件的执行模式。

(3) U盘挂载

可以把在主机上可执行文件hello拷到U盘里面,利用开发板的USB HOST端口把U盘挂载到板上,然后拷贝U盘里的hello到文件系统里执行。

(4) 整体打包

上面几种方法都是在已有的文件系统上操作的,整体打包的方法是对预下载的整个文件系统进行编辑。加载的文件系统YAFFS是压缩格式的root_armsys.tgz,只有当开发板上电启动后,才把根文件系统解压出来。在主机Linux系统/armsys2410目录下,新建一个test文件夹,把root_armsys.tgz拷到/test目录下并解压,再把应用程序的可执行文件放到/test目录下,重新把所有文件打包成root_armsys.tgz:tar -czvf root_armsys.tgz ./* ,再一次加载到NAND FLASH中,更新原来的文件系统。这种方法是直接对整个根文件系统进行编辑,适用于在开发文件系统时使用,但是每次都要重新下载整个文件系统,比较繁琐。

3.2 Qtopia应用程序

Qt/Embedded是Trolltech公司开发的面向嵌入式系统的Qt版本,2000年11月发布了第一个Qt/E版本,而Qtopia则是构建于Qt/E之上的类似桌面系统的应用环境,包括PDA和手机等掌上系统常见的功能,如:电话簿、图像浏览、Media播放器、日历等[6]。Qt应用程序实现的是对静态图像的显示及其形态的处理操作[7]。

为了开发和调试Qtopia应用程序,必须安装基于PC和ARM的Qt开发环境。下面以一个简单的菜单程序为例来说明Qtopia应用程序的开发过程。程序开发流程如图2所示。

(1) 使用基于PC的Qt开发环境编译

在建立基于PC的Qt开发环境时,需要编辑/etc/ld.so.conf,使得在源程序编译链接过程中能找到相应的库文件:/armsys2410/qt_x86/qt/lib和/armsys2410/qt_x86/qtopia/lib。保存退出后激活设置ldconfig。当用完库后可以把/etc/ld.so.conf改回来,不然会影响系统上其他应用程序的启动,加上“#”将其注释掉。设置基于PC的Qt开发环境的环境变量,保证编译的正确路径:source set-env。主程序源代码main.cpp如下:

利用Qt环境调试过程:

① 产生工程文件:progen -t app.t -o main.pro;

② 产生Makefile文件:tmake -o Makefile main.pro,修改Makefile中的lib,加链接库-lm lstdc++即可;

③ 运行make产生menu的可执行文件;

④ 打开虚拟帧缓存:qvfb &,运行可执行文件menu:./menu -qws。

(2) 使用基于开发板的Qt开发环境编译

设置基于ARM的Qt开发环境的环境变量:source set-env。为了能生成可在目标板上运行的可执行文件,需要把生成Makefile文件中的编译器、链接器gcc,g++分别改为arm-linux-gcc和arm-linux-g++,其他步骤同上。最后选择一种文件传输办法,把menu送到ARM板上运行,执行界面如图3所示。

4 结 语

本文在分析ARM和Linux特点的基础上,详细介绍了Linux系统移植的各个部分,其中包括U-boot,zImage和YAFFS文件系统的具体操作过程。由此构建了嵌入式Linux开发系统平台,指出Linux移植过程中系统的精简度、安全性、稳定性等方面均需要开发人员做进一步的考虑和研究。 给出了几种常见的嵌入式开发的调试方法,并进行简单的讨论和比较。最后通过调试和编译简单的Qtopia应用程序,说明了嵌入式应用程序的开发过程,为开发实际应用程序和驱动程序奠定了基础。

参考文献

[1]孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发指南——基于ARM9处理器[M].北京:电子工业出版社,2005.

[2]王黎明,陈双桥,闫晓玲,等.ARM9嵌入式系统开发与实践[M].北京:北京航空航天大学出版社,2008.

[3]Samsung Electronic.User′s mannual S3C2410X 32Bit RISC mi-croprocessor[M].South Korea:Samsung Electronic,2003.

[4]叶林,方建军.基于ARM9嵌入式系统的BootLoader设计[J].科技信息,2009(11):36-37.

[5]邹颖婷,李绍荣.ARM9上的嵌入式Linux系统移植[J].自动化技术与应用,2009,28(6):43-45.

[6]刘文峰,李程院,李善平.嵌入式Linux操作系统的研究[J].浙江大学学报:工学版,2004,38(4):447-452.

[7]刘福才,赵佳伟,汤丽娜.基于嵌入式Linux系统的Qt/Em-bedded图像处理界面开发[J].计算机应用与软件,2009,26(11):116-117,149.

[8]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.

[9]邹思轶.嵌入式Linux设计与应用[M].北京:清华大学出版社,2002.

上一篇:文学翻译中的异化翻译下一篇:基层农村民主政治发展