自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式软件开发交流

欢迎关注“嵌入式软件开发交流”公众号

  • 博客(185)
  • 资源 (2)
  • 收藏
  • 关注

原创 嵌入式到底该怎么学

前言 其实一直有人问我嵌入式怎么学,今天跟大家讲讲我的理解。因为嵌入式是一个泛的概念,可能很多人认为嵌入式就是嵌入式Linux。但是其实并不仅仅只有Linux, 像STM32,51单片机也属于这个范畴之内的,它们有的也可以跑协议栈,跑ucos等系统。所以其实嵌入式是有很多方向的,选择一个方向,做好,做精,都是有前途的。接下来,跟大家探讨一下嵌入式的一些方向,和如何去学习。我以前也是摸索着过来的,...

2020-01-17 10:54:31 24199 1

原创 BLE基础知识(三)

原文首发于:http://kobe-onepiece.work/archives/5151前言经过前面两篇《BLE基础知识(一)》《BLE基础知识(二)》之后,我们对BLE有了基本的了解。我们平时用到比较多的GATT了。接着上篇来继续看看!!UUIDUUID就是通用唯一标识符。上一篇我们提到的Service (服务),Characteristic (特征),Descriptor (描述符) 等都有自己的UUID。因为一个设备肯定会有很多个服务,一个服务中也会包含多个特征,一个特征也可以包含多个描述符

2021-06-22 19:50:44 2329 1

原创 BLE基础知识(二)

原文首发于:http://kobe-onepiece.work/archives/5146前言上一篇《BLE基础知识(一)》聊到GAP,接下来继续来聊聊ATT, GATT等内容,这些在BLE中应用还是比较多的。ATT**ATT(Attribute protocol)**协议是为了允许设备读写保存在Server上的数据值。每个存储值就是一个属性。ATT定义了属性的内容,规定了访问属性的方法和权限。平时我们的BLE设备就是通过属性进行数据收发的。ATT定义了两种角色:Client和Server。

2021-06-22 19:32:04 2337 1

原创 BLE基础知识(一)

原文首发于:http://kobe-onepiece.work/archives/5139前言前面通过《蓝牙基础知识(一)》和《蓝牙基础知识(二)》两篇,我们了解了一些蓝牙的基本概念。之前说过蓝牙分为BR/EDR和BLE,接下来,我们先来看看BLE的内容。BLE工作频段和信道BLE工作在2400-2483.5 MHz频段,有40个信道,关系如下:有3个用于广播(37 ~ 39),另外37个为通用信道(0 ~ 36)。BLE设备状态BLE设备在链路层定义了7种状态:待机状态(Standby

2021-05-06 11:18:45 2245

原创 蓝牙基础知识(二)

原文首发于:http://kobe-onepiece.work/archives/5128前言接着上一篇《蓝牙基础知识(一)》,我们继续看看蓝牙的更多的内容。蓝牙架构上图有三个部分:Host,HCI和Controller。Host: 简单理解就是主控。HCI:Host Controller Interface, 主机控制器接口,用于Host和Controller之间通信的接口,比如Uart,USB等。Controller: 简单理解就是蓝牙芯片。 举个简单的例子来理解:现在很多Andr

2021-05-06 11:03:47 1307

原创 蓝牙基础知识(一)

原文首发于:http://kobe-onepiece.work/archives/5123前言最近刚好一直在研究蓝牙相关的内容,所以想来和大家一起分享。首先我们依然以基础概念开始,因为一头扎进代码,只会让你不知所措!BR/EDR和BLE1)经典蓝牙(BR/EDR):泛指支持蓝牙协议在 4.0 以下的模块,一般用于数据量比较大的传输,比如:语音、音乐等。所以像蓝牙音箱之类的,里面的芯片都支持经典蓝牙。2)低功耗蓝牙(BLE):指支持蓝牙协议 4.0 或更高的模块,也称为 BLE 模块,最大的特点

2021-04-03 21:06:47 1513 1

转载 蓝牙Beacon广播数据包格式以及解析

1. 获取原始蓝牙广播包首先需要开启开发者选项:不同Android手机打开此功能的方法基本一致,首先打开设置,然后找到系统版本号(例如MIUI系统的全部参数选项的MIUI版本),快速连续点击5次以上即可自动打开开发者选项;然后选择"打开蓝牙数据包日志"功能,接着打开蓝牙功能即可开始记录数据包,日志文件存放位置在不同的手机上略有不同;最后把日志复制到电脑上等待处理2. 安装WireShark软件对于ubuntu系统来说,只需要输入以下命令即可成功安装:sudo apt-get install wire

