自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 vscode搭建gdb调试交叉编译代码

在代码工程中的run and debug菜单中添加launch.json文件,然后点击add configuration添加gdb和运行信息,其中需要配置的有如下。

2024-03-06 10:56:53 820

原创 cut 命令

FIELD_LIST是需要显示的字段,FIELD_LIST = n,m 指定显示n 和 m列,FIELD_LIST = n-m 指定显示n到m列,通常与-d一起使用。cut命令按列来切分文件,每列被称为一个字段,该命令可用于处理使用固定宽度字段的文件、CSV文件或是由空格分隔的文件(例如标准日志文件)3、选项–complement 指定没有被-f指定的内容。4.1、选项-b 指定要选择的字节。4.2 选项-c指定要选择的字符。2、选项-f指定要选择的字段。4、指定字段的字符和字节范围。

2023-12-11 10:33:58 183

原创 正则表达式

正则表达式是由字面文本和具有特殊意义的符号组成的。我们可以根据需要,构造出适合的正则表达式来匹配任何文本。正则表达式是很多工具所支持的基本功能。正则表达式规则。

2023-12-05 11:45:54 223

原创 CMake教程 - basic point

最基本的CMake项目是由单个源代码文件构建的可执行文件。对于像这样简单的项目,只需要一个带有三个命令的CMakeLists.txt文件。任何项目的顶级CMakeLists.txt都必须从使用cmake_minimum_required()命令指定一个最小的CMake版本开始。这将建立策略设置,并确保以下CMake功能使用兼容版本的CMake运行。要启动一个项目,我们使用project()命令来设置项目名称。

2023-10-27 17:24:59 189

原创 Servo

​ 舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。主要有两种引出线的格式:棕、红、橙(棕色连接GND、红色连接VCC、橙色连接信号);红、黑、黄(红色连接VCC、黑色连接GND、黄色连接信号)。

2023-03-28 11:02:13 924 1

原创 Bmp图片格式介绍

BMP是英文)的简写,它是中的标准,能够被多种Windows所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱来的缺点–占用磁盘空间过大。

2023-02-22 14:18:16 6538

原创 Linux 系统编程之select

select 允许单个程序监听多个文件描述符,直到一个或者多个文件描述符准备就绪不阻塞系统,常常用于解决阻塞型的程序。

2023-02-21 15:15:08 196

原创 Drm 例程2 双dumb buffer显示

显示过程中,drm是通过申请framebuffer 填充其中的dumb的buf来显示的,drmModeAddFB对不同的dumb buff拿到的bufid也不一样,最终使用drmModeSetCrtc来设定参数,使用dumb的bufid来填充相应的buf值。

2022-12-21 17:13:57 551

原创 drm单个framebuffer显示

这章介绍drm的部分的函数和结构体,实现单个frambuffer的显示。

2022-12-21 16:35:32 959

原创 drm框架介绍

DRM是Linux目前主流的图形显示框架,相比FB架构,DRM更能适应当前日益更新的显示硬件。比如FB原生不支持多层合成,不支持VSYNC,不支持DMA-BUF,不支持异步更新,不支持fence机制等,而这些功能DRM原生都支持。同时DRM可以统一管理GPU和Display驱动,使得软件架构更为统一,方便管理和维护。

2022-12-19 17:10:09 1093

原创 Linux 系统编程

Linux系统编程 access mkdir opendir readdir

2022-11-28 18:16:14 275

原创 Linux 系统编程stat函数

Linux 系统编程stat

2022-11-28 17:17:38 198

原创 Git stash的使用

一般在修改代码过程中,目录下的修改很多,但又需要把这些修改保存起来,我们就可以用到git stash 命令用git stash -h看下全部命令1.保存当前git目录下的所有修改2.查看stash列表3.删除stash列表中的一个文件4.清空stash列表5.保存单个文件修改6.显示单个stash 的修改项7.恢复最近一次stash apply工作区的内容,并且删除list中当前的保存...

