使用simplicity stduio开发时的注意点

本文分享了使用EFM8SB20F32G芯片编程的经验,包括在SimplicityStudioIDE下设置断点的限制、不同内存区域变量分配的策略,以及XDATA变量初始化的注意事项。

本文是在使用EFM8SB20F32G芯片编程时总结的。

开发环境

1.关于断点设置

   Silicon labs提供的开发环境Simplicity studio IDE在调试时,对于32bit MCU最多可以设6个断点,对于8bit MCU最多可以设4个断点。


编写代码注意事项

1.关于变量在不同内存存放个数
将变量按速度不同,分为3个速度等级。

对于速度要求快的,放在data空间上,可放数量约 90个;

对于速度要求中等的,放在idata空间上,可放数量为128个;

对于速度无要求的,放在xdata空间上,可放1024个;


 
2、关于在内存不同位置定义变量

对放在xdata空间的,定义变量的形式如下:unsigned char xdata vname;

对于放在idata空间的,定义变量的形式如下: unsigned char idata vname;

而对于对于放在data空间的,定义变量的形式,即可以如下:unsigned char data vname;

也可以如下:unsigned char vname;它默认的会放在data空间。

 

3.关于xdata变量定义
Silicon Labs EFM8UB2最高 4352 字节 RAM(包括 256 字节标准 8051 RAM 和4096 字节片上 XRAM);
在程序中,声明XDATA类型的全局变量时,建议不要初始化,因为XRAM的读写速度要低于SRAM,若声明的XDATA数据比较多,在初始化时会占用一定的时间,会导致系统被默认配置的看门狗等硬件复位,所以建议在声明XDATA类型全局变量时,在main函数里面进行初始化;

 

### 如何在 Simplicity Studio 4 中定义 Endpoint 在 Zigbee 应用程序开发过程中,Endpoint 的定义是一个非常重要的环节。它用于指定设备支持的功能集和集群(Clusters),并将其映射到实际硬件资源上。以下是关于如何在 Simplicity Studio 4 中定义 Endpoint 的详细描述。 #### 定义 Endpoint 的方法 在 Simplicity Studio 4 中,通常通过配置文件或代码手动设置 Endpoint。具体来说,可以通过以下方式完成: 1. **使用 AppBuilder 工具** Simplicity Studio 提供了一个图形化工具——AppBuilder,可以用来快速生成项目框架和初始化代码。在这个工具中,可以选择所需的 Profile 和 Device Type,并自动分配相应的 Endpoints[^2]。这一步会自动生成一些默认的 Endpoint 配置,开发者可以根据需求进一步调整。 2. **修改 `emberAfPluginXxxxDefinition.h` 文件** 如果需要更精细地控制 Endpoint 设置,则可以直接编辑由 AppBuilder 自动生成的相关头文件。例如,在某些情况下,可能需要更改 Cluster ID 或 Attribute List。这些都可以在此类文件中找到对应的宏定义[^3]。 3. **编写自定义初始化函数** 对于更加复杂的场景,可以在主程序入口处增加额外逻辑来动态设定 Endpoint 属性。下面展示了一段典型的 C 语言代码片段作为示范: ```c #include "app/framework/include/af.h" void emberAfApplicationInitCallback(void) { EmberStatus status; // 创建一个新的端 (假设编号为 1) uint8_t endpoint = 1; // 初始化该端的基本参数 status = emberAfAddEndpoint(endpoint, ZCL_APPLICATION_BASIC_CLUSTER_ID, &basicClusterAttributes); } ``` 上述例子展示了如何利用 API 函数 `emberAfAddEndpoint()` 来新增一个特定功能集合绑定至某个具体的物理地址之上。 #### 注意事项 当处理多 Endpoint 设计,请务必注意不同服务间可能存在冲突的情况;另外还要考虑到内存占用率等因素的影响。因此建议合理规划整个系统的架构布局后再实施具体编码工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值