![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
RTOS
文章平均质量分 84
小系统学习
dahailinan
这个作者很懒,什么都没留下…
展开
-
鸿蒙OS内核分析|解读鸿蒙源码
操作系统(Operating System): 操作系统的功能是负责管理各种硬件设备,同时对底层硬件设备进行抽象,为上层软件提供高效的系统接口。操作系统设计和实现的优劣直接决定了系统栈的各个方面,比如性能,可靠性,甚至安全性。操作系统的设计实现是计算机系统研究最古老最困难的方向之一。因为底层设备的复杂性,操作系统实现的代码量巨大。从系统架构上可以将操作系统分为三类:宏内核(Monolithic Kernel)操作系统,微内核(Microkernel)操作系统,外内核(Exokernel)操作系统。内核(k转载 2022-11-02 14:52:22 · 2845 阅读 · 0 评论 -
在stm32f103上运行nuttx,添加app和driver的流程
以stm32f103的led(PC13)为例子heyi@ubuntu:~/nuttx/heyi_1_nuttx/nuttx/tools$ ./configure.sh stm32f103-minimum:nshheyi@ubuntu:~/nuttx/heyi_1_nuttx/nuttx:make oldconfig menuconfig进行修改了以后,进行更新配置?这条指令暂时不需要make menuconfigBoard led status support 需要取消掉,这个是ARCH_LE.转载 2021-02-25 18:25:50 · 819 阅读 · 0 评论 -
15 BLE协议GAP层
学习资料:官方手册Vol 3: Core System Package [Host volume] Part C: Generic Access Profile下面这个图是BLE协议各层跟医院的各个科室的类比图:每个医院的大堂都有些约定:① 大堂里有医院的介绍,你可以根据它确定这个医院是否适合你;② 有急救通道③ 要挂号,挂号后你跟医院才建立了联系,才能去找医生看病。重点在于:怎么确定医院(是否适合你)、怎么建立联系。在BLE里,也有一些约定用...转载 2020-10-28 16:57:07 · 944 阅读 · 0 评论 -
14 _BLE协议GATT层
学习资料:官方手册Vol 3: Core System Package [Host volume] Part G: Generic Attribute Profile (GATT)这篇文章格式比较好,基本上就是对GATT官方文档的翻译:Bluetooth GATT介绍https://www.cnblogs.com/hzl6255/p/4158363.html下面这个图是BLE协议各层跟医院的各个科室的类比图:跟医院类比,GATT层就是医务室,通过它可以得到各种服务...转载 2020-10-28 16:56:13 · 562 阅读 · 0 评论 -
13 BLE协议ATT层
下面这个图是BLE协议各层跟医院的各个科室的类比图:跟医院类比,ATT层就是化验室,通过它可以得到各种检查结果──属性。这些检查结果之间有什么联系,它们组合起来体现了什么,化验室是不知道的,这些得由上层来负责。通过ATT层可以读写对端设备的属性,但是属性之间有什么联系、各个属性怎么组合起来提供服务,由上层GATT负责。读写对端设备的属性,就是ATT的关键词。一、属性(Attribute)属性结构如下:属性就是一个值,有那么多属性,这是哪一个属性?用Handle来表示;.转载 2020-10-28 16:55:22 · 670 阅读 · 0 评论 -
12-BLE协议L2CAP层
学习资料:官方手册Vol 3: Core System Package [Host volume]Part A: Logical Link Control and Adaptation Protocol Specification建议先复习《BLE协议各层的形象化理解》,下面是我们之前用来类比的医院结构图:下面这个图是BLE协议各层跟医院的各个科室的类比图:Controller就是快递公司,它知道把数据发给对方哪一个设备,但是它不能进入对方内部。L2CAP是“收发室”,它熟知转载 2020-10-28 16:54:24 · 835 阅读 · 0 评论 -
11-BLE协议HCI层的数据格式
学习资料:1. 蓝牙协议core_v5.0.pdf 《Vol 2: Core System Package [BR/EDR Controller volume]》的“Part E: Host Controller Interface Functional Specification”2. BTStack源码对于被动扫描,周边的外设会给controller发送各种广播包,解析广播包,从而得到设备的信息。对于主动扫描,除了被动的获得广播包外,controller还可以给某个设备发出扫描请求,转载 2020-10-28 16:53:44 · 1403 阅读 · 0 评论 -
10-BLE协议HCI层的硬件接口
本篇博客由韦东山视频整理所得如何控制链路层让其发出广播包、数据包?通过HCI层向它发出命令,也可以通过ATT层、L2CAP层向LL层发出数据。学习资料:蓝牙协议core_v5.0.pdf 《Vol 4: Host Controller Interface [Transport Layer]》BTStack源码回顾一下《开源蓝牙协议栈BTStack框架代码阅读》。BLE协议在硬件上分为上下两部件:主机(Host,PC、单片机、Linux板)、控制器(蓝牙模块),如下图所示:H转载 2020-10-28 16:52:33 · 1006 阅读 · 0 评论 -
09-BLE协议链路层(LL)
本篇博客的学些要结合书籍《低功耗蓝牙开发权威指南,Robin Heydon著》第7章,实际上这书只是对蓝牙原版协议的简化、摘要。回顾以前学过的《BLE协议各层的形象化理解》和《BLE协议各层数据格式概述》一链路层的5种状态:就绪态(Stanby)、扫描态(Scanning)、广播态(Advertsing)、发起态(Initiating)、连接态(Connection)。扫描态有2种子状态:被动扫描(Passive Scanning)、主动扫描(Active Scanning)...转载 2020-10-28 16:51:31 · 905 阅读 · 0 评论 -
第08节-使用BTStack编写蓝牙程序
Bluetooth LE Exploer(微软提供的)可以读取BLE蓝牙设备,可以读写它的值。本篇博客将使用BTStack写出一个精简版的Bluetooth LE Exploer。涉及文件:btstack-master\example\le_data_channel_client.cbtstack-master\example\Makefile.inc注意:在PC上使用软件Bluetooth LE Exploer来操作蓝牙模块时,使用系统自带的驱动; 使用btstack来操作蓝...转载 2020-10-28 16:49:55 · 747 阅读 · 0 评论 -
07-开源蓝牙协议栈BTStack数据处理
本篇博客根据韦东山的视频整理所得。在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后调用hci_power_on函数去打开蓝牙模块。一. 数据类型运行BTStack程序时,会生成hci_dump.pklg文件,可以使用WireShark打开此文件,截图如下:转载 2020-10-28 16:48:36 · 898 阅读 · 1 评论 -
06-开源蓝牙协议BTStack框架代码阅读(下)
上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得)。可以从5个方面来理解BTStack的框架:1.硬件操作:hci_transport_tBTStack支持多种接口的蓝牙模块,比如USB口、3线串口、5线串口。对于这些接口,会抽象出对应的hci_transport_t结构体。该结构体成员如下:里面有init、open、send_packet等重要成员。对于3线串口、5线串口,它们在init、open设备...转载 2020-10-28 16:47:02 · 811 阅读 · 1 评论 -
经典蓝牙A2DP介绍解析
原创 2020-10-27 15:54:35 · 2762 阅读 · 0 评论 -
蓝牙A2DP流程
1 蓝牙和AUDIO之间的接口 蓝牙和audio之间的通信是通过socket,管理socket中的文件是UIPC,UIPC管理两条socket. A2DP_CTRL_PATH/data/misc/bluedroid/.a2dp_ctrl A2DP_DATA_PATH /data/misc/bluedroid/.a2dp_data 这两个socket的作用就是接收audio的控制命令和音频数据。 A2DP_CTRL_PATH在蓝牙打开的时候创建,A2DP_DA...原创 2020-10-23 14:35:27 · 2638 阅读 · 0 评论 -
BES2300 代码主架构笔记
1、BES的内核用的是RTX的内核,并且用了ARM推广的CMSIS_RTOS API接口;这样做的好处是可以方便内核的更换,方便移植上层代码。2、程序是从RTX_CM_LIB.H里面的_main_init()开始的,里面包括了内核的初始化,堆栈的设置,线程任务main的创建,内核的开启。此函数以绝对的物理内存地址定义在内存开始段中,上电直接运行。3、然后,程序开启了第一个线程main的运行,在Main.cpp文件中。4、需要提及的是CMSIS_RTOS API中,经常以这种风格来定义线程跟定时器,邮转载 2020-09-02 10:24:55 · 3126 阅读 · 1 评论 -
CMSIS-RTOS 线程间通信
线程间通信 Inter-Thread Communication前面我们已经学习了如何把你的应用代码设计成独立的线程,以及如何访问RTOS的时间服务函数。在实际的工程应用中,线程间的通信是必不可少的,任何一个RTOS都会支持几种通信方式来连接各种不同的线程。CMSIS-RTOS API支持的通信方式有:信号(signals),信号量(semaphores),互斥锁(mutexes),邮箱(mailboxes)和消息队列(message queues)。所有这些首要的核心概念就是并发性。在这一章,将集中讨转载 2020-10-23 09:57:53 · 1541 阅读 · 0 评论