基于ARM的物联网温湿度采集节点设计与实现

2014-07-24 07:18李灏杨海波
现代电子技术 2014年14期
关键词:物联网

李灏+杨海波

摘 要: 嵌入式系统启动代码的分析与移植以及嵌入式操作系统内核的移植是整个嵌入式系统开发中最重要的环节之一。在分析嵌入式系统架构以及相应开发流程的基础上,结合温湿度控制功能需求,采用ARM S3C2440处理器的嵌入式系统底层启动代码与操作系统的设计方案,实现向应用层提供底层服务功能,编译出的U?Boot与Linux内核。最后进行了系统测试,在ARM平台上运行良好。

关键词: 物联网; 温湿度数据采集; U?Boot移植; Linux内核; 根文件系统

中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2014)14?0132?03

Design and realization of IOT temperature and humidity data collection points based on ARM

LI Hao, YANG Hai?bo

(Tianjin Ruihe Tianfu Science & Technology Co., Ltd, Tianjin 300384, China; Tianjin Univercity of Science & Technology, Tianjin 300222, China)

Abstract: The analysis and transplantation of embedded system startup code, and the transplantation of embedded operating system kernel are the most important links in the development of a whole embedded system. Based on the analysis of architecture and developing flow of embedded system, the design scheme of boot startup code and operation system of embedded system with ARM S3C2440 processor is adopted according to the requirement of temperature and humidity control functions to provide the underlying service functions for application level, and compile u?boot and Linux kernel. The system ran well on the ARM platform.

Keywords: IOT; temperature and humidity data acquisition; u?boot transplant; Linux kernel; root file system

0 引 言

近年来,随着国内外对食品安全的日益重视和食品连锁经销体系的兴起,冷链物流急骤升温,成为人们关注的焦点。物联网(Internet of Things,IoT)的概念最早是由麻省理工学院(MIT)于1999年提出的,目前已发展到通过射频识别、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,将任何物品与互联网连接起来,进行信息交换和通信,实现智能化识别、定位、跟踪、监控和管理的一种网络。物联网在物流、监控、智能家居、交通等行业得到了广泛的应用。

为保持农产品冷链物流质量,必须对生鲜农产品在冷链环境下进行全程安全管理。建立一套针对农产品冷链物流各环节的信息实时采集系统是保证食品质量安全控制的基础,以实现对冷藏冷冻类农产品质量安全的动态追踪和管理,最大程度地保证产品品质和质量安全。为此,建立可靠、实时的作业过程信息采集系统是十分必要的,这也是物联网中的感知层。S3C2440是Samsung公司开发的基于ARM920T的处理器,其主频为400 MHz,最高可达533 MHz,采用16/32位ARM920TRISC核心,批处理数据能力优于8位的单片机,并支持以太网卡,轻松实现网络功能,开发技术成熟、价格低廉、应用广泛。为此,本文选择S3C2440处理器为核心开发用于冷链的温湿度监测系统。

1 开发与测试环境搭建

以S3C2440开发板作为硬件实验平台,使用ubuntu 9.10作为嵌入式Linux操作系统,U?Boot 1.1.6作为BootLoader,Linux?2.6.22.6作为内核,gcc?3.4.5以及glibc?2.3.6作为交叉编译工具完成U?Boot的移植。交叉编译链工具是由交叉编译器(arm?linux?gcc)、供ARM平台使用的C库(glibc)以及辅助的二进制工具binutils(包括arm?linux?readelf、arm?linux?objcopy等)组成[1]。鉴于这三者源代码都是独立开发和维护的,单独构造这三个部分比较复杂,因此直接使用成品的交叉编译工具链。

2 整体方案设计实现

本文以成熟的S3C2410相关代码为参照基线[2],通过剖析Bootloader,Linux内核和根文件系统,比对S3C2440与S3C2410的不同,制定出软件系统的实现方案。具体框架如图1所示。

图1 软件系统实现框架图

2.1 Linux系统结构

Linux是目前自由操作系统内核之一,用C语言写成的,是一个类Unix操作系统,主要提供硬件抽象、磁盘及文件系统控制、多任务等功能[3]。一个基于Linux内核的完整操作系统其体系结构如图2所示[4]。

图2 Linux系统体系结构图

常用的嵌入式Linux文件系统有RomFS,CRAMFS,Jffs2,Yaffs等。其中,Jffs2文件系统专门为FLASH芯片创建,具备更好的内存管理,提供了比Ext2文件系统更好的掉电保护性能[5]。Yaffs文件系统是专门为NAND FLASH设计的日志文件系统,适合大容量的NAND FLASH,同Jffs2相比,占用的RAM空间更少,但没有被集成进入内核,使用时须打内核补丁[6]。

2.2 Linux启动过程分析

嵌入式系统加电后,首先启动BootLoader,完成包括硬件设备CPU、SDRAM、FLASH、串口等在内的系统初始化和操作系统的加载,建立内存空间的映射图,为最终调用操作系统准备好相应的环境[7]。完成BootLoader任务后,即接收用户从串口输入的命令,然后进行相应的工作。当用户输入启动Linux的命令时,BootLoader会将Kernel映像(ZImage)从NAND FLASH上读到RAM空间,并设置相应的内核启动参数而调用内核代码。

