自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 API-同步-down_write_killable

是Linux内核中用于处理读写信号量(rw_semaphore)的一个函数,主要用于获取写锁。这个函数的特点是,它在等待锁的过程中可以被信号中断,这样就可以防止进程因为等待锁而被无限期阻塞。如果一个进程在等待锁时接收到信号中断,该函数会返回-EINTR,表示因中断未获得锁。这一点对于处理并发情况下的同步问题非常有用,因为它允许进程在等待资源时能够响应紧急事件,如信号处理等。

2024-04-19 09:13:15 222

原创 io_1_基本概念

外设IO基本概念介绍

2024-03-11 11:25:52 854

原创 高精度定时器如何计算误差

在实际应用中,为了减小误差,可以考虑使用更为精确的时钟源、优化内核调度设置、避免系统过载、注意处理中断共享和屏蔽等策略。此外,硬件层面的时钟同步机制(如 NTP)也可以用于校正系统时钟,从而提高高精度定时器的准确性。:计算实际触发时间与期望触发时间之间的差异,即误差。误差可以以纳秒或其他时间单位表示,取决于您使用的时间戳函数的精度。请注意,实际的应用场景可能更加复杂,具体的误差计算方法可能需要考虑定时器的周期性、系统负载等因素。)来测量实际触发时间。:在定时器的回调函数中,使用高精度的时间戳函数(例如。

2024-03-01 16:10:19 341

原创 链接脚本vmlinux.lds 如何生成的

在编译内核源码生成内核文件的过程中,分为两个步骤,一个是“编译”,另一个是“链接”的过程,vmlinux.lds在这个过程中起到关键作用。首先,未经编译的内核源码是不存在vmlinux.lds链接脚本的,在arch/arm/kernel目录只有vmlinux.lds.S文件,以及在include/asm-generi目录有一个与之关联的vmlinux.lds.h文件。总的来说,vmlinux.lds的生成是一个复杂的过程,涉及到多个步骤和文件,需要对Linux内核有一定的了解才能更好地理解其生成过程。

2024-02-21 13:33:28 223

原创 sudo apt update GPG 错误,签名无效

W: GPG 错误:https://www.scootersoftware.com stable Release: 下列签名无效: C9467A8216C570CDFBAC3AFD331D6DDE7F8840CE。E: 仓库 “http://www.scootersoftware.com stable Release” 没有数字签名。N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。N: 无法安全地用该源进行更新,所以默认禁用该源。正在读取软件包列表…

2024-01-23 17:13:34 591

转载 Device Tree(四):文件结构解析

Device Tree(四):文件结构解析转载来自:蜗窝科技 http://www.wowotech.net/device_model/dt-code-file-struct-parse.html前言通过linuxer发表的三篇设备树的文章,我想你应该对设备已经有一个非常充分的认识了。本篇文章即作为一篇Device Tree的总结性文章,同时也作为linuxer文章的补充。本篇文章曾发表在Linuxer公众号,链接为:http://mp.weixin.qq.com/s/OX-aXd5MYlE_Y

2022-03-20 23:44:02 478

转载 Device Tree(三):代码分析

Device Tree(三):代码分析转载来自:蜗窝科技 http://www.wowotech.net/linux_kenrel/dt-code-analysis.html一、前言Device Tree总共有三篇,分别是:1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因)2、Device Tree的基础概念(请参考DT基础概念)3、ARM linux中和Device Tree相关的代码分析(这是本文的主题)本文主要内容是:以De

2022-03-20 23:41:53 282

转载 Device Tree(二):基本概念

Device Tree(二):基本概念转载来自:蜗窝科技 http://www.wowotech.net/linux_kenrel/dt_basic_concept.html一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source f

2022-03-20 23:40:48 768

转载 Device Tree(一):背景介绍

Device Tree(一):背景介绍转载来自:蜗窝科技 http://www.wowotech.net/linux_kenrel/why-dt.html一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,各种framework、各种新的概念让我感到阅读内核代码变得举步维艰。 还好,剖

2022-03-20 23:39:33 132

原创 C语言真难系列----注意有符号数

看到kernel有个patch:patch地址, 咋一眼没看出怎么回事,细想了一下,C 语言真难,是关于有符号数的特征,做个记录。patch是解决:有符号数导致的负数。diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.cindex d563c19603029..99188ee5d9d09 100644--- a/kernel/time/timekeeping.c+++ b/kernel/time/timekeeping

2022-03-04 17:30:22 236

原创 ISO C90 forbids mixed declarations and code 编译报错

原因变量定义之前任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告!解决示例{foo();printk("\n"); //error1int i = 0; //error2bar();}{int i = 0; //定义变量放在最前面printk("\n"); // printk 也需要后移foo();bar();}...

2022-02-20 16:01:36 662

转载 Linux的工作队列work queue和延时工作队列_queue_delayed_work

转载https://blog.csdn.net/qq_30624591/article/details/90180946

2022-02-16 15:06:07 444

转载 使用ninja命令提高单模块编译效率

转载:https://www.cnblogs.com/szsky/articles/10812959.html文章格式也很好: 简练列了Android 编译用到的ninja背景,从4点分析生成ninja前动作的影响编译时间的点:文件大、生成时间长、多种情况会要求重新生成ninja、条件多。后面就是准备ninja编译的环境,和使用指南。从Android 7.0开始,默认使用ninja进行编译。 从Android 8.0后,默认启用Soong、Android.bp。 在开发过程中,以前最经常使用的mm、.

2021-12-06 14:49:43 3581

原创 ubuntu 18.04开发环境搭建

ubuntu 18.04开发环境搭建概述终于稍微梳理平台上的内容,心里舒畅了不少,搞篇博客先。现使用纯LINUX的开发环境,刚开始安装环境也费了一些功夫,既做个汇总。软件Markdown typora工具typora: typora官网# or run:# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAEwget -qO - https://typora.io/linux/publi

2021-11-05 11:23:22 618

原创 wait_event_interruptible 展开&&unlikely(),likely()

休眠 wait_event_interruptible概述在看LDD时,看到这么一段代码有这么个异或:执行该函数的时候,进程是应该sleep在if的判断里面,还是已经到return了。if(wait_event_interruptible(Myqueue,(rp != wp))) //休眠时停在这里 return =-ERESTARTSYS; //当休眠过程中,进程状态异常(prepare_to_wait_event未设置state为TASK_INTERRUPTIBLE就已经是TASK_INT

2021-08-22 23:56:54 78

原创 V4l2裁剪,缩放,组合功能资料

概述涉及V4L2的VIDIOC_G_SELECTION和VIDIOC_S_SELECTION的ioctl的使用。这里仅将做资料记录。V4l2 ioctl官方文档https://01.org/linuxgraphics/gfx-docs/drm/media/uapi/v4l/user-func.html该ioctl涉及到的参数为struct v4l2_selection,该结构体可选参数https://01.org/linuxgraphics/gfx-docs/drm/media/uapi/v4

2021-08-04 23:49:56 1056

翻译 ALSA Documentation:Codec_txt

ASoC Codec驱动程序编解码器类驱动程序是通用且独立于硬件的代码,用于配置编解码器、FM、MODEM、BT 或外部 DSP 以提供音频播放和录音。它不应包含特定于目标平台或机器的代码。所有平台和机器特定代码都应添加到平台中。Codec驱动所在的目录: sound/soc/codecs/每个编解码器类驱动程序必须提供以下功能:Codec DAI 和 PCM的 配置Codec 控制 IO,使用 RegMap API混音器和音频控制Codec音频操作DAPM 说明。DAPM 事件处理程序

2021-06-21 00:19:29 84

翻译 ALSA Documentation:overview_txtx

ALSA SoC 层概述文档的结构:背景、目标、实现。ALSA 片上系统 (ASoC) 层的总体项目目标是为嵌入式片上系统处理器提供更好的 ALSA 支持(例如pxa2xx、au1x00、IMX 等)和便携式音频编解码器。在 ASoC 之前子系统内核中有一些对 SoC 音频的支持,但是它有一些限制。可以认为时ALSA出现的背景,也是创建ALSA后,朝之改进的点。编解码器驱动程序通常与底层 SoC 紧密耦合中央处理器。这并不理想,会导致代码重复。例如,Linux 有用于 4 种不同 SoC 平台的

2021-06-21 00:13:26 96

原创 char 转二进制string 打印出来

char 转二进制string 打印出来#define MESSAGE_MAX_COUNT 32static void audio_message_to_string(char* dest_str, const char* msg, int msg_length){ int str_idx = 0, i = 0; int uiMsgLen = (msg_length <= MESSAGE_MAX_COUNT ? msg_length : MESSAGE_MAX_COUNT);

2021-06-09 23:19:38 338

原创 六论自发性

六论自发性今天早晨起的很早,不知道做什么,又重新翻了周末看的《六论自发性》的最后两章。最后两章的标题是“为了政治”,“具体性与流变”。不知道是早上思路比较清晰还是看得第二遍,很明显感觉到比第一次看看到论述结构的脉络更清晰。可能两种方式都是让脑袋清晰的方法吧。“为了政治”,这话题从教育展开讲的,关键词是量化标准。1. 由教育展开了量化标准的考量;2. 量化标准的因果关系的倒转,这点举了个例子,“xxx是一条狗,最后的评判是狗的尾巴,那么实际的情况并非狗摇尾巴,而是狗被尾巴摇了”。 在做事时,很多情况下都是

2021-06-09 00:07:34 634

原创 Android property使用

Android property使用介绍: Property 变量是android的系统属性,在平常开发时候非常便利,添加了之后就好像给了个全局变量,用来区分流程分支、添加功能、android各层直接交互、记录数据、绕开SElinux执行自定义添加的可执行程序等等都是非常好用的。如何使用:1. 在java应用里设置属性(暂时未用过):import android.os.SystemProperties;SystemProperties.set("persist.sv.debug",”hello_d

2021-06-08 22:55:28 1338 1

转载 棋王,树王,孩子王

好久没看这么有力量的小说了。记一些喜欢的段落。吃饭。正闹着,饭来了,摆在房前场上。月亮已从山上升出,淡着半边,照在场上,很亮。大家在月光下盛了饭,围着菜盆吃。不料先吃的人纷纷叫起来。我也夹了一筷子菜放进嘴里,立刻像舌头上着了一鞭,胀得痛,慌忙吐在碗里对着月光看,不得要领。六爪吃糖。六爪稳稳地伸出手,把糖拿起,凑近灯火翻看,闻一闻,把一颗糖攥在左手心,小心地剥另一颗糖,右手上那只异指翘者,微微有些颤。六爪将糖放进嘴里,闭紧了,呆呆地望着灯火,忽然扭脸看我,眼睛亮极了。我吃糖。到了县上,自然先将糖买下,忍

2021-06-07 00:12:06 135

原创 kernel 访问文件系统vfs_write(...)

kernel 访问文件系统介绍:在特殊的应用场景中,驱动操作时需要将数据保存到文件中。目前有遇到的场景:分析数据流传输时的调试;系统中用到核间通信,需要保存另一个核的调试日志到文件中。主要用到的函数有以下:打开文件。与C标准库类似。strcut file* filp_open(const char* filename, int open_mode, int mode);读写。pos为偏移,需要初始化。更需要注意的是buffer是__user* ,指用户空间地址, 如果我们直接使用内核空间

2021-06-06 23:45:33 1848

原创 设备树中添加标志位,进行功能开关

设备树中添加标志位,进行功能开关介绍: 我们经常添加宏来设置是否选用功能来选择编译分支,最近遇到的场景是在设备树中添加配置,来达到一样的效果。遇到的场景:在多个dma驱动中,SSI驱动用到了其中之一一个DMA,由于加载各个DMA驱动的流程是类似的,现只想在SSI驱动用到的DMA 1中添加一个变更,即在DMA 1的节点中添加一个配置。具体代码如下://设备树&dmaname0 { continuous-mode; //可选功能标识 };//c 文件// ture为存在配置,f

2021-06-03 00:37:07 306

转载 Hi deeeemdoon

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-06-01 23:51:59 88

空空如也

空空如也

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

TA关注的人

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