dylanin1999

导航

2022年8月13日 #

spinlock、mutex的使用与休眠

摘要: 最近在工作中遇到了一些关于锁的问题,遇到了一些困扰,记录一下 spinlock 自旋锁,会一直阻塞,直到能够获取到锁位置。 mutex 互斥量,如果拿不到锁,就会进行休眠,引起进程调度。 但是我们在做内核驱动的时候,总会遇到在某些场景下,不能使用某些锁的情况... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(166) 评论(0) 推荐(0) 编辑

Linux文件系统与设备文件

摘要: 打开 int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode); 读写 int read(int fd, const ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(32) 评论(0) 推荐(0) 编辑

Linux内核模块

摘要: 目录 模块(Module) 加载模块 卸载模块 查看模块信息 Linux内核模块程序结构 1、模块加载函数 2、模块卸载函数 3、模块许可证声明 4、模块参数(可选) 5、模块导出符号(可选) 6、模块作者等信息声明(可选) 模块使用计数 7、模块的编译 模块... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(117) 评论(0) 推荐(0) 编辑

Linux异步通知

摘要: 异步通知 作用:一旦设备就绪, 则主动通知应用程序, 这样应用程序根本就不需要查询设备状态, 这一点非常类似于硬件上“中断”的概念, 比较准确的称谓是“信号驱动的异步I/O”。 阻塞I/O意味着一直等待设备可访问后再访问, 非阻塞I/O中使用poll() ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(91) 评论(0) 推荐(0) 编辑

Linux 内存与I/O访问

摘要: 目录 内存空间与I/O空间 内存管理单元(MMU) TLB(Translation Lookaside Buffer) TTW(Translation Table walk) Linux内存管理 内存存取 内核空间内存动态申请 内存池 I/O 访问 I/O 内... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(493) 评论(0) 推荐(0) 编辑

Linux定时器

摘要: 目录 timer_list结构体: 初始化定时器以及初始化绑定参数 增加定时器 删除定时器 修改定时器 内核延时 短延迟 长延迟 睡着延迟 ​​​​​​​ 在Linux设备驱动编程中, 可以利用Linux内核中提供的一组函数和数据结构来完成定时触发工作或者完成... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(357) 评论(0) 推荐(0) 编辑

Linux中断

摘要: 目录 中断 根据中断来源 内部中断 外部中断 根据中断是否可屏蔽 可屏蔽中断 不可屏蔽中断 中断入口跳转方法 向量中断 非向量中断 GIC(Generic Interrupt Controller) SGI(Software Generated Interru... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(384) 评论(0) 推荐(0) 编辑

Linux的并发控制

摘要: 目录 中断屏蔽 原子操作 自旋锁 信号量 互斥体(Mutex) 访问共享资源的代码区域称为临界区(Critical Sections) 解决编译乱序问题, 需要通过barrier() 编译屏障进行 #define barrier() __asm__ __vol... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(121) 评论(0) 推荐(0) 编辑

Android笔记:《第一行代码》DataSupport被弃用问题

摘要: 在学习《第一行代码》第二版的时候,发现DataSupport类不再支持了,找了一些资料,发现可以替代的方案 解决途径 先附上LitePal项目的使用文档:https://github.com/LitePalFramework/LitePal ,现在学习的资料一... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(60) 评论(0) 推荐(0) 编辑

解决conda install时出现 failed with initial frozen solve. Retrying with flexible solve 的问题

摘要: 现象:使用conda install命令安装python包时,一直出现如下的报错信息 failed with initial frozen solve. Retrying with flexible solve. 原因分析:其实我并没有找到确切原因,但是结果资... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(2041) 评论(0) 推荐(0) 编辑

ISP--Black Level Correction(黑电平矫正)

摘要: 在上一篇文章中,我们已经知道了Sensor的构造,Sensor的成像原理。但是从光信号转换为图像,其中还有许多的工作,OBC就是其中之一。 在之前的文章中,我们已经知道了,每一个像素点都是由一个光电二极管控制的,由二极管将电信号,转换为数字信号。 那么,我们知... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(950) 评论(0) 推荐(0) 编辑

Android 应用权限问题 -- 路径正确,bitmap无法读取文件

摘要: 在调用文件管理器获取文件的时候,已经解析出了文件的路径,但是用bitmap来读取的时候,死活都读不出来,一直返回null对象。 于是进行了检查, 1、返回路径是正确的 2、加入了读写的权限 但是还是无法正常读取文件并显示 搞了很久,最终看了一下手机上,APP... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(97) 评论(0) 推荐(0) 编辑

Camera CMOS Sensor成像原理

摘要: 时至今日,手机相机已经是我们几乎无法离开的最重要工具之一。 而且每次手机发布,手机的相机也是我们除了处理器之外最为关键的卖点之一。但是你真的知道它是怎么运转的吗? 看到这里,就有人要问了,大哥,我用相机,我还需要知道它的原理吗?我不知道怎么造汽车,这影... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(569) 评论(0) 推荐(0) 编辑

BM3D 算法原理详细解析 按过程步骤讲解(附C++实现代码)

摘要: BM3D是2007年提出的算法了,至今已经有一些年头了,但是仍然不妨碍它基本上还是最强的去噪算法。 在初步了解了BM3D的算法后,会发现,BM3D有种堆叠怪的嫌疑。有很多不同的算法的影子在里面,比如Non-Local Means、Wavelet shrinka... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(847) 评论(0) 推荐(1) 编辑

HEAP CORRUPTION DETECTED:after Normal block错误的方法解决与分析

摘要: 先说现象,这个问题的表现现象主要是:在malloc(new(new[]))之后,内存使用正常,但是在free(delete(delete[]))时,就会出错了。 结论:出现这个问题的主要原因是:分配的内存少于实际使用的内测。 比如:char* data = m... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(272) 评论(0) 推荐(0) 编辑

gerrit 将代码从一个分支合并到另外一个分支 Cherry Pick的使用

摘要: 最近公司项目里从项目主线分支master拉了一个量产的分支,搞得在修完bug之后,必须得两个分支都提交修改代码。 第一天拉完分支后,我给整忘了,只提交了主线的代码。 然后挨批了。 但是我发现我也不是很熟悉想另外一个分支提交代码的流程。 研究了一下,这里记录一下... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1332) 评论(0) 推荐(0) 编辑

git在工程中的操作 - patch stash status checkout reset log

摘要: 最近接触了大量的git操作并且遇到了很多的问题,这里记录一下,并且方便以后查阅。也希望能够帮到其他的人。 1、删除文件及其上传 在工作空间手动删除文件 会显示 $ git status On branch master Changes not staged... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(60) 评论(0) 推荐(0) 编辑

git提交错误 [remote rejected] HEAD -> refs/xxx 原因以及解决方法

摘要: 今天向gerrit提交代码时,发生了一下的错误: error: unpack failed: error Missing tree be99d2d528be3ef6b4354fb88dd72059ee7f71ee fatal: Unpack error, ch... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1722) 评论(0) 推荐(0) 编辑

LeetCode解题总结--双指针

摘要: 双指针解题多用于链表、数组等问题当中。 双指针的难度在于: 1、一开始可能很难想到 2、变式很多 3、指针并不是具体指的函数中的“指针”,而是一种思想。例如设置两个不同的可动标志位,也是”双指针“ 下面以具体... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(57) 评论(0) 推荐(0) 编辑

C++ istream_iterator的源码与使用方法分析

摘要: 最近在看C++ STL的源码,看的主要是gnu2.9版本的源码。 其中看到了istream_iterator的实现源码,源码如下: template class istream_iterator { friend bool operator== __ST... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(112) 评论(0) 推荐(0) 编辑