- 博客(28)
- 资源 (10)
- 收藏
- 关注
原创 USB设备描述符示例
另外该设备描述符没有定义Class、SubClass、Protocol(设备描述符和接口描述符都设置为0),驱动适配必须依赖VID和PID。linux查看设备描述符:lsusb -d 0c72:000c -v。使用了4个批量传输端点进行数据通讯,两个输入端点,两个输出端点。
2024-11-25 10:29:09
262
原创 USB标准请求
对于全速模式和低速模式,获取描述符的标准请求只有三种:获取设备描述符、获取配置描述符、获取字符串描述符。第一个字节为配置的值,当该值与某配置描述符中的配置编号一致时,表示选中该配置。wIndex域只在获取字符串描述符中有用,它表示字符串的语言ID号,获取除字符串描述符的其它描述符时,wIndex的值为0。wLength域为请求设备返回数据的字节数,设备实际返回的字节数可以比该域指定的字节数少。设备在收到获取描述符请求后,应按照所请求的描述符类型编号,在数据过程中返回响应的描述符。USB标准设备请求结构。
2024-11-11 20:36:02
395
原创 USB的四种传输类型
USB2.0高速设备中增加了一个PING令牌包,用来探测设备是否有空间接收数据,它没有数据,只有握手阶段,设备根据实际情况返回握手包。如果没有足够的空间来保存数据,那么返回一个NAK握手包,告诉主机没有缓存区可用,主机会在稍后的时间重试该批量传输事务。> 对于批量传输的端点,高速模式固定为512字节,全速模式最大包长可在8,16,32,64字节中选择,低速模式不支持批量传输。除了在对端点查询的策略不一样外,中断传输和批量传输的结构基本是一样的,只是中断传输没有PING和NYET两种包。
2024-11-11 20:34:38
1262
原创 USB包的结构
对于高速设备使用的是31个0,后面跟着1个1。如果对方下一次使用的数据包类型跟自己的一致,则说明对方没有切换数据包类型,也就是说刚刚的数据没有发送成功,这是上一次的重试操作。包标示符PID用来标示一个包的类型,它总共8位,其中USB协议使用的只有4位(PID0~PID3),另外4位((PID4~PID7))是(PID0~PID3)的取反,用来校验PID。> 建立令牌包只用在控制传输中,它跟输出令牌包的作用一样,也是通知设备将要输出一个数据包,两者的区别在于:SETUP令牌包后只使用DATA0数据包。
2024-11-11 20:00:55
763
原创 [chatgpt]关于openssl建立安全连接过程问答
在上述流程中,客户端会使用服务端的公钥证书来加密一个随机生成的对称密钥,然后将加密过的对称密钥发送给服务端。总之,OpenSSL建立安全连接理论上的过程是基于木箱发送和接受认证信息和私钥,通过客户端与服务端TLS/SSL协商、握手以及数据传输的加密规则,实现安全通信。其中客户端请求建立连接,服务端确认并返回证书。3.客户端通过服务端返回的证书,向全球所有CA发送证书的信息,根据证书颁发机构的威信确定证书的合法性。需要注意的是,服务端的证书必须是受信任的证书颁发机构颁发的,这样才能保证证书的可信度和有效性。
2023-05-18 14:46:49
968
原创 linux内核原子操作
但话又说回来,完整的锁机制对一个简单的整数来讲却显得有些浪费。针对这种情况,内核提供了一种原子的整数类型,称为atomic_t,定义在<asm/atomic.h>中。一个atomic_t变量在所有内核支持的架构上保存一个int值。但是,由于某些处理器上这种数据类型的工作方式有些限制,因此不能使用完整的整数范围;也就是说,在atomic_t变量中不能记录大于24位的整数。有时共享资源可能恰好是一个简单的整数值。假定我们的驱动程序维护者一个共享变量n_op,该变量的值表明有多少个设备操作正在并发的执行。
2023-04-21 17:55:29
225
原创 C++并发锁相关并发
在做这个之前,要确定所有对这个有名信号量的引用都已经通过 sem_close() 函数关闭了,然后只需在退出或是退出处理函数中调用 sem_unlink() 去删除系统中的信号量,注意如果有任何的处理器或是线程引用这个信号量,sem_unlink() 函数不会起到任何的作用。当条件满足时,通知等待的线程以继续执行。由于有名信号量的值是保存在文件中的,所以对于相关进程来说,子进程是继承了父进程的文件描述符,那么子进程所继承的文件描述符所指向的文件是和父进程一样的,当然文件里面保存的有名信号量值就共享了。
2023-04-21 17:50:15
924
原创 C++并发数据结构设计
关键词:原子操作,无锁设计引入问题->为什么需要原子操作->原子操作实现以及原理->c++原子操作接口->c++基于原子操作的数据结构设计->原子操作什么是原子操作所谓原子操作,就是"不可中断的一个或一系列操作"。2. 硬件级的原子操作在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是" 原子操作",因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and_set、test_and_clear等指令用于临界资源互斥的原因。
2023-04-20 17:25:45
883
原创 Linux内核自旋锁【笔记】
并发的来源 当我们说并发时,是指可能导致共享资源的访问出现竞争状态的若干执行路径,并不是指严格的时间意义上的并发执行。linux系统下并发的来源主要有:中断处理路径调度器的可抢占性多处理器的并发执行 local_irq_enable与local_irq_disable 在单处理器不可抢占系统中,使用local_irq_enable与local_irq_disable是消...
2020-02-17 15:17:54
390
1
原创 低功耗蓝牙学习笔记-属性协议
什么是属性协议?属性协议(Attribute Protocol)简称ATT;属性协议既包含了关于属性的定义,也包含了属性的操作方法,既属性协议包含了通信协议的内容,属性协议通讯操作的对象是属性实例;属性协议定义了两种角色:服务器和客户端。服务器:提供数据的蓝牙设备客户端:需求数据的蓝牙设备属性协议允许称为服务器的设备将一组属性及其关联的值公开给对端的称为客户端的设备。 ...
2020-02-02 15:07:39
4756
原创 低功耗蓝牙学习笔记-L2CAP
注:本篇博客摘抄《BLE4.0 低功耗蓝牙协议总结 作者:刘权》的部分内容,该文档是学习ble很好的文档,推荐!L2CAP的全称是逻辑链路控制和适配协议。L2CAP是一个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分隔和重组功能,使得较大的报文可以在底层无线电中传输。L2CAP信道L2CAP有个很简单的概念,信道。信道是指数据包序列,连接两个设备上的一对服务。在...
2020-01-23 15:09:56
2212
2
原创 低功耗蓝牙HCI交互实例解析
准备工具 协议解析工具Wireshark,下载地址https://www.wireshark.org/download.html。 hci_dump.pklg文件,该文件由btstack示例程序运行时产生,此处可直接下载hci_dump.pklg。 说明(以下内容摘抄自韦东山的《BLE协议.docx》)运行BTStack程序时,会生成hci_dump.pklg文件,可...
2020-01-20 11:12:24
1468
原创 低功耗蓝牙学习笔记-HCI层
声明:BLE低功耗蓝牙系列博客来自个人的学习总结,其中肯定会包含很多错误,如果发现欢迎帮忙指正。BLE内容比较多,我现在还没有完全学完,好在其分层设计,所以可以每学完一个部分就可以做相应的总结。需要说明的是该系列博客的大部分内容来自《低功耗蓝牙开发权威指南》这本书,还会包含韦东山蓝牙系列课程的部分内容。该系列博客可以提供些什么?该系列博客是对BLE相关的知识点做归纳总结,注释个人在学习过程中的观...
2020-01-20 10:01:28
2395
原创 btstack源码分析-btstack_main(我方已到达战场)
历史的帷幕徐徐落下,新的时代即将到来,从此人类踏入了新纪元...在btstack/example目录下,每个文件都是一个示例程序,每个示例程序都有一个btstack_main函数,每个示例程序可以扮演client、service、可以是包含电池服务的外围设备或心跳服务的外围设备等等。本文分析以le_data_channel_client.c为例,其btstack_main定义如下:i...
2020-01-18 16:42:44
1939
原创 btstack源码分析-扬帆起航(主函数后传)
通过上一章,我们知道,主机向控制器发送了复位命令,发起第一次传输:btstack_chipset_intel_download_firmware ... // get started state = 0; state_machine(NULL); ...随后控制器将返回响应(事件)到主机,此时主函数已有执行:// gobtstack_run...
2020-01-18 11:55:28
999
1
原创 低功耗蓝牙学习笔记-链路层
声明:BLE低功耗蓝牙系列博客来自个人的学习总结,其中肯定会包含很多错误,如果发现欢迎帮忙指正。BLE内容比较多,我现在还没有完全学完,好在其分层设计,所以可以每学完一个部分就可以做相应的总结。需要说明的是该系列博客的大部分内容来自《低功耗蓝牙开发权威指南》这本书,还会包含韦东山蓝牙系列课程的部分内容。该系列博客可以提供些什么?该系列博客是对BLE相关的知识点做归纳总结,注释个人在学习过程中的观...
2020-01-06 19:36:57
1228
原创 btstack源码分析-主函数
主函数分析(port/windows-winusb/main.c):int main(int argc, const char * argv[]){ main_argc = argc; main_argv = argv; btstack_memory_init(); ... #if MAX_NR_HCI_CONN...
2020-01-04 17:30:01
1358
原创 通过SSH2接口实现sftp client文件上传
/* * Sample showing how to do SFTP write transfers. * * The sample code has default values for host name, user name, password * and path to copy, but you can specify them on the command line like...
2019-12-28 18:46:34
3563
原创 BLE低功耗蓝牙学习笔记-概述
声明:BLE低功耗蓝牙系列博客来自个人的学习总结,其中肯定会包含很多错误,如果发现欢迎帮忙指正。BLE内容比较多,我现在还没有完全学完,好在其分层设计,所以可以每学完一个部分就可以做相应的总结。需要说明的是该系列博客的大部分内容来自《低功耗蓝牙开发权威指南》这本书,还会包含韦东山蓝牙系列课程的部分内容。该系列博客可以提供些什么?该系列博客是对BLE相关的知识点做归纳总结,注释个人在学习过程中的观...
2019-12-16 21:37:41
2063
原创 qml程序发布操作方法
Qt Creator创建工程后,编译出的可执行文件只能在本机运行。但我们的目标是我们写的程序可以被更多人使用,下面分享下QT项目/QML项目如何发布!作者环境:Win7 + Qt5.9.0Qt Creator直接编译生成的.exe文件是不可以直接点击运行的:提示找不到库,原因是在Qt Creator调试运行时,已经帮我们设置好环境变量,让程序运行时可以正确找到对应的库文件。所以我们...
2019-10-03 13:21:49
1610
原创 qml实现文本二进制互转工具
下载windows环境,文本二进制互转工具下载:https://download.youkuaiyun.com/download/lewanhah01/11831813界面及功能首先实现的界面效果如下:二进制转文本( img.bin -> img.bin.txt)而文本转二进制是上面的反操作。实现首先是main入口函数(main.c)#include <QGuiAp...
2019-10-03 11:55:02
1035
原创 《每天一道笔试题》(1)
上海华为的一道关于指针方面的编程题int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)思路:首先能想到的就是进行排序,但前面已经有说明全是整数(可能包含负数)...
2019-09-29 18:39:37
156
原创 linux挂载多个文件系统
存储介质为nandflash,分区信息如下:# ls /dev/block/ -aldrwxr-xr-x 3 root root 240 Dec 31 19:00 .drwxr-xr-x 8 root root 900 Dec 31 19:00 ..drwxr-xr-x 2 root root ...
2018-12-05 16:57:44
2081
原创 input-event-daemon
input-event-daemon - input event handling daemon检测特定按键并执行用户指令input-event-daemon [ [ --monitor | --list | --help | --version ] | [--config=FILE] [--verbose] [--no-daemon] ]...
2018-12-05 16:33:45
3071
1
原创 makefile学习笔记
多个源文件编译目标:cc=gcctarget=appobjs=test1.o test2.o test3.oCFLAGS= -I/opt/usrlib1/include -I/opt/usrlib2/include #指定头文件路径LDFLAGS= -L/opt/usrlib1/lib -L/opt/usrlib2/lib -Os -las...
2018-09-12 10:58:13
266
原创 Qt 数据库之 QSqlRelationalTableModel
QSqlRelationalTableModel *model; model->setTable("employee"); //设置操作的表model->setEditStrategy(QSqlTableModel::OnManualSubmit); //QSqlTableModel::OnManualSubmit是枚举类型,在这里的意思是:模型中的所有更改将被缓存,直到...
2016-02-03 17:43:18
2445
原创 Qt 数据库(一)
下面是Qt数据库操作的实例,是从其他的博客的整理归纳!仅供参考!/*包含一些必要的头文件*/#include<QApplication>#include<iostream>#include<QtSql>#include<QSqlDatabase>int main(int argc,char *argv[]){ QApplic...
2016-02-03 11:30:22
295
btstack-master.zip
2020-02-04
TxtBinConverter.rar
2019-10-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人