2022-07-12 17:00:21 1849

原创 Linux alsa kcontrol

Control接口主要作用是应用程序(alsa-lib)可以访问kcontrol 来控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,所有的mixer工作都是通过control接口的API来实现的。一个kcontrol可以代表一个mixer(混音器),或者是一个mux(多路开关),又或者是一个Volume (音量控制器)等等。iface的设备分类access 类型kcontrol实例我们来看一下rk817的codec的kcontrol定义看一下SOC_ENUM_EXT

2022-06-22 11:25:48 896

原创 Ubuntu 切换root账户失败

使用命令切换root账户时出现,Authentication failture

2022-06-18 15:19:24 163

原创 Alsa-lib配置文件中的运行时参数

alsa

2022-06-15 11:10:08 270

原创 Alsa-lib实现播放wav音频

alsa lib应用

2022-06-09 15:20:55 943

原创 Wav文件格式

Wav文件格式WAVE or Wav(Waveform Audio File Format )文件格式是微软存储多媒体文件的重复规范的一个子集。RIFF文件由由RIFF块描述块、fmt”块和“数据”块组成。下图是wave文件的格式RIFF文件头endianfield sizefield namedetailbig4ChunkIDRIFF的标志头0x52494646(ASCII)little4ChunkSize整个wav文件大小 - 8big4For

2022-05-25 16:20:41 485

原创 Alsa-Lib概念

Alsa-Lib 概念声音是连续的模拟量,计算机通过将他离散化后用数字量表示声音参数基本概念样本长度(sample)样本是记录音频数据最基本的单位,计算机对每个通道采样量化时数字比特数,常见的有8位和16位帧(frame)帧记录一个声音单元,其长度位 = 样本长度 x 通道数,一段音频数据就是由若干帧组成。采样率(rate)每秒钟采样次数,改次数是针对帧而言,常用的采样率是8KHz的人声,44.1KHz的mp3音乐,96KHz的蓝光音频。通道数(channel)表示播放声音时占用的通道数

2022-05-25 15:26:00 354

原创 网络七层协议的介绍

网络编程基础OSI七层模型物理层 数据链路层 网络层 传输层 会话层 表示层 应用层tcp/ip 四层模型应用层 传输层 网络层 网络接口层常用的典型协议传输层TCP传输控制协议是一种面向连接、可靠的、基于字节流的传输层通信协议UDP用户数据报协议是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务应用层HTTP超文本传输协议是互联网上应用最为广泛的一种网络协议FTP文件传输协议网络层IP协议是因特网互联协议ICMP协议是internet控制报文协

2022-05-10 23:31:06 141

原创 Makefile 函数 --第四天

