自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (1)
  • 收藏
  • 关注

原创 5. 创建声卡

主要是将dai_link挂载到card的dai_link上面,上图已经连接。soc_init_dai_link执行后,会出现下面红框内的链接。

2023-07-04 10:40:49 357

原创 4. 注册machine

数字mic系列,注册machine。

2023-07-03 16:23:42 296

原创 3. 注册codec

数字mic系列,注册codec。于是就有了这样的链接。

2023-07-03 13:37:32 319

原创 2. 注册platform

数字mic系列,注册platform

2023-07-03 11:24:13 234

原创 1. 数字mic驱动分析

本系列文章是基于一个数字mic去分析alsa架构

2023-07-03 10:46:54 423

原创 input专题--独占事件

input独占分析

2023-02-17 14:42:44 520

原创 6. 内核解压-cache off

cache off

2022-10-09 09:50:54 199 1

原创 7. 内核解压-开始解压

decompress_kernel

2022-10-08 17:21:28 268

原创 5. 内核解压-cache flush

cache flushcache_clean_flush

2022-10-08 17:20:22 1069

原创 4. 内核解压-cache_on

内核解压开启cache

2022-09-26 12:00:11 353

原创 3. 内核解压-确定解压信息

确定解压信息

2022-09-20 13:48:25 566

原创 linux内核文章介绍

linux内核相关文档

2022-09-19 15:56:27 156

原创 2. 内核解压-关中断进入svc模式

safe_svcmode_maskall

2022-09-19 15:51:08 560

原创 1. 内核镜像组成及编译

内核镜像的组成piggy_data的生成过程

2022-09-19 14:03:18 1007 1

原创 mplane方式v4l2应用分析 -- 完整代码

Linux v4l2架构学习总链接gitee源码完整代码/* csdn: 专题讲解 * https://blog.csdn.net/ldl617/category_11380464.html */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <sys/stat.h

2021-09-26 19:44:52 4174 15

原创 mplane方式v4l2应用分析 -- VIDIOC_DQBUF(缓存放入队列)

