自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(32)
  • 收藏
  • 关注

原创 Linux 内核缓存一致性相关机制和接口梳理

缓存一致性是一个非常关键的问题,特别是在多核处理器和直接内存访问(DMA)场景下。因此就需要有机制和接口来确保缓存的一致性。

2024-06-24 21:23:03 1163 1

原创 Linux 记一次spin_lock死锁优化经验

联系:两者都是非阻塞式的自旋锁获取操作,不成功即返回,都不会引起调用者睡眠。区别:主要区别在于对中断的处理上。不改变当前中断状态,而则会在操作前临时禁用中断,操作后恢复中断状态,确保了操作的原子性。选择使用哪个函数取决于具体的上下文需求。如果你确信在调用时不希望中断打断锁的获取过程,或者你处于一个可能需要明确控制中断状态的上下文中,更为合适。而在不需要特别处理中断,或者明确知道当前中断状态已满足要求的情况下,可以使用。

2024-06-05 07:32:19 321

原创 在Linux或Android系统中,SIGSTOP和SIGCONT学习

功能作用SIGSTOP用来停止进程,SIGCONT用来恢复停止的进程。协同工作: 这两个信号通常一起使用,形成一种暂停与恢复进程的机制,是作业控制和进程调试的基本组件。可处理性SIGSTOP不能被捕获或忽略,是不可阻挡的;而SIGCONT可以被程序通过信号处理器来处理,尽管通常情况下也不会这么做。

2024-05-29 11:17:16 1114

原创 Linux dd命令,希望不常用,但非常有用的命令~

dd命令在 Linux 中是一个非常强大的工具,用于复制和转换文件。它主要用于低级复制和转换,特别是当涉及块设备(如硬盘分区)时。dd命令的语法相当灵活,但也因为它的复杂性而有时让新手感到困惑。

2024-05-28 16:39:23 314

原创 ARM PMU - Performance Monitor Unit 用途和原理

PMU) 是一种硬件组件,用于跟踪和计数系统中的底层硬件事件。集成在ARM架构的处理器中,用于监控和度量处理器及系统性能的关键指标。它对于性能分析、调试、能耗管理和优化软件性能至关重要。

2024-05-25 17:20:18 1159

原创 虹膜识别技术原理以及现状和未来

总之,以后随着技术的不断进步和成本逐渐降低,虹膜识别技术有望在更多领域得到应用。例如,在金融领域,虹膜识别技术可以用于提高支付和转账等交易的安全性;虹膜是位于黑色瞳孔和白色巩膜之间的圆环状部分,包含许多相互交错的斑点、细丝、冠状、条纹、隐窝等的细节特征。虹膜识别技术和人脸识别,指纹识别类似,都属于基于生物特征的身份认证技术手段或者方法,只不过虹膜识别技术是利用眼睛虹膜的独特纹理和结构进行个人身份的验证。此外,还可以将虹膜识别技术与智能家居系统相结合,实现无接触式的家庭安全监控和智能控制;

2024-05-23 08:34:55 306

原创 Android设备monkey测试时,碰到 internal storage space is full,and some system function will not work properly

在Android设备进行Monkey测试时,如果遇到提示“internal storage space is full, and some system function will not work properly”,意味着设备内部存储空间已满,导致部分系统功能无法正常运作。不仅会影响Monkey测试的进行,也可能在实际使用中带来不可预知的体验问题,如应用崩溃等。同时,我们也需要注意在日常使用和测试中需定期监控设备存储状况,及时清理无用数据,保持足够的可用空间。

2024-05-22 12:21:01 473

原创 Linux内核内存回收管理常见策略和概念

Linux内核的内存回收管理是复杂而精细的,旨在确保系统在各种负载和使用模式下都能高效、稳定地运行。通过不断优化和引入新技术,Linux内核的内存管理能力随着每个新版本的发布而不断增强。这些策略和机制的共同目标是最大化内存利用率,最小化内存碎片,同时保持系统的响应性和性能。From:程序员秘书。

2024-05-21 07:04:22 1010

原创 Linux input子系统(二)uinput 原理和用途

