自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

百无禁忌想,脚踏实地干

输出倒逼输入,永远保持学习的心态

  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 【嵌入式Bluetooth应用开发笔记】第一篇:DBUS概述与蓝牙开发小试牛刀

gdbus是Glib库提供的DBus API的实现,是基于DBus C API的一层封装。Glib是GNOME桌面环境的核心库,提供了许多常用的工具和组件,如事件循环、线程、内存管理、字符串处理、数据结构等。gdbus封装了DBus API,提供了一组更易用的API,比DBus C API更加简洁、直观、安全和高效。使用gdbus开发DBus应用程序,可以大大提高开发效率和代码质量。

2023-03-09 15:22:53 3532

原创 【嵌入式Bluetooth应用开发笔记】第四篇:初探蓝牙HOST及应用开发(持续更新ing)

蓝牙设备可能提供多种不同类型的服务和特性,这些服务和特性通常会以UUID(Universally Unique Identifier,通用唯一标识符)的形式标识。以下是一些常见的服务和特性:* GAP(Generic Access Profile,通用接入规范):提供设备连接和广告功能。* GATT(Generic Attribute Profile,通用属性规范):提供与设备交互的标准方式,包括读取和写入设备属性。

2023-03-28 15:13:44 1384

原创 【嵌入式Bluetooth应用开发笔记】第三篇:初探BLUE ALSA应用开发

BlueALSA(Bluetooth Audio ALSA)是一种将蓝牙音频设备连接到 ALSA 音频系统的桥接程序。它提供了一个蓝牙音频设备的 ALSA 插件,允许使用 ALSA API 直接从蓝牙音频设备读取和写入音频数据,从而使得蓝牙音频设备能够以与其他 ALSA 兼容设备相同的方式工作。通过使用 BlueALSA,用户可以在 Linux 系统上连接蓝牙音频设备,并将其作为标准的 ALSA 设备使用。

2023-03-09 16:47:06 2405

原创 【嵌入式Bluetooth应用开发笔记】第二篇:上手BLUEZ应用开发

BlueZ是一个开源的蓝牙协议栈,提供了丰富的API和工具,支持Linux系统中的蓝牙应用开发。BlueZ提供的API包括D-Bus API、HCI API、L2CAP API、RFCOMM API、SDP API、MGMT API等,开发者可以使用这些API实现自己的蓝牙应用程序。

2023-03-09 16:10:28 2801

原创 【Linux】块设备驱动

