Bitcloud移植到ATXMEGA256D3+AT86RF212平台
1、 相关协议栈
a) MAC_v_2_8_0http://qaswww.atmel.com/tools/rz600.aspx
b) BitCloud_XMEGA_1_14_0http://www.atmel.com/tools/bitcloud-zigbeepro.aspx
c) BitCloud_PS_XMEGA_1_10_0http://www.atmel.com/tools/bitcloudprofilesuite-zigbeepropublicprofile.aspx
2、 重要document
a) AVR2059_BitCloud_Porting_Guide.pdf
较详细介绍了修改硬件接口,生成库,以移植到其他平台;
b) AVR2052_BitCloud_Quick_Start_Guide.pdf
快速指导,基于BitCloud_XMEGA_1_14_0,在不同硬件平台上,搭建一个demo。在1)指导下,修改HAL。可运行WSNdemo。
c) AVR2050_BitCloud_Developer_Guide.pdf
介绍了BitCloud一下系统运行机制、网络配置、数据交换等接口函数。
d) AVR2055_BitCloud_Profile_Suite_Quick_Start_Guide.pdf
快速指导,基于BitCloud_PS_XMEGA_1_10_0,在不同硬件平台上,搭建HADevice。
e) AVR2056_Profile_Suite_Developer_Guide.pdf
介绍了BitCloud PS ZigBee Cluster Library (ZCL)、Endpointregistration、Binding、Cluster- specific commands’ exchange、Extending thecluster library等。
3、 安装开发环境
a) For IAR Embedded Workbench AVR
i. 安装IAR Embedded Workbench for Atmel AVR,版本v6.11以上;
ii. 安装好后,必须增加系统环境变量,变量名:IAR_AVR_HOME,变量值指向IAR Embedded Workbench的安装目录(如果默认安装,即C:\Program Files\IAR Systems\Embedded Workbench 6.11)。然后,可以通过命令行,调用IAR里的编译器,来编译修改后的HAL文件,生成库文件。
详细见AVR2052_BitCloud_Quick_Start_Guide.pdf 45页。
注意:在编译HAL前,需一些其他工具
1、DownloadMinGW installer from http://www.mingw.org/ .
2、Launchinstallation file and select only MSYS to install (other components may be
also installed, but they are not needed forHAL compilation).
3、Add the pathto the bin folder inside MSYS installation directory to the Path Windowenvironment variable.
详细见,AVR2059_BitCloud_Porting_Guide.pdf 6页。或者不装MinGW,到网上找一个
Cygwin。直接通过windows命令行,编译会出错,无法生成hal库。
4、 将MAC_v_2_8_0协议栈Beacon_Application移植到ATXMEGA256D3+ AT86RF212平台
基于AT86RF212_ATXMEGA256A3_REB_5_0_CBB工程移植
a) 工程配置项修改
Options->GeneralOptions->Target->Processor:ATxmega256A3--ATxmega256D3
Options->Debugger->Driver:JTAGICE3
JTAGICE3-JTAGICE3 1->Debug Port:PDI
b) 修改相应文件中参数
IRQ: PC2——PC1
RST: PC0——PD0
SLP_TR: PC3——PC0
PD uart0——PC uart0
#define EXTERN_EEPROM_AVAILABLE (0)
涉及以下几个文件中
pal_board.c-> void gpio_init(void)
pal_config.h
pal_irq.c
注意:Beacon_Application中,直接定义成中国频段,不能入网。程序有问题;如果要测试中国频段,可采用Star_High_Rate工程。
5、 将BitCloud_XMEGA_1_14_0协议栈WSNdemo移植到ATXMEGA256D3+ AT86RF212平台
基于All_Stk600_Atxmega256D3_Rf212_16Mhz工程项
#BUILD_CONFIGURATION= RELEASE
BUILD_CONFIGURATION= DEBUG
//
#COMPILER_TYPE= GCC
COMPILER_TYPE = IAR
//
#HAL =ATXMEGA256A3
HAL = ATXMEGA256D3
//
HAL_CLOCK_SOURCE = CRYSTAL_16MHz
#HAL_CLOCK_SOURCE = RC_INTERNAL_2MHz
#HAL_CLOCK_SOURCE= RC_INTERNAL_32MHz
HAL\xmega\makerules中
#ifneq($(EXP_VERSION), $(COMPILER_VERSION))
#$(error ERROR in file Makerules: You areusing incorrect version of compiler: \
#installed $(COMPILER_VERSION), expected$(EXP_VERSION))
#endif
halRfPio.h中
RF_RST:PC0——PD0
RF_IRQ:PC2——PC1
SLP_TR:PC3——PC0
halRfCtrl.c中
//irqMode.pin1= IRQ_IS_NOT_CHANGED;
//irqMode.pin2= IRQ_RISING_EDGE;
irqMode.pin2= IRQ_IS_NOT_CHANGED;
irqMode.pin1 = IRQ_RISING_EDGE;
// Configure input with pulldown
//RF_PORT.PIN2CTRL = PORT_OPC_PULLDOWN_gc;
RF_PORT.PIN1CTRL = PORT_OPC_PULLDOWN_gc;
configuration.h中
//#defineAPP_USART_CHANNEL USART_CHANNEL_D0
#defineAPP_USART_CHANNEL USART_CHANNEL_C0
注意:以上文件中相关配置参数都修改以后,生成hal库文件。编译,如果仍有报错。将Options->General Options->Target->Processor,重新选择一次Atxmega256D3。然后,即可运行WSNdemo工程。
6、 将BitCloud_PS_XMEGA_1_10_0协议栈HADevice移植到ATXMEGA256D3+ AT86RF212平台
1) 同5中,修改文件参数,可运行HADevice。
2) 注意:协议栈有一个bug,在appConsts.h中,将
#defineAPP_EXT_ADDRESS APS_UNIVERSAL_EXTENDED_ADDRESS
改成#define APP_EXT_ADDRESS APP_TRUST_CENTER_EXT_ADDRESS
3) HADevice基本架构是,1个TRUST_CENTER,1个OCCUPANCY_SENSOR,1个DIMMABLE_LIGHT,1个DIMMER_SWITCH。TRUST_CENTER 仅建立网络,自动接收设备入网;OCCUPANCY_SENSOR和DIMMABLE_LIGHT绑定,OCCUPANCY_SENSOR定期向DIMMABLE_LIGHT上报;DIMMABLE_LIGHT和DIMMER_SWITCH绑定,DIMMABLE_LIGHT定期向DIMMER_SWITCH上报,同时DIMMER_SWITCH运行一demo,定期开关灯,增加,移除场景等动作。都是基于绑定,调用 ZCL_CommandReq(&cmdReq)函数发送,DIMMABLE_LIGHT应用中staticZCL_Status_t onInd(ZCL_Addressing_t *addressing, uint8_t payloadLength, uint8_t*payload)这类函数接收指示。
4) 协议栈默认,启用了安全模式,mac地址都绑定了一个默认key。随便更改mac地址,将导致设备无法入网。为此,使用全球链接key
// Application uses global link key instead of predefined.
#define APP_USE_GLOBAL_LINK_KEY 1
//#define APP_USE_GLOBAL_LINK_KEY 0
5) 然后,如果要进行其它应用开发,如串口,可以在初始化串口时,添加串口接收回调函数readByteEvent();无线数据传输,有两个函数,ZCL_CommandReq()用于特定簇命令的传送,使用这个簇,在初始化时,组成endpoint,要匹配好cluster。APS_DataReq()函数,用于一般数据的发送,APS_DataIndication()指示数据接收。
7、 一些重要信息图片摘录