本文和大家共享一些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

BT Dongle设计介绍相关推荐

  1. MindInsight张量可视设计介绍

    MindInsight张量可视设计介绍 特性背景 张量可视,能够帮助用户直观查看训练过程中的Tensor值,既支持以直方图的形式呈现Tensor的变化趋势,也支持查看某次step的具体Tensor值. ...

  2. MindInsight训练可视整体设计介绍

    MindInsight训练可视整体设计介绍 MindInsight是MindSpore的可视化调试调优组件.通过MindInsight可以完成训练可视.性能调优.精度调优等任务. 训练可视功能主要包括 ...

  3. java 类的存储结构设计_Doris存储层设计介绍1——存储结构设计解析

    1 整体介绍 Doris是基于MPP架构的交互式SQL数据仓库,主要用于解决了近实时的报表和多维分析.Doris高效的导入.查询离不开其存储结构精巧的设计.本文主要通过阅读Doris BE模块代码,详 ...

  4. CYQ.Data V5 分布式自动化缓存设计介绍(二)

    前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...

  5. 第三:项目框架设计介绍

    一:robot framework介绍 Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布 ...

  6. 常见的系统架构设计介绍

    系统架构设计介绍 分布式架构 初始阶段架构 特征 应用服务和数据服务以及文件服务分离 特征 问题 使用缓存改善性能 特征 问题 使用应用服务器集群 特征 描述 问题 数据库读写分离 特征 描述 问题 ...

  7. 计算机系系徽设计说明,《系徽设计介绍简介模版.ppt

    <系徽设计介绍简介模版 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copy ...

  8. 计算机辅助教学设计,计算机辅助教学设计介绍

    <计算机辅助教学设计介绍>由会员分享,可在线阅读,更多相关<计算机辅助教学设计介绍(4页珍藏版)>请在人人文库网上搜索. 1.计算机辅助教学课件介绍一.计算机辅助教学课件的概念 ...

  9. 学习笔记:IDF 移动端UX设计 1 移动端UX设计介绍 1.1-1.3

    1. An Introduction to Mobile User Experience Design 移动端用户体验设计介绍 1.1 课程简介 在该课程中你将学到: 移动端设计的一些迷信以及为何要学 ...

最新文章

  1. oracle+linux+oel+6.9,用SecureCRT+Xming轻松远程实现linux的X DISPLAY
  2. 如何避免APK文件的反向工程?
  3. 拓展小知识(一)——使用 CSS 和 JS 加载阿里小图标
  4. 努比亚z17s刷原生安卓_MIUI 10抢先适配安卓Q,米粉火速刷机,存在这些问题
  5. datetime(6) mysql_MySQL中DATETIME、DATE和TIMESTAMP类型的区别
  6. 9,线程池 threadPool 与 线程池执行器 threadPoolExecutor
  7. openhub_介绍OpenHub框架
  8. 【实战】Spring生成beanName冲突的解决之道:附源码分析
  9. C# 注册表控制++ Autorun after windows
  10. 很不错标签云js插件
  11. 蓝桥杯 算法训练 斐波那契串
  12. Win10更新后BUG——任务栏点不动、卡死、加载不出来解决办法
  13. windows虚拟串口服务器,USR-TCP232-T24系列串口服务器建立虚拟串口方法
  14. wps阶梯表格怎么做?wps阶梯表格制作教程
  15. svm算法java实现_谁有用JAVA实现机器学习svm算法的代码,感激不尽
  16. 与麻花兄弟诉苦兼讨论欠缺的知识
  17. ArcGIS Server 自定义比例尺切图
  18. 第十届蓝桥杯C语言B组题解
  19. 批量识别条形码和二维码
  20. 机器视觉光源种类(环形光,条光,背光源,同轴光,线光,点光,穹顶光,开孔面光源等)

热门文章

  1. stm32 memcpy效率
  2. VMware 黑苹果开机失败 磁盘修复
  3. 行为识别论文笔记|TSN|Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
  4. antd vue表单验证_ant design vue框架中自定义表单或单个表单框验证
  5. 不同操作系统的默认TTL(生存时间)值
  6. Hive的核心概念以及建库建表语句
  7. RSA对称加密 Util工具类
  8. 电子科大自考c语言试题,220名北京考生赶考国科大 面试题目无刚性答案
  9. 2016阿里云121款产品和解决方案全向图(9月制)
  10. 和讯博客设置友情链接