块设备驱动程序不同于字符设备驱动程序,它需要将每一次的“读/写”操作放入队列进行优化后在执行,这样做是为了提高读写的效率。比如:在硬件中里有两个磁盘A和B,软件需要读A的磁盘,再跳到磁盘B写,然后跳回A读,这里要两次跳转,当这个跳转次数多的时候将会十分耗时间。而块设备驱动程序将这次操作优化成:将读A磁盘的所有操作完成后在去磁盘B写,这样只需要跳转一次,有点类似与电梯算法(将同次需要下的人运输下去,然后再运输需要上的人)。 接下俩讲讲块设备的框架:当上层App操作文件(read/...

2020-07-01 22:34:49 169

原创 【Linux】输入子系统——分离分层概念

在输入子系统里input.c会向上提供给App一个接口,将底层相关的代码分层开来,而底层的代码有分离出硬件相关和软件相关的代码。 了解了概念,在分离分层概念的基础上产生了总线设备驱动模型(bus_dev_drv),在总线bus下有两个结构体device(硬件相关)和driver(驱动相关),分别将device和driver放入dev链表和drv链表。当硬件发生变化的时候,device_add和driver_register会分别取出各自的链表用.match函数进行比较,如果...

2020-07-01 22:25:53 274

原创 【Linux】USB驱动程序

我们把USB设备插入电脑的时候,比如安卓手机,电脑会弹出“发现XXX设备”并自动或者弹出对话框选择安装驱动程序,这一系列的操作都是USB总线驱动程序实现的,总的来说,USB总线驱动程序负责识别USB设别并为之找到对应的驱动设备。而USB总线驱动程序之所以能够是被USB设备的种类取决于PC与USB设备之间的规范:当USB插入的时候,USB总线驱动程序会发出命令,等待USB设备返回相关信息,USB设备收到命令后会根据规范返回自己的信息。 那么在USB总线驱动程序识别由USB设备插入...

2020-06-27 23:43:09 261

原创 【Linux】输入子系统通俗讲解

在字符设备驱动程序里,当我们要调用某个设备驱动的时候需要在应用层做open(“dev/buttons”,O_RDWR)类似的打开操作,这时候需要明确知道“dev/buttons”。但是在实际的开发过程中,应用层不会这么明确的写,比如Qt程序,那么应该如何处理?就要使用Linux现成的驱动:输入子系统 在字符设备里,我们需要自己指定major主设备号、file_operation结构体、在入口出口函数中注册和注销这个结构体。而在输入子系统中,这些都是现成的系统写好的。...

2020-06-27 15:10:43 238

原创 4.4【U-boot根文件系统】 挂载虚拟根文件系统

继续完善根文件系统 cd first_fs/ 创建proc目录:mkdirproc 挂载虚拟根文件系统 加一个配置文件:vi etc/inittab console::askfirst:-/bin/sh //之前...

2019-08-08 15:24:03 333

原创 4.3【根文件系统】构建根文件系统

一、创建文件 1、跳转到/work/nfs_root/first_fs查看:cd/work/nfs_root/first_fs 2、查看文件下的主设备号和次设备号:ls dev/console /dev/null -l 会查看到以下内容crw------- 1 root root 5,1 2010-11-26-07;47 /dev/co...

2019-08-07 17:56:19 204

原创 4.2【根文件系统】init进程分析

一、busybox:ls,cp等命令的组合 执行:ls"/sbin/init 会发现/sbin/init-->../bin/busybox 所以"/sbin/init"也是在busybox进程中,所以要分析这些,需要进入busybox中分析二、uboot启动内核,内核启动应用程序 内核----->../sbit/init/----->应用程序...

2019-08-07 17:55:26 250

原创 4.1【Linux】启动第一个程序

一、分析init_post 从内核启动流程可知,start_kernel最后会启动init_port来执行应用程序的代码(linux-2.6.22.6\init)static int noinline init_post(void){ ...省略...if (sys_open((const char __user *) "/dev/console", O_...

2019-08-07 17:51:18 406

原创 3.5【Linux】字符设备驱动程序

一、驱动框架搭建①写出led_open、led_read②怎么告诉内核 --->定义一个file_operations结构,填充它Linux下的file_operations结构体(linux-2.6.22.6\include\linux)struct file_operations {struct module *owner;lo...

2019-08-07 17:38:00 317

原创 3.3【U-boot分析】内核启动流程分析

内核的最终目的:运用应用程序一、内核编译 一)解压缩:tar xjf linux-linux-2.6.22.6.tar.bz2 一)打补丁: 用 patch 命令, -p 是指需要忽略的目录层数。如果打补丁,在源代码里有显示。 --- 是指源文件。 +++ 是指修改过的文件。 ...

2019-08-07 17:20:54 266

原创 3.2【U-boot分析】从零手写BootLoader

一、BootLoader的目标是启动内核 1)从Flash上把内核读入内存 a)能读取Flash b)初始化内存/时钟/其他 2)启动 a)设置参数 b)跳转执行二、最简单的BootLoader编写步骤 1...

2019-08-07 17:17:11 410

原创 3.1【U-boot分析】Bootloader概念及U-boo分析

一、了解BootLoader BootLoader(引导程序)是硬件上电之后运行的第一段程序,主要用来初始化硬件设备。BootLoader的实现依赖于硬件设备。所以在移植BootLoader的时候需要进行配置。uboot是BootLoader中最著名的一种,它支持的CPU架构比较多,所以被使用的范围也比较广。但是即使这样也不能拿来主义,需要更改相关配置后才能够移植到自己所使用的的板子上。...

2019-08-07 17:13:53 375

原创 Qt使用GRPC之grpc配置

第一步:新建文件夹,命名为:grpcSetting,进入grpcSetting,创建include和staticlib两个文件夹。打开staticlib文件夹,在其下面创建debug和release第二步:打开C:\Program Files (x86)\grpc文件夹,进入下面的include文件,复制其下面的所有文件,粘贴到grpcSetting文件夹下的include第三步:打开...

2019-07-05 10:02:14 5981

原创 Qt使用GRPC之grpc安装

第一步:安装grpc的工具 在此之前你需要已经安装好git、cmake、vs2015(或者其他版本)。后续相关软件的安装步骤我也会陆续写好。 1>打开https://github.com/grpc/grpc网址,点击CloneorDownload,复制网址https://github.com/grpc/grpc.git 2>新建一个文件,命名为grpc...