uinput即,uinput 的实现是基于 Linux input子系统(Input Subsystem),允许用户空间程序创建虚拟的输入设备并向内核发送输入事件,比如键盘敲击、鼠标移动等,就像这些事件来自真实的物理设备一样。对于开发自定义输入设备驱动、自动化测试、游戏控制模拟以及各种人机交互实验等场景非常有用。

2024-05-19 15:52:07 936

原创 Linux内存管理常见概念

在多处理器系统中,NUMA是一种内存设计,其中每个处理器都有自己的本地内存,访问本地内存比访问远程内存更快。内存分页是操作系统用于管理内存的一种机制,它将物理内存分割成固定大小的块,称为页(page)。它可以设置内存使用上限,监控内存使用情况,并在达到限制时触发内存回收。内存屏障是一组指令,用于确保在多处理器系统中,内存操作的执行顺序。为了提高系统的安全性,Linux内核支持内存加密,确保敏感数据即使在物理内存中也是加密的。内存屏障是一种同步机制,用于确保在多处理器系统中,内存操作的执行顺序符合预期。

2024-05-18 09:40:56 586

原创 一文搞懂 ARM AXI(Advanced eXtensible Interface)工作原理和读写流程

读地址通道(Read Address Channel):用于传输读取请求的地址和控制信息。读数据通道(Read Data Channel):用于返回从从设备读取的数据。写地址通道(Write Address Channel):用于传输写入请求的地址和控制信息。写数据通道(Write Data Channel):用于传输实际写入的数据。写响应通道(Write Response Channel):用于确认写操作是否成功完成。

2024-05-17 07:01:46 1359

原创 不再惧怕Linux内核panic (二) 认识DWARF

1、涉及到。

2024-05-15 11:37:06 488

原创 Linux ARM平台上的内联汇编学习(asm ,inline assembly)

在Linux+ARM平台上使用内联汇编(inline assembly),可以通过GCC(GNU Compiler Collection)提供的内联汇编语法来实现。内联汇编允许开发者在C/C++代码中直接嵌入汇编指令,对于编写性能敏感的代码、访问特定硬件特性或者实现某些底层功能非常有用。下面就结合内联汇编的优缺点为出发点,明白为什么要学习和掌握它,以及以一个内联汇编代码为例,熟悉一下内联汇编相关语法规则。内联汇编作为一种在高级语言代码中直接嵌入低级机器指令的技术,具有其独特的优势和潜在的局限性。

2024-05-12 07:44:17 1014

原创 不再惧怕Linux panic (一)

在这个例子中,N、Z、C、V标志分别代表负数、零、进位、溢出,daif字段表示调试、中断、故障、同步异常禁止位,PAN和UAO标志分别与数据对齐异常和用户地址中止有关。综上所述,ARM64内核panic打印信息包含了丰富的诊断数据,可以帮助开发者或系统管理员分析崩溃原因、定位错误代码位置,并结合其他调试手段(如内核转储、日志记录等)来解决问题。接下来是一系列寄存器的值,包括程序计数器(PC)、链接寄存器(LR)、栈指针(SP)以及其他通用寄存器(x0-x30)。,表示与MMC设备相关的中断处理程序。

2024-05-07 10:11:13 471

原创 ftrace tracers 之 function、function_graph 使用笔记(二)

ftrace 功能很强大,不仅能跟踪代码流程,也能用来分析性能问题。我们先从简单的代码流程跟踪使用学起。一般用作产品发布的版本,默认tracers 应该都是 nop,如果想要使用 其他 tracers 需要打开对应的内核配置宏才行。比如,今天使用到的 function、function_graph,对应需要:(1)function 主要用于跟踪内核函数的调用栈(其被调用过程)(2)function_graph 主要用于跟踪内核函数内部调用流程及耗时root:/sys/kernel/tracin

2024-05-02 07:34:19 1014 1

原创 如何将ubuntu Linux kernel版本升级到最新

在Ubuntu上升级到最新内核版本,可以选择使用官方的Mainline内核或者等待官方支持的内核更新。以下是通过Mainline内核升级的步骤,这种方法可以让快速获取到最新发布的内核版本,但请注意,这些内核可能不是经过Ubuntu官方测试和支持的,适合那些需要最新内核特性的用户。

2024-05-02 07:32:24 1280

原创 Linux命令shutdown、poweroff、halt与reboot,如同四位舞者,在系统的舞台上以独特韵律演绎着休憩与重启

