自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (8)
  • 收藏
  • 关注

原创 linux SPI驱动代码追踪

Linux 中 SPI驱动代码追踪

2023-03-07 15:47:12 587

原创 深入理解 Linux 宏定义 MACHINE_START

深入理解 Linux 宏定义 MACHINE_START

2023-02-24 15:48:34 675

原创 Linux中驱动模块加载方法分析

linux中模块的加载

2023-02-22 12:05:50 2031

原创 Linux MMC驱动架构浅析

Linux MMC驱动架构浅析MMC驱动模型Linux内核设计了MMC子系统,用于管理MMC/SD等设备,MMC/SD存储设备是一种典型的块设备。MMC子系统的框架结构如下图所示。块设备(MMC_BLOCK)块设备的相关驱动,即实现块设备的驱动程序,负责驱动MMC core抽象出来的虚拟的card设备,并对接内核其它的framework(例如块设备、TTY、wifi)等实现具体的功能。如MMC/SD卡设备驱动按照 linux块设备驱动程序的框架实现一个MMC/SD卡的块设备驱动,在 block.c

2022-03-03 21:05:46 3062 2

原创 OpenWrt包管理器

#OpenWrt包管理器前言:这个笔记是记录学习OpenWrt包管理器的流水账,章节逻辑不紧密,内容不全面,新手学习心得,知识点难免存在错误,只是希望对初次接触OpenWrt的新同学有所帮助,同时请各位牛人修正笔记中的错误。致谢!吐血的学习经历初次接触OpenWrt,对它真是无从下手,不得要领。通过网络搜索相关内容,上面都是千篇一律地介绍说“这是一个智能路由器系统”……,这和代码管理没有半毛钱关系啊,看了很多资料,没有一点头绪,让初次接触OpenWrt这个新手,有些抓狂,郁闷了一段时间。后来直到厚着

2021-11-15 14:01:30 2550

原创 Linux的I2C子系统

Linux的I2C子系统概述

2021-07-30 12:44:57 169

原创 Linux的Input子系统

输入子系统原理框图:

2021-07-23 16:31:56 1211 1

原创 Linux 内核的面向对象设计思想

使用C语言实现面向对象设计的方法1、封装封装就是把一个抽象的事物的属性和属性的操作方法打包在一起,外界的模块只能通过这个抽象事物对外提供的函数接口,对其属性进行访问。在C++或其他高级语言中,封装通常被称作“类”。而 C 语言一般使用结构体对事物进行封装。使用结构体可以很好地对数据进行封装,并且需要通过指定的操作函数对结构体内的数据进行访问。每个操作函数的第一个参数是对象本身的指针,通过这个指针去访问具体对象里面的属性。这是因为在 C 语言中不存在像 C++ 语言那样的 this 指针,所以我们只能

2021-07-23 10:40:25 1160

原创 Linux内核对象结构体