Linux v4l2架构学习总链接VIDIOC_DQBUF同样的先去看从应用调用vivi驱动分析v4l2 – 缓存放入队列(VIDIOC_QBUF)那到缓冲区信息的代码可以看__fill_v4l2_bufferstatic void __fill_v4l2_buffer(struct vb2_buffer *vb, void *pb){ struct v4l2_buffer *b = pb; struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(v

2021-09-26 17:40:40 2227

原创 mplane方式v4l2应用分析 -- mmap(映射)

Linux v4l2架构学习总链接mmap同样的先去看从应用调用vivi驱动分析v4l2 – 映射 mmap这里看看怎么找到plane的static int __find_plane_by_offset(struct vb2_queue *q, unsigned long off, unsigned int *_buffer, unsigned int *_plane){ struct vb2_buffer *vb; unsigned int buffer, plane; /*

2021-09-26 16:00:56 1220

原创 mplane方式v4l2应用分析 -- VIDIOC_QUERYBUF(查询缓存信息)

Linux v4l2架构学习总链接VIDIOC_QUERYBUF(查询缓存信息)同样的还是先看从应用调用vivi驱动分析v4l2 – 查询(VIDIOC_QUERYBUF)缓存信息在vb2_querybuf中,之前没有分析__verify_planes_arraystatic int __verify_planes_array(struct vb2_buffer *vb, const struct v4l2_buffer *b){ /* 非NPLANE这里直接返回 */ if (!V4L2_T

2021-09-26 15:26:13 2171

原创 mplane方式v4l2应用分析 -- VIDIOC_REQBUFS(申请缓冲区)

Linux v4l2架构学习总链接VIDIOC_REQBUFS(申请缓冲区)大部分代码和从应用调用vivi驱动分析v4l2 – 申请缓存(VIDIOC_REQBUFS)是通用的,这里只分析不同的地方queue_setuprv1126这里queue_setup对应代码rkcif_queue_setup 和vivi是不一样的static int rkcif_queue_setup(struct vb2_queue *queue, unsigned int *num_buffers,

2021-09-26 14:21:21 828

原创 mplane方式v4l2应用分析 -- VIDIOC_S_FMT(设置图像格式)

Linux v4l2架构学习总链接设置图像格式 VIDIOC_S_FMTv4l2应用代码如下: struct v4l2_format fmt; memset(&fmt, 0, sizeof(struct v4l2_format)); fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; fmt.fmt.pix_mp.width = 2400; fmt.fmt.pix_mp.height = 1920; fmt.fm

2021-09-26 13:38:38 2886 3

原创 为什么要分析mplane格式的v4l2应用?

为什么要分析mplane格式的v4l2应用?在之前通过vivi学习v4l2的时候其实已经知道了v4l2怎么编写,这里为什么还要研究mplane格式的?vivi中是非mplane格式的,该部分章节的内容编写的v4l2应用在实际项目中,其实只适用usb摄像头,但是现在好多平台支持的都是mplane格式的,所以实用性有限。最近在rv1126平台上一直使用rkmedia去获取图像,大部分都是nv12格式的。直到最近要获取raw8到图像,突然发现rkmedia不支持,需要自己通过v4l2去获取。然而v4l2使

2021-09-26 09:57:17 1429

原创 2.5 移植rvos - preemptive

移植rvos - preemptivegd32vf103中断模式非向量处理模式向量处理模式移植rvos的难点使用向量处理模式如何将中断改成向量模式?向量模式需要注意的地方gd32vf103中断模式gd32vf103的中断有2种模式:向量处理模式和非向量处理模式非向量处理模式中断被处理器内核响应后,处理器会直接跳入到所有非向量中断共享的入口地址,该入口地址可以通过软件进行设置。非向量中断入口地址的选择方式如下:mtvec 中记录了异常入口地址mtvt2 中记录了非向量中断入口地址mtvt2中

2021-09-16 17:22:58 322

原创 2.4 移植rvos - multitask

移植rvos - multitask对比contexswitch详细修改对比contexswitch/* 新增注册task接口 */int task_create(void (*start_routin)(void)){ if (_top < MAX_TASKS) { ctx_tasks[_top].sp = (reg_t) &task_stack[_top][STACK_SIZE - 1]; ctx_tasks[_top].ra = (reg_t) start_routin

2021-09-15 16:01:10 108

原创 2.3 移植rvos - contextswitch

移植rvos - contextswitch关键代码分析详细修改关键代码分析#define STACK_SIZE 1024uint8_t task_stack[STACK_SIZE];struct context ctx_task;extern void w_mscratch(reg_t x);void user_task0(void);void sched_init(){ /* 初始化将mscratch寄存器中写入0 */ w_mscratch(0); /* 初始化任务上下文结

2021-09-15 15:48:47 153

原创 2.2 移植rvos - helloRVOS

移植rvos - helloRVOSsdk简介sdk结构简介开始移植sdk简介这里使用的sdk之前已经介绍过了,是芯来科技的https://gitee.com/Nuclei-Software/nuclei-sdksdk结构简介这里只介绍和这里相关的NMSIS:基于开源软件CMSIS,针对Nuclei RISC-V处理器内核进行了深度定制优化开发,提供完备的代码以及在线文档,并采用Apache 2.0 License进行发布.OS: 当前支持的OS,主要有FreeRTOS RTThread

2021-09-15 15:19:41 237

原创 2.1 rvos简介

rvos简介1 简介课程地址源码地址课程交流群1 简介rvos(RISC-V OS)是基于riscv开发的一个简单的适合入门的实时操作内核。其作者是汪辰老师,有对应的源码及视频。汪辰老师的这么课程讲的非常好,强烈推荐大家去观看课程地址https://www.bilibili.com/video/BV1Q5411w7z5?p=1源码地址https://gitee.com/unicornx/riscv-operating-system-mooc课程交流群QQ:976125506...

2021-09-15 14:50:01 817

原创 1.3 nuclei sdk Makefile分析

nuclei sdk Makefile分析Make 命令1. 根目录Makefile2. 源码选择application/baremetal/helloworld Makefile如下3. 分析Makefile.base3.1 Makefile.misc3.2 Makefile.conf(1)3.2.1 Makefile.soc3.2.1.1 Makfile.soc.gd32vf1033.3 Makefile.conf(2)3.3.1 Makefile.files3.3.1.1 Makefile.files

2021-09-15 14:39:38 915

原创 1.2 nuclei sdk gd32vf03 启动文件分析

gd32vf103 启动文件分析/** * Reset Handler called on controller reset */_start: /* ===== Startup Stage 1 ===== */ /* csrc是伪指令 * csrc csr rs -> csrrc x0, csr, rs : Clear bits in CSR * csrrc指令格式 csrrc rd, csr, rs1 * CSRRC(CSR 中的原子读取和清除

2021-09-15 14:31:08 749

原创 1.1 ubuntu环境下搭建gd32vf103

1.1 ubuntu环境下搭建gd32vf1031 资料下载1.1 芯片介绍1.2 开发板介绍1.3 源码下载1.4 其他资料2 交叉编译工具链3 下载工具4 环境搭建5 编译5.1 编译步骤5.2 生成bin文件6 下载7 其他1 资料下载1.1 芯片介绍GD32VF103系列MCU是基于RISC-V内核的32位通用微控制器,具备均衡的处理效能和系统资源,适用于工业控制、消费电子、新兴IoT等嵌入式市场应用。内核:芯来科技Bumblebee内核(RV32IMAC)主频:108MHz内存:内置1

2021-09-15 14:25:19 2707 1

原创 risc-v学习目标

1. 基于gd32vf103学习risc-v汇编及移植实时操作内核2. 基于k210学习linux3. 待规划

2021-09-15 14:06:29 116

原创 基于GD32VF103学习risc-v总览

1,gd32vf103环境搭建及sdk分析 1.1 ubuntu环境下搭建gd32vf103 1.2 nuclei sdk 启动文件分析 1.3 nuclei sdk Makefile分析2,移植rvos实时操作内核到gd32vf103 2.1 rvos简介 2.2 移植...

2021-09-15 14:04:07 283

原创 v4l2loopback -- test_yuv例程测试及源码分析

相关源码位置https://gitee.com/ldl17/v4l2-learn/tree/master/v4l2loopback/examples/test_yuvtest_yuv这个例程主要目的是读取本地yuv数据给v4l2loopback,然后应用程序去读取摄像头数据test_yuv源码拷贝与test,test里面只是写一帧,test_yuv里面则是根据设置的帧率延时读取数据而已。 while(fread(buffer, 1, framesize, in_fp) == frame

2021-07-03 10:10:15 701

原创 v4l2loopback -- test例程测试及源码分析

test例程简介test例程中只会填充一次帧数据,所以应用测试video节点的时候,只能读取一帧数据。另外test例程中使用的数据格式是YU12,之前默认是YV12,修改的原因是v4l2-ctl不支持YV12。而且填充的帧数据为0,所以是一张绿色的图。测试方法:test /dev/videoX &v4l2-ctl -d /dev/video20 \ --set-fmt-video=width=640,height=512,pixelformat=YU12 \ -

2021-06-23 14:34:37 1639

原创 v4l2loopback -- 源码分析

v4l2源码位置:github: https://github.com/umlaeute/v4l2loopbackgitee : https://gitee.com/ldl17/v4l2loopback为了学习v4l2loopback,在v4l2-learn上逐步添加v4l2loopback的代码用于学习https://gitee.com/ldl17/v4l2-learn/tree/master/v4l2loopback下面就开始源码分析:v4l2loopback_init_mod.

2021-06-22 13:59:27 1641

原创 v4l2loopback 简介

说实话之前并不知道v4l2loopback这个东西,直到有一天群里的一个哥们询问一些video相关的问题,从问题描述中发现是这样一个操作。 一个真实设备video0,一个虚拟设备video1。将video0的数据读出写入到video1,然后应用去读取video1的数据,看到这个操作,突然浮想联翩。手机上如果装了这个设备,是不是可以在和别人视频的时候,播放本地文件,也就是抠脚大汉冒充聊天小姐姐。是不是可以抖音上传假视频。还想去了之前看过的一个私活,摄像头读取本地文件显示。。。...

2021-06-22 13:40:21 4190

原创 v4l2架构专题模块handler分析 -- ioctl分析

前面分析了handler的创建以及添加ctrl的过程,对于ctrl来说,ctrl的类型有很多,这里仅仅分析了一个而已,其他的基本也是这个套路。既然handler创建了,ctrl添加了,那么

2021-06-09 13:36:14 1028 1

原创 v4l2架构专题模块handler分析 -- handler使能(2)s_ctrl

接着上一篇分析int __v4l2_ctrl_handler_setup(struct v4l2_ctrl_handler *hdl){ struct v4l2_ctrl *ctrl; int ret = 0; if (hdl == NULL) return 0; lockdep_assert_held(hdl->lock); list_for_each_entry(ctrl, &hdl->ctrls, node) ctrl->done = fals

2021-06-08 20:37:15 853 1

原创 v4l2架构专题模块handler分析 -- handler使能(1)cluster

在驱动代码中,一般都是在probe中初始化handler及创建ctrl,在stream_on的时候会去使能handler,对应的函数是 __v4l2_ctrl_handler_setup

2021-06-08 17:28:47 847

原创 v4l2架构专题模块handler分析 -- handler ctrl的注册2

Linux v4l2架构学习总链接上一篇文章中忽略了ctrl class,这里补上static int handler_new_ref(struct v4l2_ctrl_handler *hdl, struct v4l2_ctrl *ctrl){ struct v4l2_ctrl_ref *ref; struct v4l2_ctrl_ref *new_ref; u32 id = ctrl->id; u32 class_ctrl = V4L2_CTRL_ID2WHICH(

2021-06-08 11:38:36 657

原创 input专题 -- 自动重复

input要实现自动重复,首先要支持事件EV_REP自动上报的流程如下:input_event() ->input_handle_event() ->

2021-06-01 20:14:19 860

NFCForum-TS-NCI-2.0-170330.pdf

用于nfc开发和学习,android系统中使用比较多,这个文档找了好久才找到 文档中是nci协议2.0版本,希望对大家有帮助

2019-11-29

空空如也

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

TA关注的人

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