- 博客(514)
- 资源 (18)
- 收藏
- 关注
原创 一篇文章足够你学习ESP32,提供史上最全的ESP32教程(驱动/蓝牙/Wi-Fi/LVGL/Arduino...)
本文章目的:1)针对单片机外设做详细的教程,丰富个人技能吃,彻底从原理+应用来写外设2)给广大蓝牙爱好者提供蓝牙应用方面的教程(结合我们的蓝牙协议栈会事半功倍)蓝牙协议栈教程点击我3)给广大Wi-Fi爱好者提供Wi-Fi方面的教程(结合我们的Wi-Fi协议栈会事半功倍)Wi-Fi协议栈教程点击我4)给广大GUI爱好者提供LVGL方面的教程LVGL教程点击我5)把各个技能池组合起来,举一反三,做炫酷的实例应用教程内容:我们的内容包括但不限于:1)IDF基础介绍
2022-04-04 14:46:19 96445 23
原创 一篇文章足够你学习嵌入式GUI LVGL技术,提供史上最全的LVGL技术文章总结,文档代码下载总结)
一. 本文章目的以及系列目录1)给广大嵌入式GUI LVGL爱好者提供资料,代码下载渠道2)给广大嵌入式GUI LVGL爱好者增加一个学习文章导读整个LVGL系列有如下计划LVGL资料下载:提供文章所有资料以及代码下载途径 LVGL工具使用:主要介绍下模拟器的使用/电脑组态软件(我通常把电脑拖控件软件叫做组态软件) LVGL概念概述:主要对LVGL的对象/事件/风格/输入设备/显示等概念做介绍 LVGL控件介绍:主要对LVGL的控件做详细介绍 LVGL移植介绍:主要对LVGL移植
2021-02-25 16:58:17 36110 18
原创 一篇文章足够你学习蓝牙技术,提供史上最全的蓝牙技术(传统蓝牙/低功耗蓝牙)文章总结,文档下载总结(2020/12/11更新)
那由于学员反馈蓝牙精讲没有一个目录介绍,再次我整理一个目录。我们的蓝牙书以及CSDN蓝牙系列的视频有以下计划:告知:初学蓝牙者暂时不要碰controller(蓝牙芯片)里面的协议,否则会看到你怀疑人生那我们就一一来列举下(持续更新次文章,每周一更这篇文章)第一篇:蓝牙综合介绍主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍,内容如下:章节 文章标题 文章链接 视频课程 第一章 蓝牙概述 1. 蓝牙的基本概念以及发展轨迹.
2020-08-03 08:09:52 88073 60
原创 蓝牙音视频远程控制协议(AVRCP)介绍
AVRCP(Audio/Video Remote Control Profile)定义了蓝牙设备和audio/video控制功能通信的特点和过程,另用于远程控制音视频设备,底层传输基于AVCTP传输协议
2023-10-21 10:08:44 2170
原创 蓝牙音视频控制协议(AVCTP)介绍
AVCTP(Audio/Video Control Transport Protocol)协议描述了蓝牙设备间Audio/Video的控制信号交换的格式和机制,它是一个总体的协议,具体的控制信息由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制command和response的总体的格式。
2023-07-15 20:28:26 2263
原创 蓝牙BQB认证 - HFP profile配置说明
该文档主要解释Bluetooth HFP HF的BQB ICS以及TS文档,以便更快的熟悉蓝牙本地认证工具PTS。快速验证蓝牙协议栈是否符合蓝牙规范。
2023-04-04 19:43:07 2050 1
原创 蓝牙 Bluetooth APCF实现休眠唤醒功能
ACPF(Advertising Packet Content Filter)是广播内容过滤功能,主要使能后运行controller中,所以广泛应用于广播唤醒功能,但是有个局限,不过滤周期广播。这个命令属于HCI Vendor Specific Command/Event,所以需要固件额外支持才行!另外,如果要做广播唤醒,需要从特定的引脚输出特定的波形,所以这个需要额外的vendor specific command才行
2023-04-01 16:15:44 1836 1
原创 Android蓝牙使能流程图(Android Bluetooth enable) -- java & jni层
目前蓝牙协议栈本身的架构就很复杂,而且大部分都是用C/C++编写,对于蓝牙协议栈工程师硬啃可能啃的动,但是Android上层又用java编写,又加了很多binder,jn机制,并且伴有Android本身apk的一些特性在里面,让蓝牙工程师苦不堪言,所以本文秉着大道至简的目的,给你们来介绍下android上层,包括framework,service的enable流程,让你们有一些概念,抛砖引玉下!
2023-03-26 11:44:32 3237
原创 Android binder通信实现进程间通信
Binder 是 Android 系统中用于跨进程通信的一种机制,它允许一个进程中的组件与另一个进程中的组件进行通信,从而实现进程间通信 (IPC)。Binder 机制是基于 Linux 内核提供的进程间通信机制 (IPC) 实现的。
2023-03-14 21:21:46 2304
原创 Android button点击事件的3种处理方式
可以看到我们定义的onClick的事件为myButtonClickHandler。可以看到button的id为my_button2,这个在后面有很大的作用。在布局xml中增加一个button。首先在布局xml中增加button。在布局xml中增加一个button。把这个修改为lambda。
2023-03-11 11:37:20 2480
原创 Linux内核并发与竞争-互斥量
在 FreeRTOS 和 UCOS 中也有互斥体,将信号量的值设置为 1 就可以使用信号量进行互斥访问了,虽然可以通过信号量实现互斥,但是 Linux 提供了一个比信号量更专业的机制来进行互斥,它就是互斥体—mutex。在我们编写 Linux 驱动的时候遇到需要互斥访问的地方建议使用 mutex。③、因为一次只有一个线程可以持有 mutex,因此,必须由 mutex 的持有者释放 mutex。①、 mutex 可以导致休眠,因此不能在中断中使用 mutex,中断中只能使用自旋锁。
2023-03-04 10:50:00 504
原创 Linux内核并发与竞争-原子操作
Linux 内核定义了叫做 atomic_t 的结构体来完成整形数据的原子操作,在使用中用原子变量来代替整形变量,此结构体定义在 include/linux/types.h 文件中,定义如下:} atomic_t;
2023-02-11 14:46:02 2690
转载 Valgrind使用介绍
大多数情况下应视为与definitely lost一样需要尽快修复,除非你的程序让一个指针指向一块动态分配的内存(但不是这块内存的起始地址),然后通过运算得到这块内存的起始地址,再释放它。Massif能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加速我们程序的运行,减少程序停留在交换区中的几率。最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc、free、new、delete的调用都会被捕获。是一个仍处于试验状态的工具,用来检测堆和全局数组的溢出。
2023-01-28 16:02:15 1058
原创 imx6ull Linux使用设备树配置LED
其实到了这一步虽然不需要配对寄存器地址,但是代码还在编写寄存器代码,也就是说换了一个GPIO还是要修改代码,是的!!!别急,后续我们看了GPIO子系统以及pinctl子系统后相信会有答案!!!
2023-01-27 17:45:34 1671
原创 Linux设备树的概念
DTS 文件的主要功能就是按照图所示的结构来描述板子上的设备信息, DTS 文件描述设备信息是有相应的语法规则要求的,稍后我们会详细的讲解 DTS 语法规则。根节点下也有compatible属性,用来选择哪一个“machine desc”:一个内核可以支持machine A,也支持machine B,内核启动后会根据根节点的compatible属性找到对应的machine desc结构体,执行其中的初始化函数。一个单板启动时,u-boot先运行,它的作用是启动内核。但是在设备树里,它可以用来描述一段空间。
2023-01-19 14:30:45 5911 4
原创 Linux驱动入门-最简单字符设备驱动(基于pc ubuntu)
字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。
2022-12-31 15:07:48 2294
原创 Android 8~12蓝牙架构组件介绍
虽然开发板中有两个位置,但是/system/app/Bluetooth/lib/arm64/libbluetooth_jni.so是一个软连接,所以真实的so还是在/system/lib64/libbluetooth_jni.so。特定芯片厂商的vendor部分,Android把特定常用的操作,比如power控制,下载固件,sco等行为抽象出来,用so的方式来达到切换的效果。这个是蓝牙的jni库,编译在Bluetooth.apk中,主要通过jni跟底层的bluedroid蓝牙协议栈沟通。
2022-12-25 11:23:21 2974
原创 Android.bp学习
Blueprint是生成、解析Android.bp的工具,是Soong的一部分。重要的事情说三篇,Android.mk可以引用Android.bp中的模块,反之Android.bp不能引用Android.mk中的模块。重要的事情说三篇,Android.mk可以引用Android.bp中的模块,反之Android.bp不能引用Android.mk中的模块。重要的事情说三篇,Android.mk可以引用Android.bp中的模块,反之Android.bp不能引用Android.mk中的模块。
2022-12-17 11:02:50 1733
原创 Android.mk 入门学习
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范。LOCAL_PATH变量制定了该.mk的路径,$(call my-dir)调用NDK内部的函数获得当前.mk文件的路径include $(CLEAR_VARS)清空了除了LOCAL_PATH之外的所有LOCAL_xxx变量的值。
2022-12-10 08:58:43 1519
原创 Linux UART编程 驱动蓝牙芯片
在熟悉了UART概念后,我们要学以致用,在Linux用起来来驱动起来蓝牙芯片!我们直接借用man来看下,命令如下: man termios2.串口打开关闭Linux秉行一切皆文件的,所以打开关是用open,关闭串口使用close下面我们来分别介绍下各个flag!在输入值传给程序之前控制其处理的方式负责控制输出字元的处理方式用于控制终端设备的硬件设置主要用来控制终端设备不同的特色符号下标 (初始值) 和意义(即c_cc[]数组对应下标的数值对应含义,如c_cc[VMIN] = 3):这些
2022-12-04 14:19:05 3254
原创 Firefly RK3399 PC pro Android 10下载验证
百度网盘 请输入提取码密码:1234下载后检查md5值,检查下载是否正确:解压编译image的路径:rockdev/Image-rk3399_roc_pc_plus/ROC-RK3399-PC-Pro_Android10_HDMI_221130.img如果中间编译错误,需要根据编译错误解决问题百度网盘 请输入提取码密码:1234烧写image的链接为:2. 使用USB线缆升级固件 — Firefly Wiki我使用的是windows的下载方式,方式如下:下载 Release_DriverAssistant.
2022-12-03 20:03:08 2025 2
原创 cmake入门教程 跨平台项目构建工具cmake介绍
cmake的安装命令如下:CMake提供cmake、ctest和cpack三个命令行工具分别负责构建、测试和打包。本文主要介绍cmake命令。生成构建系统(buildsystem,比如make工具对应的Makefile);执行构建(比如make),生成目标文件;执行测试、安装或打包。
2022-11-26 14:39:03 2749
原创 Firefly RK3399 PC pro开发板资料
Firefly | 让科技更简单,让生活更智能Firefly | 让科技更简单,让生活更智能串口调试 — Firefly Wiki波特率:1500000数据位:8停止位:1奇偶校验:无流控:无1. 更新固件介绍 — Firefly Wiki升级模式MaskRom 升级模式Loader 升级模式SD 升级模式简单描述1. 使用USB线将主板连接到电脑上;2. 硬件操作使板子进入升级模式;3. 在PC上使用USB升级单板固件。1. 使用USB线将主板连接到电脑上;
2022-11-19 07:16:18 1181
原创 Android博通BCM libbt-vendor.so 分析蓝牙初始化流程
主要通过android的libbt vendor的代码来说明博通蓝牙芯片的初始化流程,彻底了解蓝牙使能原理
2022-10-26 23:18:23 3247
原创 Android 7 btsnoop代码介绍
本文通过以下几个内容来介绍下Android 7的btsnoop1)btsnoop的分类2)btsnoop的启动以及结束实现3)btsnoop的写入实现以及调用。
2022-10-15 16:01:22 2801
原创 手机抓取蓝牙日志btsnoop的方法汇总(Android一直补充中)
一般如果手机厂商没有做限制的情况下,打开开发者选项,打开HCI日志手机功能,然后重启蓝牙就可以抓取了,蓝牙HCI日志功能如下图,每个手机显示可能略有差异。
2022-09-24 22:28:55 7079
原创 全面剖析ESP32创建Wi-Fi热点的过程
零. 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线
2022-05-08 20:22:16 3890
原创 ESP32 Bluedroid蓝牙main device API函数介绍
零. 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线
2022-05-02 20:38:57 2399
原创 IIC协议通信原理
零. 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线
2022-05-01 20:17:02 1473
原创 ESP32 UART串口通信
零. 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线
2022-04-29 07:47:07 10897 1
原创 ESP32 VHCI架构实现BLE扫描设备
零. 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线
2022-04-28 21:25:36 1941
原创 ESP32 Wi-Fi讲解,station连接热点案例
零. 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设..
2022-04-24 21:08:16 8114 2
stm32f1_mrvl88w8801应用笔记_20191220.pdf
2019-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人