描述对象的结构体1、总线(bus)总线是处理器和设备连接的实体,处理器通过总线进行访问设备。总线将设备和驱动进行绑定,从而使用设备。另外对设备的电源管理提供了统一的操作接口。设备模型抽象出的总线实体对象bus_type:struct bus_type { const char *name; //总线名称 struct bus_attribute *bus_attrs; struct device_attribute *dev_attrs; struct driver_attribute *

2021-07-21 22:17:36 239

原创 Linux下的platform总线概述

platform总线的设计目的platform总线是一种虚拟总线,叫做平台总线。设计这种平台总线的目的,是为了统一管理和注册驱动,它可以把物理上不存在总线的一类设备,用一种平台总线统一把它们管理起来。常见的总线如USB,SPI,UART,PCI,I2S等总线,是在物理上实实在在存在的总线。Linux系统需要为这种物理上存在的总线设计一种统一管理它们的方法,同时为了不去详细区分某种设备是否有总线,Linux内核设计者就设计了platform总线,它把绝大部分的物理上没有总线的设备,统一用platform总

2021-07-20 20:57:03 452

原创 Linux下sysfs 文件系统

sysfs文件系统概述sysfs文件系统是虚拟的文件系统,sysfs 文件系统挂载在 /sys上。它可以产生一个包含所有系统硬件层次上的高级视图,与提供进程和状态信息的proc文件系统十分类似,可以更方便对系统设备进行管理。sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系,其顶级目录包括block,bus,drivers,class,power和firmware等.

2021-07-11 10:08:48 334

原创 linux下的根文件系统的制作

制作根文件系统1、 获取busybox可以从官网下载:https://busybox.net/2、修改Makefiel我下载的版本是:busybox-1.24.1.tar.bz2,复制到ubuntu中,并且解压。tar  -xjvf  busybox-1.24.1.tar.bz2修改Makefiel 中的编译选项:ARCH = ARMCROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-编译配置

2021-07-01 17:03:21 341

原创 汽车仪表盘CAN总线实现

汽车仪表盘CAN总线实现一、CAN总线控制器框图二、Linux下的 Soxket CAN 总线分层模型三、CAN分层模型以及功能描述四、Linux Socket CAN驱动模型五 OBD接口一、CAN总线控制器框图CAN总线是一种多主控(Multi-Master)的总线系统,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此比较适合传输诸如控制、温度、转速等短消息。CAN总线的物理层是将ECU(电子控制单元)连接至总线的驱动电路。ECU的总数将受限于总线上的电气负荷。物理

2020-10-12 20:27:09 4572

原创 Uboot顶层 config.mk 分析

下面对uboot顶层目录下的配置文件config.mk文件进行分析

2020-07-01 17:21:18 562

原创 Qt 3D 汽车仪表盘

使用Qt3D开发汽车仪表盘blender建模仪表盘模型和汽车模型,导入Qt中,qt中qml编程实现模型的动画效果。相对OpenGL,Qt3D的实现更简单,模型的颜色在blender中预先设置好,导入Qt中,调节好灯光,就可以显示炫酷的效果。效果一:仪表一效果二仪表二效果三制作汽车模型...

2020-05-07 12:55:32 7140

原创 MQTT协议--数据报文解析

MQTT数据包解析

2020-03-27 18:59:57 853

原创 Yocto环境下树莓派3B+上构建Boot2Qt嵌入式系统

在Raspberry Pi 3B+上搭建Boot2Qt开发环境

2020-03-26 16:26:22 1625

原创 BLE架构图

Attribute type一般是由service和characteristic规格来定义,站在蓝牙协议栈角度来看,ATT层定义了一个通信的基本框架,数据的基本结构,以及通信的指令,而GATT层就是定义service和characteristic,GATT层用来赋予每个数据一个具体的内涵,让数据变得有结构和意义。没有GATT,BLE协议栈也能跑,但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。

2024-04-16 19:26:08 73 1

原创 汽车SOA模型解读

SOA架构学习和总结

2023-06-05 11:11:43 1256

原创 SOME/IP

some/ip学习记录

2023-05-15 15:36:07 769 1

原创 虚拟机ubuntu安装samba服务

samba 安装配置

2023-03-14 17:00:13 619

原创 锂电池充放电曲线

锂电池特性曲线

2022-10-07 20:48:55 17561

原创 C++ 中对 “引用” 的浅析

对于引用的概念,本人看了一些书,看来一些网络上的文章,当时似乎看懂了,但是当我确不会使用引用,或者感觉不到用它的好处,还是指针使用起来更放心。很多人的人告诉我引用就是一个别名,然后给出下面的举例。#include <iostream>using namespace std;int main(void){ int a = 1; int &a1 = a; cout << a1 << endl;}既然变量a已经有自己的名字了,再给

2022-03-26 21:17:18 623

原创 class_create宏定义代码分析

class_create宏class_create()用于动态创建设备的逻辑类,并完成部分字段的初始化,然后将其添加进Linux内核系统中。此函数的执行结果是在目录/sys/class下创建一个新的文件夹,此文件夹的名字为此函数的第二个输入参数,但此文件夹是空的。宏class_create()在实现时,调用了函数__class_create()。kernel/include/device.h#define class_create(owner, name)\({\ static struct lo

2022-02-02 18:19:07 885

原创 linux 中 __define_initcall 宏定义分析

__define_initcall 宏定C 语言中attribute属性的section是在目标文件链接时可以用于主动定制代码的位置,我们看看linux kernel中section的定义。下面代码来自 linux内核 include/linux/init.h 文件,它们使用了相同语法规则的变量名存放了各个初始化函数的地址。它们的调用是按照一定顺序的,这个顺序就取决于__define_initcall宏。__define_initcall宏用来将指定的函数指针放到.initcall.init节里。#

2022-01-29 11:56:18 1784

原创 通过sys/导出设备节点控制IO

#include <linux/kernel.h>#include <linux/types.h>#include <linux/module.h>#include <linux/delay.h>#include <linux/uaccess.h>#include <linux/timer.h>#include <linux/sysfs.h> #include <linux/kobject.h>

2022-01-26 19:52:36 1006

原创 FreeRTOS信号量(草稿)

这里写自定义目录标题Markdown二值信号量计数信号量优先级翻转互斥量功能快捷键如何改变文本的样式插入链接与图片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Markdown你好! 这是你第一次使用 Markdown编辑器 所展示的欢二值信号量二值信号量既可以用于临界资源访问也可以用于同步功能 。互斥量有优先级继承

2021-08-15 15:11:06 169

原创 Linux 双向链表设计思想

Linux 内核中的双向链表分析list_head,将数据域和指针域分离,链表中的每个节点只含有指针域:定义一个结构体:struct list_head { struct list_head *next, *prev;};链表初始化,指向节点自己。static inline void INIT_LIST_HEAD(struct list_head *list){ list->next = list; list->prev = list;}...

2021-08-08 16:38:46 194

原创 如何配置uboot

uboot编译步骤1、配置:make 配置选项例如:make  s3c24xx_sd_config这个配置过程到底做了那些事情?uboot主Makefile截图:变量MKCONFIG是指顶层目录下的一个文件mkconfig, $(@:_config=)是一个替换操作,其中$(@)代表目标“x210_sd_config”,这个操作就是将x210_sd_config中的_config用=后面的东西(这里是空)替换掉,最后变成x210_sd。2590行的意思是执行mkconfig脚本文件

2021-08-07 21:32:15 1082

原创 4G模块的使用

4G相关知识

2021-08-04 10:06:30 10955 1

原创 汽车OBD接口

概述OBD-(On Board Diagnostics),是为汽车故障诊断的一种检测系统,OBD Ⅱ-(on Board Diagnostics Ⅱ),Ⅱ型车载诊断系统的。因汽车国际化的程度越来越高,为使汽车排放和驱动性相关故障的诊断标准化,OBD作为驱动性和排放诊断基础,将得到越来越广泛的实施和应用。OBD实时监测汽车的发动机、催化转化器、颗粒捕集器、氧传感器、排放控制系统、燃油系统等系统和部件。然后通过不同与排放有关的部件信息,联接到ECU,当出现排放故障时,ECU记录故障信息和相关代码。ECU通过

2021-08-03 16:13:36 2891

原创 音乐术语归类表

音乐术语归类表Accordion 手风琴Aftertouch 触后Alto 女低音Amplitude 振幅Amplitude Modulation(AM) 调幅Analogue 模拟的Anticipation 先现音Arpeggio 琶音,分解和弦Attack 起音Audio 音频Augmented 增音程,增和弦Ballade 叙事曲Band 波段,大乐队Banjo 班卓琴(美国民间乐器)Bank 音色库Baritone 男中音Barline 小节线Baroque 巴罗

2021-07-31 22:11:22 893

原创 鼓机和录音同步变速和同步节拍的方法

同步变速方法:— FIFO缓存bpm值通过旋转“SPEED”电位器,对鼓机和looper进行变速,Looper数据变速时,数据需要经过FIFO的缓存,再取出来进行播放,所以有个缓存过程。而鼓机变速时,相对looper它能立刻改变速度,所以在改变bpm值后,就造成鼓机先变速,looper后变速的时间延迟问题。为了解决这个问题,同时设置一个BPM 的FIFO,looper变速时,同时把bpm值也进行缓存,在取出looper数据播放时,同时取出bpm值设置鼓机,这时候,鼓机和looper就实现同时变速。

2021-07-30 12:12:32 1424

原创 linux中断

Linux 中断概述硬件中断的概念硬件中断是一种电信号,由硬件触发,送入硬件中断控制器中,处理器接收到这个信号后,由操作系统处理这些信号。这些中断被叫做中断请求(IRQ)。软中断概念为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。异常概念异常也叫同步中断,是由于指令错误,或者特殊情况,比如缺页,必须依靠内核来处理的情况,就

2021-07-30 12:04:50 79

原创 Linux竞争和互斥

Linux竞争和互斥一、并发一、并发在理解并发之前,先要清楚一些概念。1、CPU Cache  在计算机系统中,CPU高速缓存(CPU Cache)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小,但速度却可以接近处理器的频率。  当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失效),则要先把内存中的相应数据载入缓存,然后进行处理,处理完成之后再将数据回写

