- 博客(334)
- 资源 (117)
- 问答 (1)
- 收藏
- 关注
原创 【SPI】SPI学习之SPI驱动相关
spi驱动框架目录:linux/driver/spi/<从设备驱动层> spidev.c 自己编写<核 心 层> spi.c 内核提供<控 制 器 层> spi-xxx.c(瑞芯微:spi-rockchip.c 全志:spi-sunxi.c) 原厂提供...
2021-05-29 17:52:53
2899
1
原创 【SPI】SPI学习之SPI硬件相关
参考:文档:linux spi驱动开发学习(一)-----spi子系统架构http://blog.chinaunix.net/uid-21501855-id-5211900.html参考:文档:SPI通信简介https://blog.csdn.net/firefly_cjd/article/details/51935079#t17什么是spi?spi的作用?SPI硬件知识SPI外部信号描述SPI硬件寄存器映射SPI特性SPI相位和极性CPOL和CP...
2021-05-29 17:34:21
3406
3
原创 【中断】自己写一个中断处理程序,需要注意哪些问题?
Linux中断知识汇总:【深入理解Linux内核】【中断】内容汇总帖目录什么是中断处理程序?注册中断处理程序编写中断处理程序编写中断处理程序的注意事项为什么在中断里不可以睡眠?为什么在中断里不可以使用耗时很长的函数?什么是中断处理程序?中断处理程序:在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序。产生中断的每一个设备都有一个相应的中断处理程序。中断处理程序是被内核调用来响应中断的,他们运行于中断上下文中,该上下文中的代码不可阻塞。我们一.
2021-04-28 22:19:26
6884
3
原创 【中断】异常和中断的关系、异常向量表和中断向量表的关系
Linux中断知识汇总:【深入理解Linux内核】【中断】内容汇总帖目录什么是异常?什么是中断?异常和中断的关系什么是异常向量表?什么是中断向量表?异常向量表和中断向量表的关系什么是异常?异常:因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的事件。当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。从这句话中可以知道异常包括中断(单片机中的中断)+和运行模式的切换“中断”+资源访问“中断”。..
2021-04-27 23:50:45
4774
1
原创 【中断】发生硬件中断后,ARM处理器做了那些事情?
发生硬件中断后,ARM处理器做了那些事情?CPU自动保存处理器状态,即将中断发生时的CPSR寄存器内容保存到SPSR_irq寄存器中 CPU自动设置当前程序状态寄存器CPSR的低5位,使处理器进入特权模式中的IRQ模式(Linux不使用FIQ,只使用IRQ) 硬件自动关闭IRQ中断 将返回地址(PC)自动保存到LR_irq寄存器中 CPU自动的将程序计数器PC设置成异常中断向量表中的地址,进入相应的异常处理程序中处理中断 处理完中断后,恢复中断发生前的处理器状态,即将SPSR_irq寄存器中
2021-04-24 22:00:23
2035
2
原创 【中断】你对中断究竟有多了解?试着把中断的触发流程整理了一遍...
如果要你讲一下中断,你会怎么去描述一个中断的触发流程呢?最基础的可能就是:保护现场 - 中断处理 - 恢复现场...那保护现场做了什么事情?中断处理需要注意什么事情?恢复现场又做了什么事情?相对应的,关于中断,还有很多这样的问题:触发中断的因素有哪些? 各中断源如何向CPU提出中断请求? CPU如何区分是哪个中断触发的请求? 当多个中断源同时提出中断请求时,中断系统如何确定优先响应哪个中断请求? CPU在什么条件、什么时候、以什么方式来响应中断?..
2021-04-24 16:38:09
10754
5
原创 【开发日常】HI3519V101设置DDR时钟频率
目录确认DDR时钟源选择确认DPLL POSTDIV 时钟频率重新设置DDR时钟频率确认DDR时钟源选择PERI_CRG13 为SOC 频率配置寄存器PERI_CRG13 为SOC 频率配置寄存器表3-7 CRG寄存器概览(基址是0x1201_0000)偏移地址 名称 描述 页码0x0034 PERI_CRG13 SOC 频率配置寄存器 3-23对应内存地址为:0x12010034
2021-04-16 15:59:45
2012
原创 【深入理解Linux内核】EXPORT_SYMBOL宏解析
内核版本:5.10.0相关头文件:include/linux/export.h#include <linux/export.h>宏定义:#define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")#define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")#define EXPORT_SYMBOL_GPL_FUTURE(sym) _EXPORT_SYMBOL(s.
2021-04-15 10:56:35
2225
原创 【深入理解Linux内核】函数源码解析模板
当做是一篇“水”文吧。主要写一个模板,以后不熟悉的函数源码,都按照这个模板去填充。方便自己,方便他人。Ps:对于一些其他人都已经解析的非常完美的函数,会直接转载。系统版本:相关头文件:函数定义:函数功能描述:输入参数说明:返回参数说明:实例解析:...
2021-04-14 15:53:13
181
原创 【workqueue】flush_work函数解析
内核版本:5.10.0flush_work函数flush_work函数的功能是等待当前的工作队列执行完毕。返回true代表等待的工作队列已执行完毕; 返回false代表工作队列已经是空闲状态。static bool __flush_work(struct work_struct *work, bool from_cancel){ struct wq_barrier barr; if (WARN_ON(!wq_online)) return false; if (WARN.
2021-04-14 15:43:43
4889
原创 【开发日常】【windows】【tscan】在windows上部署TscanCode代码检测工具
目录TscanCode简介下载TscanCode安装TscanCode使用TscanCodeTscanCode简介TscanCode是腾讯静态分析团队开发的一款开源免费的C/C++静态分析工具,由于其比较简单实用,准确率较高,并且扫描C/C++代码不需要进行编译,所以个人觉得对C/C++项目开发挺有帮助的,就简单介绍一下该工具的安装与使用。下载TscanCode下载地址:https://download.csdn.net/download/Ivan804638781/1
2021-04-02 22:02:50
3555
10
原创 【开发日常】【windows】教你在Windows下的cmd窗口中使用ssh命令
目录下载OpenSSH安装OpenSSH配置OpenSSH下载OpenSSHhttps://download.csdn.net/download/Ivan804638781/16244149安装OpenSSH运行下载完成的setupssh安装文件。单击下一步。选择接受,单击下一步。选择组件,单击下一步。选择安装目录,单击下一步。选择开始菜单,单击下一步。设置sshd密码,单击下一步。这里一定要记住这个密码,登录ssh要输入密码
2021-03-30 20:09:40
3384
3
原创 【开发日常】【Windows】如何通过Cygwin在Windows中使用Linux命令
目录前情提要下载Cygwin安装Cygwin配置Cygwin前情提要因为软件开发工作的原因,我们常常使用Linux下的命令,并且养成了一定的习惯,有时候打开windows界面的命令行工具,回不自觉的输入“ls”、“pwd”等命令。那是否有什么办法,能让windows下也支持这些命令呢?以下是如何使用Cygwin(Windows XP的“ nix风格”终端)获得两全其美的方法。在文本中,我们将说明如何使Cygwin运行Linux命令。下载Cygwin网址: ht
2021-03-30 19:35:26
1602
1
原创 【开发工具】【git】git commit后,还没push前,如何撤销?
问题:正常git代码提交流程是:git add ...git commit -scodereview在代码还没真正入库前,我们还可以对当前代码进行修改,并基于上一个commit进行同步git add ...git commit --amendcodereview但如果操作不当,可能会造成上一个commit已经入库了,我们基于上一个commit进行了同步,就会报错:! [remote rejected] HEAD -> refs/for/xxx (change..
2021-03-30 16:36:21
832
1
原创 【中断】中断上下文、进程上下文
Linux中断知识汇总:【深入理解Linux内核】【中断】内容汇总帖目录中断上下文和进程上下文什么是中断上下文?什么是进程上下文?为什么要进行不同之间状态的切换?什么情况下进行用户态到内核态的切换?中断上下文代码中注意事项中断上下文和进程上下文进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事的两个概念。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次.
2021-03-29 22:16:37
4573
1
原创 【深入理解Linux内核】【中断】内容汇总帖
这篇文章的主要目的,就是想把所有自己以前写的中断汇总下,形成一套知识体系。方便查找问题。【中断】软中断、tasklet和任务队列
2021-03-29 22:14:01
895
3
原创 【中断】软中断、tasklet和任务队列
Linux中断知识汇总:xxxx目录中断下半部实现机制什么是软中断?什么是tasklet?什么是工作队列?软中断、tasklet和工作队列的区别与联系软中断:tasklet:工作队列:如何选择合适的下半部机制?中断下半部实现机制为了让中断处理运行的快,同时要完成相应的全部工作。根据具体的内容将中断分为两个部分:上半部分(中断处理程序)和下半部分(推后处理程序)。上半部分需要立即执行,并且有严格的时间限制,这些工作是在所有中断被禁止的情况下完成的,剩余部.
2021-03-29 21:59:16
1761
1
转载 【开发工具】【Ftrace】内核追踪器(ftrace)的使用
本文转载自:https://blog.csdn.net/longerzone/article/details/16884703因为对方已经写的非常详细了,暂时没有什么需要加的内容,就直接转载了.目录Ftrace简介Ftrace的应用场景Ftrace的配置Ftrace 的基本使用步骤Ftrace 的进阶使用Ftrace 提供的函数使用简单的 Ftrace 脚本案例Ftrace简介Ftrace 是一个内核中的追踪器,用于帮助系统开发者或设计者查看内核运行情况,它可.
2021-03-29 11:05:51
3826
2
原创 【操作系统】什么是RTOS?RTOS与普通操作系统的区别?
获取更多相关的笔试面试题,可收藏系列博文,持续更新中:C语言|BSP开发|嵌入式软件|Linux驱动|笔试面试题汇总帖什么是实时操作系统(RTOS)?什么样的系统可以被称作实时操作系统(RTOS)?Real-Time Operating System 实时操作系统实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操.
2021-02-28 20:44:35
5647
原创 【C语言】【switch】在switch case中一段永远不会被执行的代码
今天有段出糗的事情,写了一段代码,本来打算看下switch中具体走的哪个流程的,结果运行了半天也没有打印出来。代码类型类似如下:#include <stdio.h>int main(){ /* 我的第一个 C 程序 */ printf("Hello, World! \n"); switch(1) { printf("statement will never be executed! \n"); default: printf("default \n
2021-02-25 16:56:59
3458
4
原创 【开发工具】【memtester】内存测试工具(memtester)的使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖Memtester简介Memtester主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等. 通过给定测试内存的大小和次数, 可以对系统现有的内存进行上面项目的测试。Memtester安装下载memtester-4.3.0.tar.gz:http://pyropus.ca/software/memtester/解压缩ta.
2021-02-24 15:03:58
6083
5
原创 【开发工具】【stream】内存带宽测试工具(Stream)的使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖Stream简介STREAM是一套综合性能测试程序集,通过fortran和C两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率, 使得 STREAM 测试例程可以充分发挥出内存的能力。 STREAM 测试得到的是可持续运行的内存带宽最大值,而并不是一般的硬件厂商提供的理论最大值。Stream测试原理:1.主要有四种数组的运算,测试到内存带宽的性能,分别是:数组的复制(Copy).
2021-02-24 13:16:54
8457
9
转载 【开发工具】【ifconfig】显示或设置网络设备(ifconfig)的使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖添加这篇文章的目的就是为了补充自己的工具库,方便后续排查问题。因为已经有比较好的文档介绍了ifconfig,因此直接参考:https://www.runoob.com/linux/linux-comm-ifconfig.htmlifconfig简介ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。.
2021-02-21 20:35:11
770
1
原创 【Makefile】Makefile 中 LINUXINCLUDE 的作用
背景知识在驱动开发的时候,我们经常会创建很多新的头文件,这些头文件大多以#include"xxx.h"的形式放在源码中。而内核头文件则是以#include <xxx.h>的形式存在。#include"xxx.h"、#include <xxx.h>这两者的区别:前者(使用""),来引用xxx.h文件,是首先检索文件的当前路径;如果没有,再检索标准路径,看看这些文件夹下是否有该头文件。 后者(使用<>),来引用xxx.h文件,是首先检索标准路径,看看这些文
2021-01-27 15:47:28
1004
1
原创 【问题排查】implicit declaration of function ‘interruptible_sleep_on‘处理
当前内核版本:3.18.y源代码对应的内核版本:2.6.37问题移植代码的时候报错:341:3: error: implicit declaration of function 'interruptible_sleep_on' [-Werror=implicit-function-declaration] interruptible_sleep_on (&tty->read_wait); ^一样是比较两个版本的内核源码,发现interruptible_.
2021-01-27 15:11:36
1160
3
原创 【开发工具】【git】通过关键字搜索对应的git提交日志
因为想查看某一个函数对应在源码中的修改记录,就想到了git log.试试看能不能搜索到相关信息。想找到一个内核函数相关的git log修改记录,第一想法是"git log + grep"操作:zhugeyifan@83-28:~/source/linux-stable/linux-stable$ git log | grep interruptible_sleep_on swim3: fix interruptible_sleep_on race interruptible_s
2021-01-27 14:39:07
1936
2
原创 【问题排查】error: too many arguments to function ‘tty->driver->ops->ioctl‘处理
当前内核版本:3.18.y源代码对应的内核版本:2.6.37代码移植过程中报错:...491:13: error: too many arguments to function 'tty->driver->ops->ioctl' error = (tty->driver->ops->ioctl)(tty, file, FIONWBUFD, (unsigned long)&d_buff);比较两个内核的差异。tty->.
2021-01-27 13:46:01
2757
1
原创 【proc】使用proc_create_data函数在proc下创建节点
前情提要:移植代码的时候遇到create_proc_read_entry函数,新的内核里已经没有这个函数了,只能找对应的替换。proc_create_data函数就是可以替换掉它,本文主要讲解下如何使用proc_create_data,以及相关的参数配置。proc_create_data函数函数定义在“linux/proc_fs.h”头文件中extern struct proc_dir_entry *proc_create_data(const char *, umode_t,.
2021-01-27 11:31:07
9230
2
原创 【开发日常】implicit declaration of function ‘create_proc_read_entry‘处理
问题遇到编译报错:2534:2: error: implicit declaration of function 'create_proc_read_entry' [-Werror=implicit-function-declaration] create_proc_read_entry("driver/fpgae1", 0, 0, fpgae1_proc_debug, NULL);百度搜了一下,对应的头文件应该是:#include <linux/proc_fs.h>
2021-01-27 10:54:57
1888
1
原创 【开发工具】【i2c-tools】I2C总线调试工具(i2c-tools)的安装与使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖i2c-tools的安装I2C Tools源码官网http://i2c.wiki.kernel.org/index.php/I2C_Tools安装步骤下载i2c tools:https://www.kernel.org/pub/software/utils/i2c-tools/解压缩tar -vxzf i2c-tools-4.1.tar.gz 注:小技巧:Linux下一般压.
2021-01-25 21:57:57
3534
3
原创 【开发工具】【lsusb】查询USB设备信息(lsusb)的使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖本文主要介绍查询USB设备信息(lsusb)的使用。写这些文章的主要目的是给自己看的,想法是把目前网上能收集到的相关信息都汇总起来,方面有需要的时候能迅速上手。后续会把命令输出的打印,每一行都介绍一些(需要些时间,用到的时候再弄)lsusb命令的作用显示本机的USB设备列表信息。在手册上lsusb定义成:显示系统中以及连接到系统的USB总线信息的工具。lsusb命令 用于显示本.
2021-01-24 21:23:09
3886
1
转载 Unix/Linux/BSD命令大全|实用指南
本文转载自:UNIX TOOLBOX - 中文版按照自己的理解,增删了部分内容。这是一份收集Unix/Linux/BSD命令和任务的文档,它有助于高级用户或IT工作。它是一份简明扼要的实用指南,当然读者应该知道他/她在干什么。Unix Toolbox 版本:12你可以到http://cb.vu/unixtoolbox.xhtml找到本文档的最新版。PDF版本可以替换链接中的.xhtml为.pdf,小册子版本可以替换成.book.pdf。 用双面打印机可将小册子打印成册。这份X...
2021-01-24 19:42:34
2758
1
原创 【开发工具】【Bus Hound】USB抓包工具(Bus Hound)的使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖目录Bus Hound概述Bus Hound使用说明settings设置 - 设置捕捉的内容Device设置 - 设置捕捉的设备Capture设置 - 开始捕捉数据Save - 导出捕捉的数据Bus Hound概述Bus Hound是一个超级软件总线协议分析器,用于捕捉来自设备的协议包和输入输出操作。该软件是由美国perisoft公司研制的一种专用于PC机各种总线数据包监视和控
2021-01-21 13:27:12
18930
9
原创 【内存管理】【slab】/sys/kernel/slab/<slab name>/trace解析
目录什么是/sys/kernel/slab//trace?/sys/kernel/slab//trace的作用/sys/kernel/slab//trace使用方法什么是/sys/kernel/slab/<slab name>/trace?首先是看下官方文档里的相关介绍:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-kernel-slabWhat: /sys/kernel/slab/cache
2021-01-20 16:05:27
2579
2
原创 【开发工具】【readelf】查看ELF格式文件工具(readelf)的使用
目录readelf概述readelf命令使用说明readelf概述readelf是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用。常见的文件如在Linux上的可执行文件,动态库(*.so)或者静态库(*.a) 等包含ELF格式的文件。Ps:什么是ELF文件?系统里的目标文件是按照特定的目标文件格式来组织的,各个系统的目标文件格式都不相同。从贝尔实验室诞生的第一个Unix系统使用的是a.out格式(直到今天,直到文件仍然称为a.out文件)。Win
2021-01-16 19:17:01
2299
原创 【开发工具】【ethtool】查询与设置网卡参数工具(ethtool)的安装与使用
目录什么是ethtool?ethtool的安装ethtool的使用什么是ethtool?Ethtool是Linux下用于查询和设置网卡参数的命令。用于控制网络驱动程序和硬件(尤其是有线以太网设备)的标准Linux实用程序。它可以用于:获取标识和诊断信息 获取扩展的设备统计信息 以太网设备的控制速度,双工,自动协商和流控制 控制校验和卸载和其他硬件卸载功能 控制DMA环大小和中断控制 控制多队列设备的接收队列选择 升级闪存中的固件ethtool的安装下载t
2021-01-16 18:31:14
4469
4
原创 【操作系统】优先级反转、优先级继承、优先级天花板
目录什么是优先级反转?什么是优先级继承?什么是优先级天花板?什么是优先级反转?高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。举个栗子:进程A,进程B,进程C。优先级依次递增。进程C优先级最低,但进程C最先运行(占有锁),此时进程B运行,因为优先级比C高,因此抢占运行,过了一会进程A运行,原本进程A想要抢占进程B,但拿不到锁(被C占有锁),必须等待锁释放。但C又因为被进程B抢占,需要等待进程B结束..
2021-01-16 12:27:15
5743
7
转载 也谈谈内卷化、996和程序员的发展
转自:也谈谈内卷化、996和程序员的发展最近看到这个问题被谈得很多。铺天盖地的35岁、内卷化、996。这里也想谈谈自己的想法。1)内卷化的形成内卷为什么会形成呢?从公司内部的角度来说,同事之间做的事情也缺少独特性。那么既然每个人都差不多,那么与其招一个工作十年的人,还不如招个应届生。虽然说从代码的产出和质量来说,工作十年的工程师理论上来说应该是好很多, 但是如果工作十年的人缺少积累,缺少系统性的理解,那么跟应届生比较可能多了一些广度(因为换过工作)。但是深度上来说并没有本质上的区别。那么这个.
2021-01-15 10:52:35
404
3
原创 【C语言】写一个“标准“宏,已知数组table,求出table的元素个数
直接上答案:#define NTBL (sizeof(table)/sizeof(table[0]))解析:先算出总数组大小,再算出单个成员大小,除下来就是成员数量。(因为数组成员大小相同)收录于:C语言|BSP开发|嵌入式软件|Linux驱动|笔试面试题汇总帖...
2021-01-10 22:05:30
1974
2
原创 【C语言】写一个“标准”宏,实现交换两个参数值
直接上答案:#define SWAP(x,y) { \(x) = (x) + (y); \(y) = (x) - (y); \(x) = (x) - (y); \}解析:上面是一种不需要额外参数,实现x,y的值替换的方法。带入实例:x=1,y=2;x = x + y = 1 + 2 = 3; //这里x+y的和。y = x - y = 3 - 2 = 1; //(x在上一步已经变成3了)这里y就等于先前的x的值。x = x - y = 3 - 1 = 2;...
2021-01-10 22:04:43
2154
3
strace-4.11源代码下载
2022-02-08
mtd-utils.tar.bz2
2021-11-24
hdparm-9.60.tar.gz
2021-08-18
Source Insight 4.0.0085-4.0.0086.zip
2021-08-13
stream_5.10.tar.gz
2021-02-24
iperf-2.0.9-win64.rar
2021-02-21
ARM 串口中断问题 一直进串口中断出不来
2016-08-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