2021-02-24 09:21:16 1724

原创 CMake实战(三)

原文首发于:http://kobe-onepiece.work/archives/5048前言前面两篇《CMake实战(一)》,《CMake实战(二)》,主要是介绍单目录和多目录的编译,接下来看一下自定义编译选项和交叉编译。使用实例下面源码在《CMake实战(二)》的基础上进行修改(1) 修改main.c的内容如下:#include<stdio.h>#include "hello.h"#include "config.h"int main(void){ printH

2021-02-18 15:15:10 2128

原创 CMake实战(二)

原文首发于:http://kobe-onepiece.work/archives/5030前言上一篇《CMake实战(一)》我们是把所有文件放在同一个目录下,而平常开发时,我们会将源文件进行分类,放到不同的目录下。接下来我们来看一下具体要怎么操作。使用实例(1)文件内容同上一篇,目录结构如下:./test2 | +--- main.c | +--- hello/ | +--- hello.c |

2021-02-07 15:49:06 2067

原创 Qt5.14.0 windeployqt bug

Qt5.14.0无法使用windeployqt, 会出现5.14: MinGW: windeployqt fails with “Unable to find the platform plugin.”C:\dev\5-mingw-514\qt-514m\qtbase\examples\widgets\mainwindows\mdi\mdi.exe 64 bit, debug executableDirect dependencies: Qt5Core Qt5Gui Qt5WidgetsAll de

2021-02-06 11:52:47 2041

原创 CMake实战(一)

原文首发于:http://kobe-onepiece.work/archives/5011前言CMake和Autotools一样,都是项目构建工具。可以简单理解为,帮助我们生成Makefile,方便编译。使用实例(1) 创建main.c/hello.c/hello.h文件,内容如下://hello.c#include<stdio.h>#include "hello.h"int printHello(void){ printf("Hello,World\n");}

2021-02-04 19:08:05 2242 3

原创 目前该不该入坑鸿蒙

最近有一些朋友问现在该不该学习鸿蒙系统,如果不学是不是会落伍了啊?今天跟大家说说我的看法!学习的目的首先我们来想想学习的目的吧!可能每个人学习一种东西的目的是不同,有的人是希望更有竞争力,可以拿到更高的薪资;有的人可能只是想为开源做点贡献;或者只是想学习一下别人的代码。所以我们需要去明确自己的学习目的,你只有明确了,你才能去做选择!如果你只是想为开源做点贡献或只是想学习别人的代码,那接下来的内容就可以不用看了,赶紧去学习吧!OK,那我们来看看学习目的是为了找相关工作,拿更高薪资的情况吧!我想大部分人

2020-11-29 11:52:16 7523 2

原创 Linux驱动分析之Framebuffer驱动

点击上方 蓝字关注我们! 前言 前面我们了解了LCD的基本架构《Linux驱动分析之LCD驱动架构》,接下来我们拿个具体的实例来分析分析。这样可以了解其大概是如何使用和工作的。F...

2020-08-15 17:14:49 7508 1

原创 Linux驱动分析之LCD驱动架构

在Linux设备中,LCD显示采用了帧缓冲(framebuffer)技术,所以LCD驱动也叫Framebuffer驱动,所以L...

2020-08-06 08:15:00 7580

原创 Linux应用开发之coredump

程序崩溃往往是最不好调试的,如果是很容易复现的现象,可能我们还可以比较容易分析出问题所在。但是对于那种需要几天,或者在某种特殊条件下才能触发的现象。我们总...

2020-07-28 18:32:00 7385

原创 Linux内核中断系统

点击上方蓝色字关注我们!前言 中断在驱动中是非常常用的,无论是外部的GPIO中断,还是SPI,I2C等发送或接收中断,都是必不可少的。所以今天来看看Linux中的中断处理。中断分类...

2020-07-20 13:18:15 7419

原创 gdb调试段错误

前言 使用gdb来调试程序应该算是Linux开发的必备技能吧,今天来看看如何使用gdb调试段错误(Segmentation fault)。 如何...

2020-07-08 22:10:27 7695

原创 Linux驱动分析之Uart驱动

前言 之前对Uart驱动的整体架构做了介绍,现在来分析具体的驱动程序。我们以NXP 的 IMX6来进行分析。Uart驱动分析内核:4.20芯片:NXP IMX6...

2020-06-29 21:42:10 7953 1

原创 Linux驱动分析之Uart驱动架构

Uart体系结构 UART设备驱动可以使用tty驱动的框架来实现,但是因为串口之间有共性,所以Linux在tty接口上封装了一层(serial core)。后面我...

2020-06-20 12:26:25 7774

原创 如何提高C编程能力

前言 目前C语言被应用得最多的估计就是嵌入式了,在学校学习完C语言,考完等级考试之后,可能就会觉得自己的C语言掌握的还可以了。但这其实只能算入门,像...

2020-06-08 08:05:00 8459 1

原创 Linux常用开源库

前言 做应用开发的人,经常需要去封装一些接口,或者去实现一些复杂的功能。但是这些功能接口实现不仅费时,而且还不一定能保证稳定性。这也是导致很多人喜欢使用开源库的原因之一。如果满足需...

2020-05-22 21:56:54 7544

转载 Linux下实现sleep

sleep:一、 普通版本1、基本设计思路:注册SIGALRM信号的处理函数;调用alarm(nsecs)设定闹钟;调⽤pause等待,内核切换到别的进程运行;nsecs秒之后,闹钟超时,内核发SIGALRM给这个进程 ;从内核态返回这个进程的⽤户态之前处理未决信号,发现有SIGALRM信号,其处理函数是sig_alrm;切换到用户态执行sig_alrm函数,进⼊sig_alrm...

2020-05-07 10:24:30 16139

原创 Linux信号及工作原理

什么是信号 信号可以理解为软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是差不多的。信号是异步的,一个进程不必通过任何...

2020-05-06 18:05:00 7480

原创 Linux驱动之I2C设备驱动

内核:4.20芯片:HYM8563 RTC下面的代码分析主要都在注释中,会按照驱动中函数的执行顺序分析。一、加载和卸载函数static const struct i2c_device_id hym8563_id[] = { { "hym8563", 0 }, {},};MODULE_DEVICE_TABLE(i2c, hym8563_id);static const str...

2020-05-01 21:05:01 18079

原创 Linux驱动分析之SPI设备

前言前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简...

2020-04-29 09:05:00 7550

原创 Linux驱动分析之SPI控制器

前言之前对SPI驱动的整体架构做了介绍,现在来分析具体的驱动程序。之前说过,SPI驱动分为设备驱动和控制器驱动。先来分析控制器驱动。我们以RockChip的控制器来作为分析。SP...

2020-04-23 21:28:20 7572 2

原创 socket返回值为0的问题

一、问题描述socket_id为0,1,2的是给标准输入输出用的。当调用socket()来创建套接字时,返回值确实0,这时候如果进行读写,就是直接打印到控制台了。二、什么情况下socket返回值为01. 如果我们调用close(0)之后,socket_id = 0的便处于“空闲”状态。用户利用socket函数创建套接字时,便可能会将0分配给新创建的socket。这种情况下,一般是套接字声明...

2020-04-15 14:50:13 20561

原创 Linux驱动分析之SPI驱动架构

SPI体系结构主要由三部分组成:(1) SPI核心(2) SPI控制器驱动(3) SPI设备驱动基本和I2C的架构差不多重要结构体内核版本:3.7.6spi_master//SPI控制器...

2020-04-14 19:46:12 7481

原创 深入理解Socket的读写

前言对于Linux网络编程,有很多坑需要我们去踩。在这个时候,我们才会知道理论知识的重要性。无论是哪种语言,网络编程都可以写成厚厚的一本书。举个例子,比如“当网络断掉,我们调用write去往socket中写入数据,为什么返回正常写入呢?”。所以有空多看看《TCP/IP详解》,《UNIX网络编程》等经典书籍来补充网络知识。深入理解write首先,我们来解决上面的问题。为什么网络断了,还能wri...

2020-03-10 20:25:36 19896

原创 printf缓冲区刷新问题

一、前言首先,printf缓冲区的问题,平时不大会发现,当时是在使用sleep函数时出现的。先来看一下问题。#include <stdio.h>int main(){ printf("hello\n"); sleep(1); //延迟1秒 printf("world\n"); return 0;}上面的代码正常输出:hellowor...

2020-02-03 22:33:20 20254

原创 STM32CubeMx教程(一) -----界面介绍

一、主界面菜单栏: File、Window 、Help, 菜单栏中覆盖了下面几项功能新建工程: 可以通过三种方式来新建工程通过选择芯片型号通过选择板子型号通过选择芯片型号及封装安装软件包: 下载官方的软件开发包已存在工程: 快速打开已经创建好的工程欢迎大家关注我的微信公众号!!...

2019-12-28 20:09:12 19963

转载 linux高精度struct timespec 和 struct timeval

一、struct timespec 定义:typedef long time_t;#ifndef _TIMESPEC#define _TIMESPECstruct timespec { time_t tv_sec; // seconds long tv_nsec; // and nanoseconds };#endifstruct timespec有两个成员,一个是秒,一个是...

2019-12-25 10:15:22 19430

原创 自平衡小车资料

收集了一些智能小车和自平衡小车的资料,分享给大家!对于一些电赛的小伙伴,或者学习嵌入式的小伙伴,一定会有帮助的。公众号“嵌入式软件开发交流”后台回复【平衡小车】获取资料欢迎大家关注我的微信公众号!!...

2019-11-28 19:41:45 19779

转载 【IoT】物联网之 WIFI 一键配网 smartConfig 浅析(ESP32)

一、背景物联网时代技术开始规模化服务于民众,方便快捷显得尤为重要,WIFI 直连便是一个典型案例。目前主流的 WIFI 配置模式有以下 2 种:1、智能硬件处于 AP 模式(类似路由器,组成局域网),手机用于 STA 模式手机连接到处于 AP 模式的智能硬件后组成局域网,手机发送需要连接路由的 SSID 及密码至智能硬件,智能硬件主动去连接指定路由后,完成配网2、一键配网(smartCo...

2019-11-12 15:01:01 19297

原创 Ubuntu切换默认sh

一、bash与dash从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNU Bourne-Again Shell).但Login Shell还是bash。原因是dash更快、更高效,而且它符合POSIX规范。Ubuntu在启动的时候会运行很多shell脚本,使用dash可以加快启动速度。二、切换bash和dash先...

2019-11-12 14:33:37 19537

原创 嵌入式开发资料汇总

一、单片机51单片机普中开发板资料:https://pan.baidu.com/s/1eQgPuL0

2019-10-23 13:38:07 22230

原创 Linux驱动之I2C控制器驱动

平台: 三星2440内核版本:4.20分析将会按照驱动中函数的执行顺序。一、装载和卸载函数static const struct platform_device_id s3c24xx_driver_ids[] = { { .name = "s3c2410-i2c", .driver_data = 0, }, { .name = "s3c2440-i2c", .dri...

2019-10-09 19:52:36 20143 1

原创 SourceInsight4.0高亮快捷键不能用

问题:SourceInsight4.0的高亮快捷键无法使用解决方法:4.0之后高亮的快捷键从shift+F8换成了F8,系统中有其他软件占用了该F8快捷键。我是有道词典占用了该快捷键(取词功能)。关闭之后就OK了,或者修改快捷键。...

2019-09-19 09:11:08 22511

原创 Linux驱动之I2C驱动架构

一、Linux的I2C体系结构主要由三部分组成:(1) I2C核心提供I2C控制器和设备驱动的注册和注销方法,I2C通信方法,与适配器无关的代码以及探测设备等。(2) I2C控制器驱动(适配器)(3) I2C设备驱动二、重要的结构体i2c_adapter//i2c控制器(适配器)struct i2c_adapter { struct module *owner; uns...

2019-09-15 11:13:47 19174

原创 ST官网下载STM32固件库

步骤一:打开ST官网https://www.stmicroelectronics.com.cn/content/st_com/zh.html步骤二:点击工具和软件下–》嵌入式软件–》STM32微控制器软件步骤三:点击STM32标准外设软件库或STM32Cube MCU和MPU包步骤四:选择对应的型号有一些型号没有的可以到“STM32Cube MCU和MPU包” 找找。步骤五:下载...

2019-08-20 09:35:57 25347 2

BitBake User Manual_3.0.pdf

BitBake官方使用手册,英文版,讲解BitBake工具的使用,配方文件的使用。 Linux开发必备。。。

2019-12-13

test_pcm_file.pcm

pcm文件,可以用于pcm格式音频文件

2020-11-10

空空如也

空空如也

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

TA关注的人 TA的粉丝

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