嵌入式系统开发:nesC语言组件与配置全解析
1. 组件与接口
在嵌入式系统开发中,除了简单类型,还存在平台无关的结构体和联合体,使用nx_struct和nx_union进行声明。平台无关结构体或联合体的每个字段都必须是平台无关类型,非位字段按字节边界对齐。以下是TinyOS 2.0声明CC2420头文件的示例:
typedef nx_struct cc2420_header_t { nxle_uint8_t length; nxle_uint16_t fcf; nxle_uint8_t dsn; nxle_uint16_t destpan; nxle_uint16_t dest; nxle_uint16_t src; nxle_uint8_t type; } cc2420_header_t;任何编译此结构的硬件架构都使用相同的内存布局和字节序,这使得平台代码可以直接打包和解包结构体,无需使用宏或实用函数。
编程提示7:在定义消息结构时,使用平台无关类型。
在底层,nesC将网络类型转换为字节数组,并在每次访问时进行打包和解包。对于大多数nesC代码,这种运行时成本可以忽略不计。但如果需要对多字节值数组进行大量计算(如加密),应先将其复制到本地格式,完成计算后再转换回平台无关格式。
编程提示8:如果需要对平台无关类型进行大量计算或多次访问(数百次或更