数字图像的空域置乱加密技术及MATLAB实现Word文件下载.docx
- 文档编号:13787320
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:30
- 大小:1MB
数字图像的空域置乱加密技术及MATLAB实现Word文件下载.docx
《数字图像的空域置乱加密技术及MATLAB实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字图像的空域置乱加密技术及MATLAB实现Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
TI公司在提供Zigbee无线单片机CC2530的同时,也提供了Z-Stack协议栈源代码,以方便设计人员将Z-Stack直接移植到CC2530上使用,使其支持IEEE802.15.4/ZigBee协议。
TI也提供比较多的工具软件,如CC2530的FLASH编程软件,包监视分析软件,以及一些在协议之上的应用案例,简单点对点通信软件、智能家居应用软件等。
为了使我们自己的系统稳定可靠运行,必须保证硬件的设计稳定可靠,满足需要的功能要求外,软件的设计也是同样重要的。
为了使整个系统能很好的正常工作,必须让软硬件协同操作,在TI的Z-Stack协议栈之上开发我们自己的软件系统,不愧为一种很好的、省力的方式。
自己去写Z-Stack协议栈代码并让其稳定运行是不现实的,不是投入太大就是时间太长。
这样,对TI的Z-Stack协议栈代码进行必要的了解是非常必要的。
通过IAR软件打开TI的Z-Stack协议栈,如下图所示:
第一次打开工程印象最深刻的就是左边一排文件夹,非常多,很庞杂,感觉无从下手。
我们先不深入目录之下,先了解每个目录放的是什么内容,那么知道各个文件夹大概是什么功能,分布在ZIGBEE的哪一层,那么在以后的工作中无论是查询某些功能函数还是修改某些功能函数,甚至是添加或删除某些功能函数就能顺利的找到在什么地方了,方便对Z-Stack协议栈软件的更深入的学习了解。
下面对Z-Stack协议栈的文件夹进行介绍:
APP(ApplicationProgramming):
应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。
APP:
用户应用程序及接口,包括串口数据处理、无线接收数据处理、用户LCD显示处理、传感器数据读取和发送等。
HAL(Hardware(H/W)AbstractionLayer):
硬件层目录,包含有与硬件相关的配置和驱动及操作函数。
MAC:
MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件。
MT(MonitorTest):
实现通过串口可控各层,于各层进行直接交互。
NWK(ZigBeeNetworkLayer):
网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS层库的函数接口
OSAL(OperatingSystem(OS)AbstractionLayer):
协议栈的操作系统。
Profile:
AF(Applicationwork)层目录,包含AF层处理函数文件。
Security:
安全层目录,安全层处理函数,比如加密函数等。
Services:
地址处理函数目录,包括着地址模式的定义及地址处理函数。
Tools:
工程配置目录,包括空间划分及ZStack相关配置信息。
ZDO(ZigBeeDeviceObjects):
ZDO目录。
ZMac:
MAC层目录,包括MAC层参数配置及MAC层LIB库函数回调处理函数。
ZMain:
主函数目录,包括入口函数及硬件配置文件。
Output:
输出文件目录,这个是EW8051IDE自动生成的。
Z-Stack协议栈用操作系统的思想来构建,采用事件轮询机制。
当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。
如果同时有几个事件发生,则判断优先级,逐个处理事件。
这种软件构架可以极大地降级系统的功耗。
整个Z-Stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段,下面将逐一详细分析。
1、TI的Z-Stack协议栈启动流程
可打开ZMain文件夹中的ZMain.c文件,查看intmain(void)函数,协议栈即从此函数开始运行。
其启动流程如下所示:
2、系统初始化
系统上电后,通过执行ZMain文件夹中ZMain.c的ZSEGintmain()函数实现硬件的初始化。
硬件初始化需要根据HAL文件夹中的hal_board_cfg.h文件配置8051的寄存器。
TI官方发布Z-stack的配置针对的是TI官方的开发板CC2530DB、CC2530EMK等,如采用其它开发板,则需根据原理图设计改变hal_board_cfg.h文件配置。
如按键多少及其对应的I/O口,LED指示灯的多少及其对应的I/O口,串口的波特率及中断还是DMA操作方式,是否有LCD等。
也可以通过宏定义的方式,将硬件的功能模块的操作放开或屏蔽掉。
下面列出main函数,并在其掉用的函数处对其进行注释说明:
intmain(void){
//关全局中断
osal_int_disable(INTS_ALL);
//板相关的硬件初始化,如时钟、LED等
HAL_BOARD_INIT();
//确保电源电压比正常运行的电压高
zmain_vdd_check();
//参数堆栈及返回地址堆栈清0
zmain_ram_init();
//判别是上电复位,复位键复位还是看门狗复位
InitBoard(OB_COLD);
//初始话硬件抽象层驱动,如Timers、Adc,Dma,Flash,Aes,Leds,Uart,Key,Spi,andLcd等
HalDriverInit();
//初始化FLASH存储器系统
osal_nv_init(NULL);
//初始化基本的非易失性存储器的项目,初始话Z-Stack全局变量。
如果一个项目在非易失性//存储器中没有,则将缺省值写入其中。
zgInit();
//初始化MAC层
ZMacInit();
//决定起始的扩展IEEE地址
zmain_ext_addr();
//如果无网络层,则调用afInit()对无线射频部分进行初始化
#ifndefNONWK
afInit();
#endif
//初始化操作系统,初始化存储器系统、消息队列、定时器、电源管理系统、系统任务等
osal_init_system();
//开全局中断
osal_int_enable(INTS_ALL);
//进行板硬件的最后初始化,如键盘,摇杆等初始化
InitBoard(OB_READY);
//如果使用LCD,则调用用于LCD硬件的初始化
#ifdefLCD_SUPPORTED
zmain_lcd_init();
//显示如IEEE地址等设备信息,
zmain_dev_info();
//如果使用了看门狗,则将看门狗使能
#ifdefWDT_IN_PM1
WatchDogEnable(WDTIMX);
//启动操作系统,将不会从此函数返回
osal_start_system();
//NoReturnfromher
//不会到达这里
return(0);
}
当顺利完成上述初始化时,执行osal_start_system()函数开始运行OSAL系统。
该任务调度函数按照优先级检测各个任务是否就绪,如果存在就绪的任务则调用tasksArr[]中相对应的任务处理函数去处理该事件,直到执行完所有就绪的任务。
如果任务列表中没有就绪的任务,则可以使处理器进入睡眠状态实现低功耗。
程序流程如下图所示。
osal_start_system()一旦执行,则不再返回Main()函数。
3、OSAL任务
OSAL是协议栈的核心,Z-Stack的任何一个子系统都作为OSAL的一个任务,因此在开发应用层的时候,必须通过创建OSAL任务来运行应用程序。
通过osalInitTasks()函数创建OSAL任务,其中TaskID为每个任务的唯一标识号。
任何OSAL任务必须分为两步:
一是进行任务初始化;
二是处理任务事件。
任务初始化主要步骤如下:
1)初始化应用服务变量
constpTaskEventHandlerFntasksArr[]数组定义系统提供的应用服务和用户服务变量,如MAC层服务macEventLoop、用户服务controlEpProcess,functionEpProcess等。
2)分配任务ID和分配堆栈内存
voidosalInitTasks(void)主要功能是通过调用osal_mem_alloc()函数给各个任务分配内存空间,和给各个已定义任务指定唯一的标识号。
3)在AF层注册应用对象
通过填入endPointDesc_t数据格式的EndPoint变量,调用afRegister()在AF层注册EndPoint应用对象。
通过在AF层注册应用对象的信息,告知系统afAddrType_t地址类型数据包的路由端点,例如用于发送周期信息的SampleApp_Periodic_DstAddr和发送LED闪烁指令的SampleApp_Flash_DstAddr。
4)注册相应的OSAL或者HAL系统服务
在协议栈中,Z-Stack提供键盘响应和串口活动响应两种系统服务,但是任何Z-Stask任务均不自行注册系统服务,两者均需要由用户应用程序注册。
值得注意的是,有且仅有一个OSALTask可以注册服务,例如注册键盘活动响应可调用RegisterForKeys()函数。
5)处理任务事件
处理任务事件通过创建“ApplicationName”_ProcessEvent()函数处理。
一个OSAL任务除了强制事件(MandatoryEvents)之外还可以定义15个事件。
下面对这些事件进行介绍:
SYS_EVENT_MSG:
一个强制任务事件SYS_EVENT_MSG(0x8000),被保留必须通过OSAL任务设计。
管理者应该处理如下的系统信息子集,下面只列出了部分信息,但是是最常用的几个信息处理,推荐根据例子复制到自己项目中使用。
AF_DATA_CONFIRM_CMD:
调用AF_DataRequest()函数数据请求成功的指示。
Zsuccess确认数据请求传输成功,如果数据请求设置AF_ACK_REQUEST标志位,那么,只有最终目的地址成功接收后,Zsuccess确认才返回。
如果如果数据请求没有设置AF_ACK_REQUEST标志位,那么数据请求只要成功传输到下跳节点就返回Zsuccess确认信息。
AF_INCOMING_MSG_CMD:
AF信息输入指示
KEY_CHANGE
键盘动作指示
ZDO_NEW_DSTADDR
匹配描述符请求(MatchDeorRequest)响应指示。
(例如:
自动匹配)
ZDO_STATE_CHANGE
网络状态改变指示
4、网络层信息
ZigBee设备有两种网络地址:
1个是64位的IEEE地址,通常也叫作MAC地址或者扩展地址(Extendedaddress),另一个是16位的网络地址,也叫做逻辑地址(Logicaladdress)或者短地址。
64位长地址是全球唯一的地址,并且终身分配给设备。
这个地址可由制造商设定或者在安装的时候设置,是由IEEE来提供。
当设备加入Zi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 空域 加密 技术 MATLAB 实现