您的位置:首页 > 产品设计 > UI/UE

BT Dongle设计介绍

2016-11-25 19:00 162 查看
本文和大家共享一些BT Donge设计的相关知识,还有CSR BC4/5的存储架构,以利于之后编程更好地利用内存空间。

首先,看一下BT Dongle的框图。

从框图可以看到,硬件设计是及其简单的,基本上就是CSR BC4芯片再加上Flash芯片,另外加上天线部分;感谢芯片技术的飞速发展,让硬件的搭建更加简单。但是,软件可不一定简单哦,这要看项目设计的具体要求。本案的设计目标是BTHID设备还有CDC接口设备,项目难道不是太大。



下面,我们再来看看CSR BC4芯片里面包含了哪些内容,

和常规的SoC芯片相比,它多了Kalima DSP, Kalima DSP是CSR 蓝牙芯片专用的,它是什么东西呢?

蓝牙在声音处理方面,Kalimba DSP的作用是:

      在BlueCore3-Mulitmedia的基带控制器(MCU)中运行蓝牙协议栈以及Handfree Profile和Handset Profile,并从蓝牙的同步面向连接(SCO)链路中提取语音信息并转送给Kalimba DSP,Kalimba DSP中的软件完成语音处理,再经过数模转换到扬声器放出来,反方向是模数转换从麦克风中收集语音信息,到Kalimba DSP中进行处理,然后传送给基带控制器,再通过蓝牙的SCO链路发送出去。

Kalima DSP有自己的Lib可以共MCU来控制。在本案中,我们没有用到声音处理的内容,所以这颗DSP基本我们也不关心。

余下的部分,就是一般SoC架构里面经常有的东西了。

内核是一颗MCU,加上on-chip RAM(48KB),然后再加上通用的总线接口以便和外部交互;另外,加上蓝牙相关的basbband/radio模块,天线是外置的。



那么,这颗MCU又是什么来头呢?是不是我们常见的ARM或者是类似51单片机吗?

都不是,这款叫XAP (Low power silicon microprocessor),是CSR独立开发的CPU内核,采用哈佛架构以及RISC指令集,迄今已经发展很多代了,既有16位的也有32位的;主要面向低功耗无线设备,例如蓝牙,WiFi,Zigbee, NFC, GPS等;开发使用的是C语言精简版本,运行在VM(Virtual Machine)上面。

CSR BC4这款MCU采用的16位的系统,指令和代码都是16位。

下面,我们再看看系统的内存映射,

内存管理是系统十分重要的部分,明白系统内存是如何分配的,系统程序员可以更加高效地使用内存,减少出错的几率,让系统的利用率更大,这里面有很多技巧。

下面的这张图,跟大多数系统的内存映射都差不多,比如,有globals(类似heap栈的概念),stack,Slots(Text/code区域,mallocate也可以从中获得空间),constants(常量空间,大部分内存管理系统是把这部分放在flash上的);

这张图的特别之处,在于sink/source/header区域,sink/source可以用于USB 目的/源 数据的存放,在USB接口编程中,十分好用。



下面的表格,更确切告诉我们如何使用这些区域,大家在研究内存使用的时候,可以参考生产的map文件,对我们很有帮助,我之前有篇blog有介绍map文件是如何阅读的,大家可以参考。

另外一个问题,如果内存不够该如何办?

1. 首先一点,大脑一定要谨记“勤俭节约”的好家训,该不用的就不用,能省则省,不用的及时释放;

2. 在定义结构体的时候,巧用union达到内存共用的目的;

3. const类型的很多时候是被保存到ROM/Flash中,不会占用内存;在本案中,它保存到constant区域;

4. stack可以动态调整,实在不行可以试试看。



下面,在一起看看我们在编程的时候会用到哪些库函数,请看下面的图,主要包括如下的库函数,

1. 基础库函数,C foundation Libraries包括我们常见的C基本的功能;CSR foundation LIbraries主要来自CSR的库,比如操作PIO/DSP等;

2. Connection Library, 包括连接相关的库;

3. Support Libraries, 也是CSR独家定制的库,如audio相关的库。

4. Profile相关的库,如HID/SPP/A2DP等相关的库。

至于选择哪些库,可以根据需要,比如我们这款产品主要是BTHID/SPP相关的,那么其他的如A2DP类库,不需要包括。



最后,我们再一起来欣赏一下HID/SPP的消息时序图,这个在编程的时候很重要,它告诉我们什么时候发生了什么事情,



下面是SPP的消息时序图,



最后,再给大家介绍一下参考资料,希望对大家有用,谢谢大家的阅读。

CS-101501-UGP3_BlueLab_Libraries.pdf

CS-110364-ANP1_VM_memory_mapping_and_usage.pdf

BC57E687C-GITB-E4 spec.pdf
https://en.wikipedia.org/wiki/XAP_processor
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  蓝牙 CSR Dongle BC4 Bluetooth