U?Boot是Universal Boot Loader的简称,不仅对PowerPC,MIPS,x86,ARM,NIOS,XScale等类型CPU体系兼容与支持,而且支持OpenBSD,NetBSD,FreeBSD,4.4BSD,Linux,SVR4,Esix,Solaris,Irix,SCO,Dell, NCR,VxWorks,LynxOS,pSOS,QNX,RTEMS,ARTOS等系统[8],选用U?Boot构建ARM S3C2440下的BootLoader具有广泛的适用性与经济性,其运行过程分为两个过程,具体如图3所示。

图3 u?boot启动流程图

2.3 基于S3C2440开发板的u?boot移植

以现有与S3C2440结构相似的S3C2410 U?Boot程序目录为蓝本[9],依照:在board目录中添加目录my244 →复制smdk2410中的全部内容到my2440→修改my2440目录下的文件名smdk2410.c为my2440.c→将顶层目录下的makefile文件内容“COBJS:= smdk2410.o flash.o”修改为“COBJS:=my2440.o flash.o”→在include/configs目录下增加头文件my2440.h→打开顶层makefile文件,模仿smdk2410_config增加新的目标my2440_config→对my2440_config进行再配置等步骤顺序在根目录下生成U?Boot,U?Boot.bin U?Boot.map和U?Boot.srec四个文件,然后再进行以图4所示的步骤进行定制性修改。最后,使用make编译U?Boot便得到支持S3C2440的U?Boot.bin,至此完成U?Boot的全部移植工作,见图5。

图4 定制性修改步骤

图5 成功编译U?Boot

2.4 Linux内核剪裁与配置

在以root用户身份登录,运行tar xjvf linux?2.6.22.6.tar.bz2 –C /home/mz/linux后得到目录linux?2.6.22.6后,对目录中的相关文件执行图6所示过程。

图6 执行相关文件

完成以上步骤后,在终端窗口先后执行make zImage 和make uImage命令,便得到arch/arm/boot目录中的内核文件zImage和供U?Boot引导的内核uImage。

3 Linux文件系统Jffs2的制作

首先通过create_rootfs_bash命令在/work目录中建立生成未包括bin、sbin、usr/bin以及usr/sbin四个目录的根文件系统目录的脚本文件[10],再按顺序执行下述步骤:用mknod命令创建 console 设备节点以及null设备节点→建立文件系统的挂载点目录→更改tmp目录的使用权→运行/create_rootfs_bash命令。然后以图7所示步骤完成Linux文件系统Jffs2的制作。

在建立etc目录下的配置文件时,增加如下的初始化脚本inittab文件和profile文件:

#etc/inittab

::sysinit:/etc/init.d/rcS

::askfirst:?/bin/sh

::ctrlaltdel:/sbin/reboot

::shuntdown:/bin/unmounts–a–r

rcS脚本内容如下:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

runlevel=N

prelevel=N

umask 022

export PATH runlevel prelevel

mount –a

mdev –s

/bin/hostname –F /etc/sysconfig/HOSTNAME

profile文件内容如下:

#Ash profile

#vim:syntax=sh

#No core file by defaults

#ulimit –S –c 0>/dev/null 2>&1

USER=′id ?un′

LOGNAME=$USER

PS1=′[\u@\h=W]′

PATH=$PATH

HOSTNAME=′/bin/hostname′

export USER LOGNAME PS1 PATH

图7 Linux文件系统Jffs2的制作步骤

最后将系统根目录下/etc的password、group、shadow文件复制到文件系统下etc的目录下,在/work目录下执行命令:mkfs.jffs2–n–s 2048–e 128KiB–d rootfs–o rootfs.jffs2,最终生成根文件系统的映像文件。

4 结 语

本文从采集终端入手,通过在S3C2440开发板上成功移植Linux底层代码,开发出适宜的温度监控接口,为上层物理系统的搭建提供了经济适用的控制终端,使整个系统架构简洁、配置灵活、功能完善,有较高的性价比,可作为物联网技术在工业上推广应用的一个典型配置单元。

参考文献

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

[2] 刘荣军,张长利,张晓雨.基于 DM9000 的 S3C2410 嵌入式系统的以太网接口设计[J].中国高新技术企业,2008(24):154?155.

[3] [美]哈利南C.嵌入式Linux开发[M].北京:人民邮电出版社,2008.

[4] STEVENS W R, FENNER B, RUDOFF A M. UNIX network programming, Volume1: the sockets networking API [M]. 3rd ed. 北京: 人民邮电出版社,2009.

[5] 孙天泽.嵌入式Linux操作系统[M].北京:人民邮电出版社,2009.

[6] [美]洛夫.Linux系统编程(中文版)[M].南京:东南大学出版社,2009.

[7] LOVE Robert. Linux kernel development [M].3版.北京:机械工业出版社,2011.