Makefile 函数1.字符串处理函数function:把text中的带from的字符串替换成to$(subst <from>, <to>, <text>)$(subst hk, bt, hkllhk) --> btllbtfunction:查找text中的string是否符合parttern模式,如果符合则替换成replacement$(patsubst <parttern>, <replacement>, <text

2022-04-25 18:46:42 100

原创 Makefile 变量--第三天

Makefile 变量变量的概念​ 在 Makefile中的定义的变量,就像是C/C++语言中的宏一样,他可以代表一个文本字符串也可以是数字,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是 Makefile的其它部分b中。变量的命名变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#”、“=”或是空字符(空格、回

2022-04-20 17:59:50 918

原创 Makefile的规则--第二天

Makefile的规则Makefile的规则target...:prerequisites... command.......target:可以是一个目标文件、可执行文件、标签(label),makefile中可以有多个目标文件prerequisites: target所需要的依赖文件command: 生成target所需要执行的命令需要先确认目标文件,然后确认目标文件所需要的依赖条件Makefile demo下面我们来看下一个基本的makefile例子源代码//main.c#

2022-04-20 16:11:59 239

原创 Makefile基本概念--第一天

Makefile 教程Makefile的概念Makefile可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则,编译整个工程需要涉及到的源文件和头文件链接库文件等,Makefile 可以使我们的项目工程的编译变得自动化,不需要每次都手动输入一堆源文件和参数。Makefile的主要内容makefile的内容显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。隐晦规则。由于我们的make有自

2022-04-19 17:53:09 89

转载 linux驱动注册过程分析--driver_register(一)

linux驱动注册过程分析--driver_register(一) 个人笔记,欢迎转载,请注明出处,共同分享 共同进步  http://blog.csdn.net/richard_liujh/article/details/45825333 kernel版本3.10.14 driver_register顾名思义,是驱动程序的注册。但是很少是由我们写的驱动直接调用的,例如framebuffer中...

2022-04-15 14:28:15 1347 1

转载 Linux设备树详解(四)kernel的解析

uboot将一些参数,设备树文件传给内核,那么内核如何处理这些设备树文件呢?本章就kernel解析设备树的过程和原理,本章的主要内容以Device Tree相关的数据流分析为索引,对ARM linux kernel的代码进行解析。主要的数据流包括: 设备树对于内核的意义从u-...

2022-04-15 14:25:58 491

原创 Linux 的module_init运行加载

Linux 的module_init运行加载段说明text段代码段,通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定。data段数据段,通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。bss段通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。BSS段属于静态内存分配。init段linux定义的一种初始化过程中才会用到的段,一旦初始化完成,那么这些段所占用的内存会被释放掉,kernel启动过程中打印的内存相关

2022-04-14 19:24:22 413

原创 Linux wifi协议概念

Linux wifi协议概念wifi 重要术语LAN​ 即局域网,是路由和主机组成的内部局域网,一般为有线网络。WAN​ 即广域网,是外部一个更大的局域网。WLAN(Wireless LAN,即无线局域网)​ 前面我们说过LAN是局域网,其实大多数指的是有线网络中的局域网,无线网络中的局域网,一般用WLAN。AP(Access point的简称,即访问点,接入点,热点)​ 是一个无线网络中的特殊节点,通过这个节点,无线网络中的其它类型节点可以和无线网络外部以及内部进行通信。这里,A

2022-03-30 10:57:52 877

原创 常用的RGB格式

常用的RGB格式RGB555每个像素用16比特位表示,占2个字节,RGB分量都使用5位(最高位不用)。//获取高字节的5个bitR = color & 0x7C00;//获取中间5个bitG = color & 0x03E0;//获取低字节5个bitB = color & 0x001F;RGB1555RGBA(ARGB)中的一种,一位用于表示透明度。0完全透明,1完全不透明RGB565每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5

2022-03-29 15:46:47 2879

原创 Linux 终端串口重定向

Linux 终端串口重定向#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/ioctl.h>#include <unistd.h>#define LOG_FILE "seria_log.txt"int main(int argc, char *argv[]){ int tty =

2022-03-29 10:42:22 960

原创 Git 学习笔记

Git 学习笔记git的工作流程图1.git常用提交命令1.查看提交记录git log 查看提交记录options 1.--all 显示所有分支 2.--pretty-oneline 显示的提交信息为一行 3.--abbrev-commit 显示commit的信息更加简短 4.--graph 以图的形式显示2.版本切换git reset --hard commitid 版本切换到相应的commitidgit reflog 查看本地仓库已经删除的记录如果版本不小心回滚,可以

2022-03-20 22:19:20 357

原创 Linux input子系统

Linux input子系统input子系统统一了内核的输入事件,通过注册input驱动类型来与上层交互,input输入子系统的核心是输入模块,它必须是 加载到任何其他输入模块之前-它作为一种方式 两组模块之间的通信,input子系统的驱动主要分为:设备驱动层、input core和input handler1.input dev结构体struct input_dev { const char *name; //设备名 const char *phys; //设备在系统中的物理路径

2022-02-21 15:57:39 817

原创 Linux event poll

Linux event poll首先使用一个东西之前至少要了解为什么要使用它,为什么需要poll这个操作,通常网络部分需要监听多个套接字,又要处理套接字,而在监听的过程中程序已经阻塞就不能去执行其他程序,所以需要引入IO复用struct epoll_event数据结构The struct epoll_event is defined as:typedef union epoll_data { void *ptr; int fd; uint32_t u32;

2022-02-17 14:40:58 741

原创 Linux power_supply子系统

Linux power_supply子系统1.概念power supply子系统的引入是由于设备中通常存在多个psy设备,不同的psy设备作用不同,比如电池、DC充电和usb充电等。驱动使用power suply框架把不同的psy设备都注册成单一节点,当属性变化时,通过uevent的方式通知应用2.Power Supply Framework 架构内核抽象power supply子系统为驱动提供了统一的架构,其中功能包括:抽象PSY设备的共性,向用户空间提供统一的API,为底层PSY驱动的编写,提

2022-02-16 15:11:46 2513

原创 Linux 系统IO函数

Linux 系统IO函数1.open函数//头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>//定义//open 返回文件的描述符,pathname : 需要打开的文件 flags: 以读写或者其他方式打开int open(const char *pathname, int flags);int open(const char *pathname, int flags, m

2022-02-14 16:30:58 872

原创 Linux 动态库和GDB的使用

Linux 动态库和GDB的使用1.动态库的定义在大型的嵌入式软件中,一般会分模块的进行开发,最终某个模块的部分会以动态库的方式给出来给需要的人调用,一般有动态库和静态库的方式,但是静态库的占用内存太大,我们一般用动态库的方式开发。2.动态库的生成和使用gcc demo.c -o demo.o -fPICgcc -shared demo.o -o libdemo.so //生成 libdemo.so动态库文件mkdir include ; mkdir lib ; mv demo.h inc

2022-02-12 20:41:23 1116

原创 getopt_long命令解析

命令行解析命令解析常用的函数getopt、getopt_long、getopt_long_only能够解析长短命令和带参数的命令getopt函数定义头文件#include <unistd.h>#include <getopt.h>/*paramargc:main()函数传递过来的参数的个数argv:main()函数传递过来的参数的字符串指针数组optstring:选项字符串,告知 getopt()可以处理哪个选项以及哪个选项需要参数return如果选项成功找到

2022-01-19 11:08:41 588

原创 vim常用命令使用

vim 命令使用1.概念介绍vim 是从vi发展出来的一个文本编辑器。其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。Vim是一个功能强大的全屏幕文本编辑器,不仅可以用于编辑文本,在编程方面也是非常强大,Linux/UNIX系统都会默认安装这个编辑器。正因为Vim的强大,会有很多命令需要学习,这里只介绍些常用的命令,在满足日常的文本编辑需求的同时,还能显著提高效率。2.vim工作模式vim一共有三种工作模式分别为普通模式、插入模式以及命令模式1.普通模式Vim启动后

2022-01-17 19:58:41 610

原创 Linux 锁介绍

Linux 同步方法1.原子操作原子操作可以保证指令以原子的方式进行,执行过程中不被打断,通常用来对单个变量进行计数使用头文件#include <linux/types.h>typedef struct { int counter;} atomic_t;#ifdef CONFIG_64BITtypedef struct { long counter;} atomic64_t;#endif初始化原子变量为0:atomic_t x = ATOMIC_INIT(0);

2022-01-14 16:50:43 308

原创 linux 定时器

linux 定时器1.定时器的概念内核中通常需要周期性的执行一段函数,我们就需要定时器进行计时,溢出的时候开始执行节拍率(HZ)系统定时器以某种频率自行触发时钟中断,连续两个中断的间隔为一个节拍(tick),为节拍率分之一秒.通常系统定时器节拍率(HZ)是通过静态自定义定义的2.jiffies全局变脸jiffies用来记录自系统启动以来产生的节拍总数,内核会给jiffies赋予一个初值,引起变量不断溢出头文件#include <linux/jiffies.h>extern u

2022-01-06 17:09:48 973

空空如也

空空如也

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

TA关注的人

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