当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:针对无线传感器网络的结构特点及对无线可移动终端的需求,分析了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的无线传感器网络引导程序的设计

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