[8] 任哲.嵌入式操作系统基础μC/OS和Linux[M].2版.北京:北京航空航天大学出版社,2011.

[9] 杜春雷.ARM体系结构编程[M].北京:清华大学出版社,2011.

[10] 徐英慧,马忠梅,王磊,等.ARM9嵌入式系统设计[M].北京:北京航空航天大学出版社,2010.

#Ash profile

#vim:syntax=sh

#No core file by defaults

#ulimit –S –c 0>/dev/null 2>&1

USER=′id ?un′

LOGNAME=$USER

PS1=′[\u@\h=W]′

PATH=$PATH

HOSTNAME=′/bin/hostname′

export USER LOGNAME PS1 PATH

图7 Linux文件系统Jffs2的制作步骤

最后将系统根目录下/etc的password、group、shadow文件复制到文件系统下etc的目录下,在/work目录下执行命令:mkfs.jffs2–n–s 2048–e 128KiB–d rootfs–o rootfs.jffs2,最终生成根文件系统的映像文件。

4 结 语

本文从采集终端入手,通过在S3C2440开发板上成功移植Linux底层代码,开发出适宜的温度监控接口,为上层物理系统的搭建提供了经济适用的控制终端,使整个系统架构简洁、配置灵活、功能完善,有较高的性价比,可作为物联网技术在工业上推广应用的一个典型配置单元。

参考文献

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

[2] 刘荣军,张长利,张晓雨.基于 DM9000 的 S3C2410 嵌入式系统的以太网接口设计[J].中国高新技术企业,2008(24):154?155.

[3] [美]哈利南C.嵌入式Linux开发[M].北京:人民邮电出版社,2008.

[4] STEVENS W R, FENNER B, RUDOFF A M. UNIX network programming, Volume1: the sockets networking API [M]. 3rd ed. 北京: 人民邮电出版社,2009.

[5] 孙天泽.嵌入式Linux操作系统[M].北京:人民邮电出版社,2009.

[6] [美]洛夫.Linux系统编程(中文版)[M].南京:东南大学出版社,2009.

[7] LOVE Robert. Linux kernel development [M].3版.北京:机械工业出版社,2011.

[8] 任哲.嵌入式操作系统基础μC/OS和Linux[M].2版.北京:北京航空航天大学出版社,2011.

[9] 杜春雷.ARM体系结构编程[M].北京:清华大学出版社,2011.

[10] 徐英慧,马忠梅,王磊,等.ARM9嵌入式系统设计[M].北京:北京航空航天大学出版社,2010.

#Ash profile

#vim:syntax=sh

#No core file by defaults

#ulimit –S –c 0>/dev/null 2>&1

USER=′id ?un′

LOGNAME=$USER

PS1=′[\u@\h=W]′

PATH=$PATH

HOSTNAME=′/bin/hostname′

export USER LOGNAME PS1 PATH

图7 Linux文件系统Jffs2的制作步骤

最后将系统根目录下/etc的password、group、shadow文件复制到文件系统下etc的目录下,在/work目录下执行命令:mkfs.jffs2–n–s 2048–e 128KiB–d rootfs–o rootfs.jffs2,最终生成根文件系统的映像文件。

4 结 语

本文从采集终端入手,通过在S3C2440开发板上成功移植Linux底层代码,开发出适宜的温度监控接口,为上层物理系统的搭建提供了经济适用的控制终端,使整个系统架构简洁、配置灵活、功能完善,有较高的性价比,可作为物联网技术在工业上推广应用的一个典型配置单元。

参考文献

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

[2] 刘荣军,张长利,张晓雨.基于 DM9000 的 S3C2410 嵌入式系统的以太网接口设计[J].中国高新技术企业,2008(24):154?155.

[3] [美]哈利南C.嵌入式Linux开发[M].北京:人民邮电出版社,2008.

[4] STEVENS W R, FENNER B, RUDOFF A M. UNIX network programming, Volume1: the sockets networking API [M]. 3rd ed. 北京: 人民邮电出版社,2009.

[5] 孙天泽.嵌入式Linux操作系统[M].北京:人民邮电出版社,2009.

[6] [美]洛夫.Linux系统编程(中文版)[M].南京:东南大学出版社,2009.

[7] LOVE Robert. Linux kernel development [M].3版.北京:机械工业出版社,2011.

[8] 任哲.嵌入式操作系统基础μC/OS和Linux[M].2版.北京:北京航空航天大学出版社,2011.

[9] 杜春雷.ARM体系结构编程[M].北京:清华大学出版社,2011.

[10] 徐英慧,马忠梅,王磊,等.ARM9嵌入式系统设计[M].北京:北京航空航天大学出版社,2010.

猜你喜欢
物联网
基于物联网的无线测温模块设计
基于物联网ZigBee技术的智能家居监控系统 
基于高职院校物联网技术应用人才培养的思考分析
如何在高校架设学生洗衣服务系统
基于无线组网的智慧公交站点信息系统研究与实践
基于LABVIEW的温室管理系统的研究与设计
论智能油田的发展趋势及必要性
中国或成“物联网”领军者