cc2640蓝牙芯片软件开发指导说明文件(4)

2018-12-04 16:58

// Create one-shot clocks for internal periodic events.

Util_constructClock(&periodicClock, SimpleBLEPeripheral_clockHandler, SBP_PERIODIC_EVT_PERIOD, 0, false, SBP_PERIODIC_EVT);

3,等待时钟实体到期并在应用的上下文中处理。如下面的流程图所展示:绿色的部分是与运行在应用上下文进程有关的。红色的与软件中断有关。

3.5 队列

队列允许应用以一种有序的方法来处理事件,即FIFO的顺序来进行事件的处理。一个工程可能使用队列来管理来自应用,配置或其他任务的事件。鉴于时钟会在一个对时序要求严格的事件必须执行的时候使用,队列对于需要按照指定顺序执行的事件来说是非常有用的。 队列模块提供了两个任务间消息处理的单向方法,遵循FIFO原则。 下图中,一个队列配置为任务A到任务B的单向通讯通道。任务A把消息压到队列中,任务B按照顺序取出消息。

3.5.1 接口

RTOS的队列应经抽象成了函数放在了util.c文件中。在SYS/BIOS API 【9】中查看队列模块隐藏的函数。这些实用的函数结合了队列和能力来通知容器任务通过信号量传递过来的消息。在cc2640软件中,这样用的信号量与用于通过Icall实现任务同步的信号量一样。SimpleBLePeripheral_enqueueMsg()函数中提供了这样的一个例子。

队列通常用来限制应用回调函数在更高优先级任务的上下文中的执行时间。在这种方式中,如果一个优先级更高的任务把一个消息压到了应用的队列中,应用就会 延迟进程而不是在自己的上下文中立即处理。

3.5.2 功能示例

下面是SimpleBLEPeripheral工程中的有关队列的例子,是用来处理一个按键的硬件中断处理。

1.定义任务队列函数以便使用任务的信号量来唤醒自己

static uint8_t SimpleBLECentral_enqueueMsg(uint8_t event, uint8_t status, uint8_t *pData) {

sbcEvt_t *pMsg;

// Create dynamic pointer to message. if (pMsg = ICall_malloc(sizeof(sbcEvt_t))) {

pMsg->event = event; pMsg->status = status; pMsg->pData = pData; // Enqueue the message.

return Util_enqueueMsg(appMsgQueue, sem, (uint8_t *)pMsg); }

return FALSE; }

2. 静态调用然后构建队列

// Queue object used for app messages static Queue_Struct appMsg;

static Queue_Handle appMsgQueue;

...

// Create an RTOS queue for messages to be sent to app. appMsgQueue = Util_constructQueue(&appMsg);

3. 等待按键被按下和在应用的上下文中处理。下面的流程图展示了整个流程。绿色的部分

是运行在应用上下文中的进程,红色的是硬件中断部分。

3.6 空闲任务

空闲模式就是用来指定一系列函数在没有其他任务在系统中运行时调用。在CC2640软件中,空闲任务与运行电源管理方案有关。 3.7 电源管理

一般来说,所有的电源管理的功能性都是由外设驱动和BLE协议栈处理。这种特性通过包含或不包含POWER_SAVING预处理宏来使能或禁能。当POWER_SAVING声,设备就会在BLE事件,外设事件和应用定时器等需要时进入或退出睡眠。当POWER_SAVING没有定义,设备就会一直醒着。9.2中有修改与预编译宏的步骤。

关于电源管理的更多信息包括应用接口和一个使用简例用户串口驱动可以在Power

Management User’s Guide [8]文档中发现,该文档在RTOS安装包中。需要注意的是这些接口只在用户的驱动中有必要添加。

所以,查阅Measuring Power Consumption App Note [3]来分步分析系统的电源消耗和电池寿命。

3.8 硬件中断(HWI)

