Linux
文章平均质量分 86
WindLOR
Homepage:www.windiot.cc
Keywords:Linux,Openwrt,Network,Router,DTU,ARM,MIPS
展开
-
C语言程序编译过程中自动添加编译时间等相关信息
在程序代码中自动添加编译时间等信息的几种方法原创 2022-08-09 14:50:41 · 3209 阅读 · 2 评论 -
Linux程序coredump地址显示问号的调试方法 - 基于map文件
coredump即Linux系统上,应用程序崩溃时的运行栈快照,已便于定位崩溃问题正确使用coredump需要几个条件:第一,coredump本身的配置设置coredump文件路径及名称 echo "$dir/core-%e-%p-%t" > /proc/sys/kernel/core_pattern记录pid echo 1 > /proc/sys/kernel/core_uses_pid设置coredump文件大小:ulimit -c unlimited原创 2022-04-22 10:13:54 · 4892 阅读 · 0 评论 -
linux 核间通讯rpmsg架构分析
以imx8为例在最底层硬件上,A核和M核通讯是靠硬件来进行的,称为MU,如图Linux RPMsg 是在virtio framework上实现的一个消息传递机制VirtIO 是一个用来实现“虚拟IO”的通用框架,典型虚拟的pci,网卡,磁盘等虚拟设备,kvm等都使用了这个技术与virtio对应的还有一个virtio-ring,其实现了 virtio 的具体通信机制和数据流程。virtio 层属于控制层,负责前后端之间的通知机制(kick,notify)和控制流程,而 virtio-v原创 2022-03-04 17:12:30 · 10314 阅读 · 7 评论 -
Linux Mutex机制与死锁分析
在Linux系统上,Mutex机制相比于信号量,实现更加简单和高效,但使用也更加严格1. 任何时刻只有一个任务可以持有Mutex2. 谁上锁谁解锁3. 不允许递归地上锁和解锁4. 当进程持有一个Mutex时,不允许退出5. Mutex只能通过相关API来管理,不可被拷贝,手动初始化或重复初始化在应用层来说,一般Mutex多用于多线程间的同步,本文针对第四点"当进程持有一个Mutex时,不允许退出"来做一些探讨和测试关于多进程使用Mutex,有一个很经典的场景,即共享内存通讯两原创 2021-12-08 16:00:00 · 3097 阅读 · 0 评论 -
Openwrt系统初始时间
一般Openwrt系统较多用于网络方面的产品,比如路由器,但路由器几乎都没有硬件RTC,因此系统初始时间不准.在Openwrt系统中,初始时间可以认为有2个, 固件编译时间和文件系统加载后的初始时间关于固件编译时间,即为Linux kernel 编译时间, 即是/proc/version内容,比如:root@UVCOSS:~# cat /proc/versionLinux version 4.14.221 (xxxx) (gcc version 7.5.0 (OpenWrt GCC 7.5.原创 2021-08-31 16:12:16 · 2881 阅读 · 0 评论 -
ARM GIC简介与Linux中断处理分析
先简单说明一下GIC(具体详尽的介绍请查阅ARM GIC相关文档)GIC即general interrupt controller。它是一个架构,版本历经了GICv1(已弃用),GICv2,GICv3,GICv4。对于不同的GIC版本,arm公司设计了对应的GIC IPGIC的核心功能:对soc中外设的中断源的管理,并且提供给软件,配置以及控制这些中断源。下面一张ARM GICv2 的图中断源类型说明:SGI(Software-generated interrupt):范围0原创 2021-08-10 18:15:21 · 1346 阅读 · 0 评论 -
记最近Linux中遇到cpu使用率低loadavg高的分析过程
首先明确一下CPU使用率和loadavg这两个概念:CPU使用率指当前CPU正在执行指令的繁忙程度,越高表面CPU正在执行很多指令即有进程一直在cpu上运行着Loadavg指的是CPU负载程度,表明的是CPU当前正在运行的任务以及等待运行的任务统计,是一种趋势的体现;更详细一点来说是R和D状态的进程数量统计分析此问题的起因是前一段时间购买的开发板,使用最新的SDK跑起来后,几乎没有什么任务在运行,CPU 100% idle,但是loadavg一直在1以上(cpu是双核A7),对比之前使用原创 2021-07-22 17:14:31 · 2789 阅读 · 0 评论 -
Linux 信号可靠性,同步,异步,多线程信号等介绍
鉴于网上超多关于Linux信号处理相关的文章,本篇关于基本的信号知识不再普及,只提出一些平时不常关注或者关注不到的一些方面:1. 信号可靠性:此可靠指的是信号是否会排队,并不是指信号会丢失(其实在也可以理解为不排队的信号就会丢失)。SIGRTMIN以下的信号不会被排队处理,即只传递一次,如果进程已经有信号还未被处理,后面再来同样的信号即丢失,其他的不同信号还是进入排队处理。SIGRTMIN以上的信号,都会进入队列2. 信号异步处理:进程注册的信号处理函数将在进程内核态返回用户态时被调用,相对于进程主原创 2021-07-15 13:16:35 · 781 阅读 · 2 评论