在Linux中,shutdownpoweroffhalt和reboot命令都是用来管理系统关机或重启操作的工具。尽管它们有着相似的目标,即控制系统的运行状态,但它们之间存在一些关键的区别,包括功能、操作方式、选项以及在内核源码中的实现。

2024-04-29 13:04:11 1512

原创 linux内核中打印cpumask的方法总结

中包含的 CPU 核心编号列表,并将其作为函数参数传递给其他内核日志打印函数。总结,具体开发过程中选择哪种打印方法取决于具体的需求和调试环境。)用于表示一组CPU编号,常用于描述进程或任务的亲和性、中断或定时器的分配范围等场景。时,会在内核日志中看到堆栈跟踪信息以及跟随其后的CPU掩码打印。函数,它会自动打印当前CPU的标识。宏则提供了一种更直接的方式,它内部会处理掩码的格式化输出。获取掩码的第一个长整型元素,用于指定要打印的位数。函数,可以接收格式化字符串和参数,类似用户空间的。这种方式不太常见,因为。

2024-04-27 10:00:00 618

原创 使用Markdown编辑器的之常见语法

正确使用Markdown编辑器

2024-04-23 23:10:39 568

原创 Android java、native、kernel获取堆栈信息常用方法总结

在实际开发中,因为经常分析问题,需要从上到下跟踪一些代码调用流程,所以就会有分别在 java、native、kernel 打印调用堆栈的需求;之前也都是零散的在用,今天花了一些时间,梳理了一下,记录分享之。...

2022-08-15 00:06:18 3850 1

转载 高通display显示框架学习(一)

高通显示框架,display框架学习

2022-07-27 23:32:13 3477

原创 Linux ftrace 之 function、function_graph 使用笔记(一)

ftrace 功能很强大,不仅能跟踪代码流程,也能用来分析性能问题。尤其要深入和快速学习linux内核相关流程,非常有用。

2022-05-28 14:47:07 667

转载 外国工作十多年醉酒程序员的几点心得

我现在喝高了,可能会为公开下面这些内容而后悔,但我还是要说一说过去十年作为一名工程师所体会的几点心得,与诸君分享。1、促进事业发展的最好方式是换公司。2、技术栈其实并不重要,因为在我所在的领域有大约15种基本的软件工程模式可以适用。我从事数据方面的工作,所以与Web开发或嵌入式开发方面的工作不一样。但所有领域都有大约10条至20条核心原则,技术栈只是让那些方面更容易而已,所以不要为此烦恼。3、大家建议找工作是有道理的。如果我对某份工作不满意,可能是该跳槽了。4、我在之前待过的公司结识了几位终

2022-05-08 23:44:38 830

原创 [嵌入式er笔记]linux 命令find、locate、which、whereis用法详细总结

linux下文件查找命令用法总结。如需转载,请保留和标注清楚出处。前言我们经常需要在linux系统中查找一个文件,或需要知道哪些文件包含已知的特有信息,便于快速对比排查、分析问题,那么如何准确高效查找呢?其实在linux下可查找文件的命令不止一个,命令附带的用法也不止一个,有些组合功能真的很强大,尤其是find命令。如果你目前查找文件,使用最多的命令仅是 find ./ -name "test",那这篇最全最详也许没有之一的文章绝对值得一读,必有收获。建议:关注 并 星标 嵌入式er笔记

2021-07-04 18:54:54 288

原创 [嵌入式er笔记]linux tar 命令只要带一个参数,效率值爆棚

前言/背景今天get了一个,tar命令 -P(大写)参数的用法,感觉非常有用,做个笔记。我们平时可能使用比较多的常规打包、解压命令如下:tarzcvfxxx.tar.gzxxx//在当前工作目录,将xxx打包为xxx.tar.gztarxcvfxxx.tar.gz//将xxx.tar.gz解压到当前工作目录以上命令,当打包内容比较少,操作不是很频繁的时候,我们来回跳转服务器、跳转工作目录操作,是可以接受的,但当出现需要在某个用户(机器)不同的特定工作目录打...

2021-07-04 18:44:23 328

原创 [嵌入式er笔记]记一次shell脚本syntax error之谜