硬件中断处理应用必须对外部同步事件作出回应的临界进程。SYS/BIOS 目标/设备指定的硬件中断模块用来管理硬件中断。对象,向量和中断函数性的特定的信息可以在技术说明指导中找到Technical Reference Manual [2].另外,SYS/BIOS的用户知道详细描述了硬件中断接口和提供的一系列软件案例。

通常来讲,硬件中断已经从他们从属的外设驱动中分离出来了。在第9中可以找到一个使用GPIO作为硬件中断的例子。这是优先考虑采用的使用方法。使用Hwi_plug()函数,可能需要写的中断服务函数不会与SYS/BIOS相互影响。然而中断服务函数必须做他们的上下文以防止阻塞时序要求高的BLE协议栈。

为了使BLE协议栈能够配合RF的时序要求,所有的应用定义的硬件中断必须以最低优先级执行。因为这个原因,在新添加一个硬件中断时不要修改硬件中断的默认的优先级。 通常,这里不要有应用定义的临界的部分,以免阻塞RTOS或BLE协议栈中时序要求比较严格的部分。代码执行在临界的部分时会阻止实时中断现相关的事件的中断。 3.9 软件中断

查看SYS/BIOS用户指导来获取软件中断的接口和详细信息。软件中断的优先级要高于任务但低于硬件中断。因此,软件中断中处理的进程的数量应该严格限因为这个进程的优先级将会超过BLE协议栈任务的。就想在3.4中描述的一样,使用模块使用软件中断来抢占任务。只处理时钟进程的软件中断会设置一个事件,发送一个信号量给应用来继续软件中断之外的进程。任何可能的时间,时钟模块应该用来实现软件中断。如果必要,一个软件中断可以按照SYS/BIOS用户指导中描述的软件中断模块来实现。

注意,为了保护RTOS的栈,动态创建软件中断应该像3.11.6中描述的一样限制。

3.10Flash

flash被划分为每个可擦除页为4kB。另外,应用和栈工程必须独自开始在4kB开始的地

址。flash的各功能区和相关连接文件分别是:

应用镜像:给应用工程留的代码空间。这个可以在应用连接配置文件:cc26xx_ble_app.icf (IAR) and cc2650f128_tirtos_ccs.cmd(CCS).配置。

栈镜像:给栈工程刘的代码空间。配置文件为:cc26xx_ble_stack.icf (IAR) and

cc2650f128_tirtos_ccs_stack.cmd (CCS).

简单NV(SNV):用来存放非易失性数据的一个区域,主要用阿里保存GAP绑定信息,也可以提供给应用使用。3.10.4讲诉配置SNV。当配置完,SNV就是栈的一部分。

用户配置区(CCA):flash的最后一块就是永爱存储用户指定芯片配置参数的部分。CCA中没有用的空间分配给应用工程。

3.10.1 flash 内存映射

这部分将阐述flash在系统层面上的映射。符号指向的实线队列可以在应用连接文件中找到,符号指向的虚线的队列可以在栈连接文件中找到。

下面的表中概述了Flash系统映射的定义(上图所指),提供了相关的链接宏/符号,这些宏/符号可以在各自的IDE链接文件中找到。 Symbol / Region Meaning Project CCS Definition IAR Definition APP_FLASH_START Start of flash / Start of App code image APP_FLASH_END End of App code image. (ICALL_STACK0_ADDR-1) STACK_FLASH_START Start of Stack code image (ICALL_STACK0_ADDR) Stack App APP_BASE FLASH_START App ICALL_STACK0_ADDR - APP_BASE - 1 ICALL_STACK0_ADDR FLASH_END FLASH_START STACK_FLASH_END End of Stack flash code image, including SNV. Stack FLASH_SIZE - RESERVED_SIZE - ICALL_STACK0_ADDR FLASH_END CCA Sector Last sector of Flash. Contains the CCFG App FLASH_LAST_PAGE FLASH_LAST_PAGE Last 86 bytes of CCA CCFG Region Location in CCA where App Last 86 bytes of CCA


cc2640蓝牙芯片软件开发指导说明文件(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学党员教师个人自我剖析材料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: