自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(195)
  • 资源 (2)
  • 收藏
  • 关注

原创 嵌入式到底该怎么学

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

2020-01-17 10:54:31 30251 2

原创 Zigbee智能家居方案设计

Zigbee智能家居方案设计

2023-11-13 21:49:37 718

转载 史上最全智能手表主控芯片资料

高通Snapdragon Wear 2100是一款专门针对智能手表、智能手环、追踪器、AR增强现实眼镜等可穿戴设备推出的平台,最大亮点就是网络支持十分丰富,整合的X5 LTE全球全网通基带支持各种4G/3G/2G网络制式,同时还有802.11n 2.4GHz Wi-Fi、蓝牙4.1 LE、NFC、GPS导航,无论联网、通话、出行、支付都不在话下。三星半导体的 Exynos猎户座 系列是移动处理器 产品的统称,旨在为整个 IT 领域的现有设备提供支持,从优质移动设备到汽车和物联网应用,不一而足。

2023-05-07 18:19:05 4180 1

原创 什么是I/O内存?

I/O内存也称为Memory-Mapped I/O(MMIO), 它是指一种编址方式,不同cpu平台使用的编址方式不同,一种是“IO内存”方式,也叫统一编址方式,是指内存和外设的地址是在同一个地址空间上的,比如我们常见的ARM、MIPS等平台;还有另外一种叫独立编址方式,是指内存的地址空间和外设的地址空间是分开的,比如x86平台。

2022-09-18 10:55:04 1166

原创 ELF文件格式入门

ELF: “可执行可连接格式”,最初由 UNIX系统实验室做为应用程序二进制接口(ABI)的一部分而制定和发布。简单说就是一种文件格式。

2022-09-18 10:22:38 1342 1

原创 一文搞懂SDIO

SDIO总线简介SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。什么是SDIO卡SDIO卡,是使用SD总线以及SD指令的IO设备。SDIO卡的外形和接口和SD卡是兼容的,但是实现的不只是存储功能,还能实现其它的功能,如蓝牙、WIFI等。比如下面的就是一个实现了WIFI功能,而且外形和接口与SD卡兼容的SDIO卡。什么是组合卡组

2022-05-01 10:44:04 21532 2

原创 Linux驱动分析之MMC子系统框架

前言上一篇《一文搞懂SDIO》简单介绍了SDIO接口及相关的协议。接下来来看一下Linux提供的驱动框架。MMC子系统介绍Linux内核中,MMC不仅是一个驱动,而是一个子系统。内核把mmc, sd以及sdio三者的驱动代码整合在一起,俗称MMC子系统。源码位于drivers/mmc下。mmc目录下有core和host两个文件夹(以前的版本可能还有card目录,现在已经和core目录合并了)。MMC整体框架Host:针对不同主机端的SDHC、MMC控制器的驱动,这部分需要由驱动工程师来完成。

2022-05-01 10:38:14 1973 1

原创 Linux驱动分析之MMC Host驱动

前言前面聊了MMC子系统《Linux驱动分析之MMC子系统框架》,接下来我们拿个MMC Host驱动分析一下,来看看大致流程是怎样的。文章很长,代码很多,看个流程即可。Host驱动分析Linux版本:5.15芯片平台:RK3288部分源码路径:drivers/mmc/host/dw_mmc-rockchip.cdrivers/mmc/host/dw_mmc_pltfm.cdrivers/mmc/host/dw_mmc.c1.装载和卸载函数//驱动数据static const struc

2022-05-01 10:31:29 2277

原创 推荐几款SSH客户端

前言对于经常使用Linux服务器的,应该都对SSH比较熟悉吧!特别是做运维的,而对于做Linux或Android系统开发的,一般会在公司搭建一台性能强劲的服务器,然后大家一起在上面做开发。大家一般都是通过SSH客户端登录到服务器上进行开发。那接下来给大家推荐几款平时常用的SSH客户端。puttyputty是一款免费的,界面简洁的SSH工具。虽然简洁到让你觉得它有点Low,但功能还是很全面的。下载下来即可使用,不需要进行安装。下载地址:https://www.chiark.greenend.org

2022-05-01 10:22:30 2328

原创 【通信协议】一文搞懂SPI

SPI总线简介SPI(Serial Peripheral Interface)是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。接口定义SPI接口共有4根信号线,分别是:片选信号、时钟信号、串行输出信号、串行输入信号。MOSI:Master数据输出,Slave数据输入MISO:Master数据输入,Slave数据输出SCLK :时钟信号,由Master产生SS:片选信号,由Master控制时钟极性和时钟相位在SPI操作中,最重

2022-01-01 19:27:58 5641 1

原创 嵌入式到底应该选择驱动开发,还是应用开发?

嵌入式到底应该选择驱动开发,还是应用开发?

2022-01-01 16:38:46 7058

原创 一文了解USB Type-C

前言现在的USB Type-C已经被广泛使用,移动设备基本都是使用Type-C。它主要是用于快充和作为音频接口。最近欧盟还要求电子设备统一使用Type-C接口,来防止浪费。接下来我们来简单了解这个接口。USB Type-C简介USB Type-C,又称USB-C,外观上最大特点在于其上下端完全一致,它不再区分USB正反面。USB-C只是一个接口,不一定支持USB 3.x或Power Delivery(有些手机的Type-C仍然使用USB 2.0)。接口定义母头公头通过上面的图可以看出P

2021-10-15 10:31:04 15427

原创 BLE基础知识(三)

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

2021-06-22 19:50:44 11467 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 11366 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 8365

原创 蓝牙基础知识(二)

原文首发于: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 5855 1

原创 蓝牙基础知识(一)

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

2021-04-03 21:06:47 6890 2

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

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

2021-02-24 09:21:16 8229

原创 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 6100

原创 CMake实战(二)

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

2021-02-07 15:49:06 6029

原创 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 6438

原创 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 6196 3

原创 目前该不该入坑鸿蒙

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

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

原创 Linux驱动分析之Framebuffer驱动

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

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

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

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

2020-08-06 08:15:00 12039

原创 Linux应用开发之coredump

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

2020-07-28 18:32:00 11440

原创 Linux内核中断系统

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

2020-07-20 13:18:15 11434

原创 gdb调试段错误

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

2020-07-08 22:10:27 12724 1

原创 Linux驱动分析之Uart驱动

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

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

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

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

2020-06-20 12:26:25 12848

原创 如何提高C编程能力

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

2020-06-08 08:05:00 14222 2

原创 Linux常用开源库

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

2020-05-22 21:56:54 11898 1

转载 Linux下实现sleep

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

2020-05-07 10:24:30 20155

原创 Linux信号及工作原理

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

2020-05-06 18:05:00 11741

原创 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 22403

原创 Linux驱动分析之SPI设备

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

2020-04-29 09:05:00 12123

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

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

2020-04-23 21:28:20 11957 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 28463

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

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

2020-04-14 19:46:12 11573

原创 深入理解Socket的读写

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

2020-03-10 20:25:36 24185

test_pcm_file.pcm

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

2020-11-10

空空如也

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

TA关注的人

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