2019-07-03 17:48:23 4493 5

原创 如何在Windows下使用make等命令

一、下载安装MinGWMinGW下载网页:http://sourceforge.net/projects/mingw/files/latest/download?source=files二、设置环境变量右击计算机->属性->高级系统设置->环境变量,在系统变量中找到PATH,将MinGW安装目录里的bin文件夹的地址添加到PATH里面,(注意:PATH里两个目录之间以...

2019-06-13 15:55:00 12238 6

原创 Qt遇到的问题汇总(持续更新)

问题一:错误:......error: undefined reference to `vtable for xxxxx'解决方法:检查问题所在的类中方法是否加入了该类的类名,例如bool closesql()要加入类名sql得到bool sql::closesql(){如果检查出错误后还是不行,请试着执行下Qmake 然后重新构建问题二:如何把一个类的操作好的数据显示...

2019-04-30 18:28:21 2104

原创 2.3【裸机部分】掌握ARM芯片时钟体系

一、时钟体系结构 CPU-FCLK:400MHZ AHB总线-HCLK:136MHZ APB总线-PCLK:68MHZ 文档解释: 中文翻译:FCLK、HCLK和PCLK,FCLK由ARM920T使用。HCLK用于AHB总线,由ARM920T、内存控制器、中断控制器、LCD控制器、DMA和USB主机块。PCLK用于APB总线,用于WDT、...

2019-04-06 12:24:48 483

原创 I2C读写CAT24WCxx存储器

目录一、STM32模拟I2C通讯 1.1 I2C总线的数据传送二、CAT24WCxx存储器的工作原理 2.1总线时序 2.2 写周期时序 2.3 字节写 2.4 读字节一、STM32模拟I2C通讯 1.1 I2C总线的数据传送 1、 数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间...

2019-04-04 16:39:00 1767

原创 2.1【裸机部分】点亮LED灯

目录一、所需知识点储备二、点亮LED功能实现四、三个LED循环点亮五、按键点亮LED一、所需知识点储备 常见二极管和三极管 二极管:当A点电流大于B点时,二极管从左往右导通 三极管:左图:当A点电流大于B点时,电流从上往下走,三极管导通; ...

2019-04-04 16:34:36 600

原创 1.0【熟悉开发板】步骤和常见问题

目录一、熟悉使用串口连接二、使用eop烧写裸板程序三、使用uboot烧写裸板程序一、熟悉使用串口连接 1、插入电源线和serial插口,连接电源和电脑 2、电脑会自动加载驱动程序,如果没有则使用PL2303_Prolific_DriverInstaller_v1.7.0.exe软件将加载驱动 3、使用MobaXterm_Personal_10.4...

2019-04-04 16:29:00 428

原创 MySQL的安装与搭建

目录一、安装MySQL 第一种安装方式(zip) 第二种安装方式(msi)常见问题二、安装Navicat一、安装MySQL 第一种安装方式(zip) 第一步:打开网址:https://www.mysql.com/downloads/ 第二步:选择DOWNLOADS 第三步:选择 MySQL Community Edit...

2019-04-04 16:26:20 257

原创 1.1【熟悉开发板】详解Linux命令

目录一、Linux命令所需要的单词二、常用Linux命令解释记忆三、常见命令分析四、vi编辑器五、linux进阶指令一、Linux命令所需要的单词单词 翻译======================directory 目录list ...

2019-02-11 20:47:29 310

原创 浅谈Spring+SpringMVC+Mybatis——Spring篇(一)

Spring篇目录Spring篇一、Spring入门    1.1  Spring的由来和体系结构二、Spring IoC    2.1 Spring IoC的基本概念:    2.2 Spring IoC容器:    2.3 依赖注入三、Spring Bean    3.1 Bean的实例化    3.2 Bean的生命周期    3.3 Bean...

2018-12-05 16:43:39 351

原创 安装Numpy+MKL和Scipy

1、务必!一定!肯定!必须!使用Chrome访问:https://www.lfd.uci.edu/~gohlke/pythonlibs,否则可能会出现下载页面4042、Win+R→CMD,输入python,查询下载的Python版本,例如我是Python 3.7.0,电脑64位,则需要下载cp37,amd64的numpy‑1.15.1+mkl‑cp37‑cp37m‑win_amd64.whl,...

2018-09-21 20:57:35 15314 5

原创 JDBC编程

名称解释:          (1)JDBC:Java DataBase Connectivity      Java数据库连接              (2)ODBC:Open DataBase Connectivity      开放数据库连接              (3)API: Application Programming Interface       应用程序编程接...

2018-08-15 17:02:06 150

原创 MySQL的总结

一、MySQL的连接      1、使用之前记得要在工程的build path中添加 MySQL-connector-Java 的 jar 包     2、使用DriverManager 连接数据库;     3、使用Class.forName"(com.mysql.jdbc.Driver")加载驱动;     4、登录连接数据库(三种方法)     5、向数据库发送SQL语句...

2018-08-15 16:58:54 131

转载 SPI简介

SPI工作原理总结硬件上为4根线。主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。串行移位寄存器通过MOSI信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必...

2018-07-06 10:25:54 938

原创 解析JSON类型APP开发

一、以天气APP 为模型1、创建数据库和表     在app/build.gradle文件中,添加一下内容   dependencies{     compile 'org.litepal.android:core:1.4.1'     compile 'com.squareup.okhttp3:okhttp:3.4.1'     compile 'com.google.code.gson:g...

2018-07-02 19:23:00 1185

转载 KEIL编译错误信息表

错误代码及错误信息 错误释义 error 1: Out of memory 内存溢出 error 2: Identifier expected 缺标识符 error 3: Unknown identifier 未定义的标识符 error 4: Duplicate identifier 重复定义的标识符 error 5: Syntax error 语法错误 error 6: Error in rea...

2018-06-30 16:00:01 3062 1

原创 鸿蒙操作系统详解

鸿蒙是一个面向场景的智能操作系统。很多人刚开始把它与Linux相比,这是不对的,首先Linux只是一个内核,在Linux之上我们开发者还需要做很多的操作,比如驱动开发和应用开发才能让用户能够正常的操作。鸿蒙的LiteOS才是用来对标Linux的,值得注意的是LiteOS和Linux是一样的,都是宏内核而不是之前宣传的微内核,鸿蒙的微内核可能要到过段时间才会发布。那么鸿蒙对标的产品是什么呢?是安卓和Windows。这也让安卓特别的难受,因为与它正在开发的Funchsia系统在地位上有较大的吻合,都是

2018-06-29 23:27:23 16010

原创 LED原理与FSMC原理

一、STM32与触摸屏的连接方式LCD-CS:LCD片选信号;LCD-RST:LCD复位信号;nWE:写使能,连接LCD的RW脚;nOE:输出使能连接LCD的RD脚。RS:命令/数据标志(0,读写命令;1,读写数据);D[15:0]:16位双向数据线;LIGHT-PWM:LCD背光控制。    //FSMC管脚初始化    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_...

2018-06-29 23:26:03 2451

原创 SPI读写SST25VF016B

一、SPI特性基于三条线的全双工同步传输● 基于双线的单工同步传输,其中一条可作为双向数据线● 8 位或16 位传输帧格式选择● 主模式或从模式操作● 多主模式功能● 8 个主模式波特率预分频器(最大值为fPCLK/2)● 从模式频率(最大值为fPCLK/2)● 对于主模式和从模式都可实现更快的通信● 对于主模式和从模式都可通过硬件或软件进行NSS 管理:动态切换主/从操作● 可编程的时钟极性和相...

2018-06-26 21:01:06 19464

原创 外部中断及其中断优先级管理

一、外部中断的一般配置     ①初始化IO口为输入            GPIO_Init();       ②开启IO口复用时钟            RCC_APB2PeriphClockCmg(RCC_APB2Periph_AFIO,ENABLE)       ③设置IO口与中断线的映射关系            void GPIO_EXTILineConfig();          ...

2018-06-26 20:10:41 13080 2

原创 端口复用和重映射

一、端口复用    端口复用就是把某个GPIO口用作其他功能:例如使用PA9,PA10引脚复用成串口1发送接收引脚.    1.1、端口复用配置过程GPIO端口时钟使能。复用外设时钟使能。端口模式配置。 GPIO_Init()函数。    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);     比如你要将端口PA9,PA10复用为串口,所...

2018-06-26 20:07:37 4498

仿淘宝支付宝的相关代码

仿淘宝支付宝的相关代码

2016-10-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除