shell syntax error: unmatched ‘xxx’ 之谜最近用调试设备,调试一项新功能,因为想让自动循环干一件事情(无法持续连接adb),我第一时间想到了通过shell脚本实现,所以临时用notepad++,写了一个shell脚本,因为具体干的事情涉密,我就用抓取log的命令:logcat > /sdcard/logs 代替来描述吧。如,写了 temp.sh 如下:#!/bin/bashwhile truedo logcat > /sdca...

2021-06-23 00:12:01 433

原创 [程序员秘书]大厂嵌入式linux/Android驱动工程师面经,工作0~3年/初级程序员必看的面试经验,文内附有多个面试案例

前言最近几个月,应Boss安排,和其他几个同事组成一个面试组,陆陆续续面试了些人,有应届生、有工作3~5年的人。每个人踏上code这条路的境遇不同,专业不同,性格不同,通过面试了解他人的经历也是一件非常有趣的事情;透过他人的经历、优点、缺点,我们也可以反思现在的自己或曾经的自己。目前招聘面试已经告一段落,刚好趁着5.1假期,写篇文章记录一下。这次招聘对象:职能范围:嵌入式linux/Android驱动工程师​目标范围:应届生、工作3~5年者面试的人数比较多,主要以ABCD…...

2021-05-09 09:29:35 886 4

原创 [嵌入式er笔记]C语言中的main函数究竟该怎么写

谈谈C语言的main,看看还是不是你认识的main?main函数和普通函数的区别 返回值 -普通函数的返回值可以是C语言默认标准数据类型,也可以是我们自己定义的任意类型,如结构体或枚举值等等。 -main函数已被C标准规定,只能返回int型,return 0代表程序正常结束运行,返回非0说明存在程序异常。 入参形式 -普通函数的入参,我们可以按需定义。 -main函数已被C标准规定,有固定形式的入参,下面会详细描述。 生命周期 -main函数被C标准规定,是作为整个程

2020-07-24 07:26:34 345

原创 程序员不应该就是专职敲代码的吗

# 程序员不仅有代码,还有和产品经理、测试人员之间的“爱恨情仇”#有关程序员的一个段子网上看到的,分享一下:当你看到一个程序员的两只手在键盘上,上下翻飞,行云流水的时候,多半不是在敲击代码,大概率是在跟产品经理sibi讨论需求,另一种可能就是在跟测试打口水仗,10%几率是在论坛码字摸鱼,可以手速飞快而不需要停下思考的代码,多半也可以靠Ctrl + C/V 搞定。而当你看到程序员双目呆滞,遥望天际的时候,多半编程开始了。对于已经参加工作的人看到这个段子,可能会.

2020-07-11 19:42:59 462

原创 [嵌入式er笔记]记录一次git操作详细实践过程(我真应该更早一点认识Git)

原文链接:https://mp.weixin.qq.com/s?__biz=MzAxODkwMzM4Mw==&mid=100000982&idx=1&sn=75a06c7fc9bc86ceb943174970df7b93&chksm=1bce7cee2cb9f5f8613e6d19bd68f422c3741a915cb1db085a32ea10fea6a4b401119e0c2095#rd#什么是Git截图来自于网络可见其实最初是因为一整套开源的linux..

2020-06-26 00:16:34 575

原创 探讨字符串本质及strlen、sizeof区别

https://mp.weixin.qq.com/s/vKLPWMt27Di28DZptXK7LQ

2020-06-25 23:49:34 101

原创 求阶乘运算引发的思考(C语言)

#前言小计划:参加工作以后,以前上学记录的很多C语言基础知识点,不常使用,有些也慢慢淡化和模糊了,今天翻了很久以前的(纸质)笔记本,计划将以前纸上的笔记,逐渐梳理转化为电子版,或以代码或以图片的形式,总结归档,伴随着我直到老去(额....似乎是一个伤感的话题,主要还是再也不怕娃儿撕我的书了)。小共勉:编程语言本身是一个工具,最终一定是为了解决实际问题而存在。正所谓工欲善其事必先利其器,平时还是需要多敲代码,多看,多借鉴别人的思想和经验,以最小成本牢牢掌握好这个工具,以后工作细分领域时才会更加游刃有余

2020-06-13 23:54:58 893

空空如也

空空如也

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

TA关注的人

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