当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:针对无线传感器网络的结构特点及对无线可移动终端的需求,分析了Linux操作系统的启动过程,提出了无线传 感器网络可移动终端引导程序的设计方法,并对引导程序实现的4个关键环节的配置和设计进行了说明。实际调试结果表明: 引导程序可成功地运行在自主设计的无线终端硬件平台上。

引言

对等网络(Peer-to-Peer, P2P)和自组织网络(Selforganization Network)是目前国际计算机网络技术领域的研究 热点,有别于传统通信网络的Client/Server机制,对等网络 节点之间不仅可以直接通信,而且每个节点都可作为中间节点 为其他节点提供服务,使本不能相互覆盖的2个或多个网络节 点之间实现通信与数据传输。

无线传感器网络作为新一代的传感器网络,充分借鉴了 对等网络技术和自组织网络技术的特点。终端作为网络的实体 和业务的承载体,节点芯片是整个无线传感器网络的基础,网 络及其关键技术的研究应首先搭建网络和业务的承载平台,可 移动终端则成为验证节点芯片移动性、数据传输、覆盖范围 等性能的平台。在实际应用中,基于ARM处理器和嵌入式技 术的无线传感器网络系统在环境监测、医疗监护等领域得到 了广泛的应用。

适用于终端的嵌入式操作系统主要包括Symbian,Windows Mobile,PALM OS48 和 Linux。由于 Linux 具有源代码的开放性和内核的可配置性等特点,因此本设计选择 内核版本2.4的Linux作为终端的操作系统。所设计的移动 终端硬件平台主要由ARM9嵌入式处理器、射频单元(RF)、存储体、音频处理、触摸式液晶屏控制、键盘输入和电源管 理等单元构成,并内置以太网和USB接口。其中,存储体部 分包含CPU片内FLASH、片内SRAM、外置大页面Nand FLASH 以及高速低功耗 PSRAM(Pseudo SRAM)。

BootLoader是终端上电或复位之后先于操作系统内核运 行的引导程序。BootLoader与硬件息息相关,硬件环境不同,BootLoader也不同,要建立一个通用的BootLoader几乎是不 可能的。基于该思路,本文重点阐述了无线传感器网络移动终 端引导程序(BootLoader)的设计实现。

1引导程序设计流程

引导程序设计流程包括系统配置、初始化与参数配置、装载映像文件、内核的引导及系统初始化、Linux内核启动。程序设计采用汇编语言与C语言混合方式:其中,汇编部分 实现CPU的初始化、存储空间初始化等;C语言部分则完成 加载模式的判决、内核映像文件装载等,图1所示是其工作流 程图。引导程序支持加载模式和下载模式两种工作模式,其中,启动加载为默认模式。

基于Linux的无线传感器网络引导程序的设计

1.1 系统配置

系统配置包括终端硬件平台设计、节点芯片驱动程序、大页面Flash的驱动程序设计、系统启动方式选择、Linux内 核和文件系统映像文件的编译、内核加载方式配置、存储空 间配置等工作。编译完成的引导程序和映像文件可烧写至外 部Nand Flash。重新上电后,根据配置管脚的状态,处理器 自动将引导程序的启动代码从Nand Flash前4 KB空间拷贝到 处理器Nand Flash控制器内置SRAM(Steppingstone)中运行, 同时引导完成系统的初始化和镜像文件的加载。

1.2硬件系统初始化与参数配置阶段

该阶段工作是完成系统硬件部分的初始化,包括屏蔽所 有的中断、设置CPU速度和时钟频率、存储体初始化、Nand Flash初始化、GPIO端口和UART初始化、关闭CPU内部指 令/数据Cache(如CPU不具备内部的数据/指令Cache,其 相关的函数返回值为0)、定义程序的入口地址等。

1.3装载映像文件

在PSRAM中分配128 KB的单元作为Ramdisk系统,作为可读写数据段,建立一个内核的运行环境。然后将Flash 中的映像文件装载到内存中,该内存单元作为Romdisk系统 直接运行内核。同时需要将该单元保护起来,避免误操作或 其他非法指令和地址修改内核部分的代码。

操作系统、文件系统和应用程序构成的映像文件有两种 装载模式:Flash-resident Image 和 Flash-based Image。前一 种是引导程序,仅仅把Image文件中的数据段(data + bss)复 制到系统内存中,代码段(text)在Romdisk中直接运行;后一 种则是引导程序把Image完全复制到系统内存中执行,包括 Image中的代码段(text)和数据段(data+bss)。

1.4内核的引导及系统初始化

上述步骤完成之后,程序计数器指针(PC)跳转到内核起 始地址处,完成内核解压、安装及其环境参数配置。设置体 系结构环境,进行命令参数的解析,设置中断和异常向量表, 进行进程调度器、定时器、控制台的配置,Cache初始化、内 存页面初始化、设备初始化等。操作系统的初始化还包含文 件系统的安装,如Ext2文件系统、管理Nand Flash的JFFS2 文件系统。