2021-07-25 15:34:17 137

原创 Linux内核中gpiolib

函数s5pv210_gpiolib_init();分析kernel\arch\arm\mach-s5pv210\gpiolib.cs5pv210_gpiolib_init();结构体 s3c_gpio_chipkernel\arch\arm\plat-samsung\include\plat\gpio-core.hstruct s3c_gpio_chip { struct gpio_chip chip; //记录gpio设置方法和信息 struct s3c_gpio_cfg

2021-07-25 15:33:14 173

原创 Linux驱动模型

kobjectkobject是Linux中通用的对象模型,为内核中的对象模型的管理提供统一的视角。在核中应用最多的是驱动模型,即总线、设备、驱动、类的管理,都使用了kobject。kobject一般都不会单独使用,这样没有意义,它总是内嵌到其他结构体中。kobject只是通用对象的表示,其自身不包含任何特定于某个模块的属性,因此我们更关心的是kobject的外围结构。每个外围结构体所在的模块都应该定义一个ktype,这个ktype就完成了由通用向特殊的过渡。因此kobject可看做其他所有外围结构的基类

2021-07-18 10:30:26 194

原创 ubuntu16.04中安装NFS服务器

安装相关软件sudo apt-get install nfs-kernel-serversudo apt-get install nfs-common配置NFS编辑exportssudo vim /etc/exports文件末尾加下面的项目/home/li/x2440/rootfs *(rw,sync,no_root_squash,no_subtree_check)/home/li/x2440/rootfs 这个目录就是NFS文件系统的目录。更新:sudo exportf

2021-07-02 21:11:53 712 1

原创 ubuntu16.04中安装tftp服务器

1、ubuntu上网设置vim /etc/network/interface 1 # interfaces(5) file used by ifup(8) and ifdown(8) 2 auto lo 3 iface lo inet loopback 4 5 auto ens33 6 7 #iface ens33 inet static 8 iface ens33 inet dhcp 9 #address 192.168.1.141 10 #netmas

2021-06-30 17:34:59 661 1

原创 uboot常用命令

printenv (print) 打印环境变量setenv (set) 设置/删除环境变量 例如:设置bootdelay 为5秒 set bootdelay 5 例如:删除bootdelay set bootdelayipaddr ip地址设置 例如:set ipaddr 192.168.1.11movi / mmc (当flash是SD卡,iNDND,EMMC时)1、 movi init  打印flash信息 2、movi read {u-boot | kernel} {a.

2021-06-14 20:24:01 1194

名称:C语言链表.pdf

介绍链表的操作方法,有图文

2022-02-05

跟我一起写Makefile

书名名称:跟我一起写Makefile 介绍Makefile编写语法规则

2022-02-05

GD32移植指南(软件移植注意事项)

介绍从STM32移植到GD32的技术细节

2020-12-26

yocto环境创建.pdf

Yocto环境下体验创建一个linux镜像,启动镜像。 Yocto工具可以构建一个系统镜像,方便又省力。

2020-03-26

yocto之目录结构介绍.pdf

Yocto目录结构简介 Yocto是构建系统的工具,利用配置文件,构建自定义系统。 本文简单介绍重要目录和作用。

2020-03-26

Raspberry Pi 3B+(Boot2Qt)开发环境搭建.pdf

本文描述了在树莓派上用Yocto工具构建Boot2Qt映像的简单操作过程。 构建完成后,可以在树莓派上运行起来,运行Qt默认应用程序。

2020-03-26

yocto环境下快速构建iMX6Q 映像&amp;amp;驱动开发.pdf

Yocto工具开发linux项目: 使用Yocto工具构建NXP iMx6q的映像、linux资源配置、驱动开发。 本文不是详细的Yocto学习工具,只是引导性的构建一个NXP的linux映像,并且简单介绍了利用Yocto工具配置资源,开发相关驱动的方法。

2020-03-26

eetop.cn_riscv-spec-v2.0 中文版

作者呕心沥血翻译的 RISC-V 指令集 - 中文版本。 这是描述 RISC-V 用户级体系结构文档的翻译版,对注释部分做了大量地添加和改进。

2018-03-09

空空如也

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

TA关注的人

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