1.5 Linux内核的启动

引导程序引导完成后释放对硬件系统的控制权,转交给 Linux操作系统,并释放清除使用过的临时内存,然后跳转到 操作系统内核(kernel)的第1条指令地址,启动Linux操作系 统,执行/etc目录下的用户系统配置信息,准备系统应用程序 的使用环境。

2引导程序设计实现

引导程序的实现包括4个关键环节的配置:内存规划, 堆栈分配,中断向量配置及Nand Flash读写操作。

2.1内存规划

内存规划包括两个方面:第一是内核映像所占用的内存 范围;第二是根文件系统所占用的内存范围以及应用程序和程 序申请的缓冲区所占用的内存。对于内核文件,将其拷贝到从 RAM_BASE(MEM_START+0x8000)这个基地址开始的大约 1 MB的内存范围内,以MEM_START为基址的前32 KB内 存需要空出,让Linux内核放置一些全局数据结构,如启动 参数和内核页表等信息。根文件系统映像文件则将其拷贝到以 MEM_START+0x100000为基址的内存中(采用Ramdisk作 为根文件的系统映像,其解压后的大小一般为1 MB)。

2.2堆栈分配

ARM有7种工作执行状态,每一种状态的堆栈配置都 是独立的,所以,对程序中需要用到的每一种模式都要为堆 栈指针SP(Stack Pointer)定义一个堆栈地址,使其指向该运行 模式的栈空间。这样,当程序的运行进入异常模式时,可以 将需要保护的寄存器放入SP所指向的堆栈,而当程序从异常 模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证 异常发生后程序的正常执行。改变程序状态寄存器(CPSR)内 的状态位(低5位)可使处理器切换到不同的工作状态,根据 系统使用中断和异常的情况,可能需要初始化部分或全部堆 栈指针寄存器。本文的堆栈配置包括外部中断模式、快速中 断模式、系统调试模式、未定义指令模式、系统模式和用户 模式。其中,外部中断模式栈配置程序如下:

InitStack

MOV R0,LR

MSR CPSR_c,#0xd2//设置外部中断模式堆栈

LDR SP,StackIrq

MOV PC,R0

StackSvc DCD SvcStackSpace+(SVC_STACK_ LEGTH-1)*4

StackIrq DCD IrqStackSpace+(IRQ_STACK_ LEGTH-1)*4

SvcStackSpace SPACE SVC_STACK_LEGTH*4// 管理模 式堆栈空间

IrqStackSpace SPACE IRQ_STACK_LEGTH*4// 中断模 式堆栈空间

对管理模式堆栈而言,SP的值由SvcStackSpace的地址 加上SVC_STACK_LEGTH的大小而定。系统所有的堆栈均 位于系统运行空间PSRAM中。可通过外部输入命令的方式 切换工作模式,并通过查看特殊寄存器的内容帮助诊断系统 运行状态。

3结语

本文提出无线传感器网络可移动终端引导程序的设计方 法,从实际调试看,Linux版本号、CPU识别信息、时钟配置、内存空间配置以及外设初始化信息等显示全部正确,表明了采 用该方法设计的引导程序能够成功地运行于自主设计的无线 移动终端硬件平台上,完成了映像文件的加载、解压,操作系 统能够开始正常运行。

20211021_61703da9ca7c6__基于Linux的无线传感器网络引导程序的设计

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

安装Linux操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载Linux发行版:首先,您需要从Linux发行版官方网站下载最新的ISO镜像文件。

关键字: Linux 操作系统 ISO镜像

计算机是由一堆硬件组成的,为了有限的控制这些硬件资源,于是就有了操作系统的产生,操作系统是软件子系统的一部分,是硬件基础上的第一层软件。

关键字: Linux 操作系统 计算机

Linux操作系统是一套免费使用和自由传播的类Unix操作系统,通常被称为GNU/Linux。它是由林纳斯·托瓦兹在1991年首次发布的,并基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Lin...

关键字: Linux 操作系统

所谓进程间通信就是在不同进程之间传播或交换信息,它是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息;还可以让一个程序能够在同一时间里处理许多用户的需求。

关键字: Linux 进程通信 编程接口

串口通信作为一种最传统的通信方式,在工业自动化、通讯、控制等领域得到广泛使用。

关键字: Linux 串口通信 通讯

2023年11月16日: MikroElektronika(MIKROE) ,作为一家通过提供基于成熟标准的创新式硬软件产品来大幅缩短开发时间的嵌入式解决方案公司,今天宣布推出一款基于单线设备的软硬件开源解决方案Cli...

关键字: 嵌入式 Linux 操作系统

Linux是一种免费使用和自由传播的类Unix操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CP...

关键字: Linux 操作系统

本文中,小编将对嵌入式予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 嵌入式 Linux

在这篇文章中,小编将为大家带来嵌入式 Linux的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 Linux
关闭
关闭