
Linux编程
xinghuah
这个作者很懒,什么都没留下…
展开
-
linux调试工具 strace 和pstack 编译及使用介绍
一、简介 1、strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 2、pstack是一个基于GDB的脚本命令,可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack...转载 2020-07-29 18:25:00 · 685 阅读 · 0 评论 -
关于linux工具--valgrind的移植和使用相关的知识汇总
一、Valgrind简介1.关于Valgrind:Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。它不仅仅是一个内存泄露检查器。它只是包含了一个检查内存泄露的工具而已。这个工具恰恰是 Valgrind 中用处最小的一..转载 2020-07-29 18:16:52 · 1159 阅读 · 0 评论 -
Linux内存管理系统参数配置之OOM(内存耗尽)
一、前言本文是描述Linux virtual memory运行参数的第二篇,主要是讲OOM相关的参数的。为了理解OOM参数,第二章简单的描述什么是OOM。如果这个名词对你毫无压力,你可以直接进入第三章,这一章是描述具体的参数的,除了描述具体的参数,我们引用了一些具体的内核代码,本文的代码来自4.0内核,如果有兴趣,可以结合代码阅读,为了缩减篇幅,文章中的代码都是删减版本的。按照惯例,最后一章是参考文献,本文的参考文献都是来自linux内核的Documentation目录,该目录下有大量的文档可以参考,每一转载 2020-07-29 18:14:09 · 3813 阅读 · 0 评论 -
arm-linux的gdb移植
arm-linux的gdb移植分为两种情况.一种是交叉调试版。这一种模式是需要编译一个arm-linux版本gdbserver (GDB的stub模块).然后再编译一个X86版本交叉调试的gdb.为了与桌面版本身的gdb 区别开来,一般改名为 arm-linux-gdb。两者通过串口或者网络进行互联。还有一种是干脆把整个gdb移植成一个ARM的本地版。在开发板上直接用gdb来调试。前一种方法是比较正统的方法。它gdbserver可以通过arm-linux-gdb直接在host上单步调试target的应用程.转载 2020-07-26 17:26:32 · 432 阅读 · 1 评论 -
linux调试工具 strace 和pstack 编译及使用介绍
一、简介 1、strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 2、pstack是一个基于GDB的脚本命令,可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack...转载 2020-07-25 16:20:27 · 1169 阅读 · 0 评论 -
imx6 DDR Stress Test Tool
DDR Stress Test Tool 提供了两种用途。首先,它可以用来对校准DDR3,以便于MMDC PHY delay settings和PCB配对来达到最佳的DRAM新能。整个过程是全自动的,因此客户可以在较短的时间内让他们的DDR3工作起来。 另外,该工具可以运行内存压力测试,用来验证DDR3的功能和可靠性。压力测试可以用来验证硬件连接、MMDC寄存器参数和DDR3模式寄存器设置。测试最重要的目的是让客户验证DDR3在他们的自己的板子上运行稳定。 Calibration转载 2020-07-01 21:48:37 · 1274 阅读 · 0 评论 -
CAN—通讯实验
本章参考资料:《STM32F4xx 中文参考手册2》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。若对CAN通讯协议不了解,可先阅读《CAN总线入门》、《CAN-bus规...转载 2020-02-05 18:28:35 · 1112 阅读 · 0 评论 -
yocto inittab initialization processing
yocto是用来制作发行版image、BSP的一个很强大的工具,其文件系统的结构跟Ubuntu、redhat等很像,几乎如出一辙,这也能看出,yocto的成长也是能够整合多方平台(系统)的。好久没写博客,最近研究了一下yocto文件系统的启动流程,觉得挺有意思,在这里分享一下。废话少说,正式进入主题。内核起来,启动第一号进程(init进程,/sbin/init)后,就把控制权交给了init进程...转载 2019-10-10 17:26:01 · 299 阅读 · 0 评论 -
Linux 进程与信号的概念和操作 linux process and signals
信号与进程几乎控制了操作系统的每个任务。在shell中输入ps -ef命令,我们将得到如下结果:(译者注:-e Select all processes. Identical to -A; -f Do full-format listing. This option can be combined with many other UNIX-style options to add addi...转载 2019-09-28 16:49:06 · 222 阅读 · 0 评论 -
对Socket CAN的理解(2)——【Socket的原理及使用】
转载请注明出处:http://blog.youkuaiyun.com/Righthek谢谢!为了能够对Socket CAN的深入理解,我们需要了解Socket的机制。Socket的中文翻译为“插座”,在计算机世界里称为套接字。Socket最初是作为网络上不同主机之间进程的通信接口,后来应用越来越广,在同一主机上的不同进程之间通信也可以用Socket。简单来说,...转载 2019-09-09 20:59:19 · 235 阅读 · 0 评论 -
对Socket CAN的理解(1)——【CAN总线原理】
由于Socket CAN涉及到CAN总线协议、套接字、Linux网络设备驱动等。因此,为了能够全面地了解Socket CAN的原理。我们需要了解以下几个方面的知识点:(1)CAN总线协议;(2)Socket原理;(3)Linux网络设备驱动;当熟悉以下三个方面的知识点后,我们再去分析基于Linux的Socket CAN的驱动。这样的话理解起来更加容易、易懂。(4)Socket ...转载 2019-09-09 20:58:21 · 399 阅读 · 0 评论 -
IMX6 CAN接口调试
1).简介CAN(Controller Area Network)总线是嵌入式设备最为常用的接口之一,常用于汽车以及工业自动化等嵌入式领域,因此本文就基于嵌入式Linux演示使用CAN总线进行通讯测试。本文所演示的平台来自于Toradex Colibri iMX6DL和Apalis iMX6D ARM嵌入式平台,这两个平台是都是基于NXP iMX6系列ARM处理器,支持双核心Corte...转载 2019-09-09 14:45:08 · 1912 阅读 · 0 评论 -
移植QT5.6到嵌入式开发板
目前网上的大多数 QT移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for windows ,本文就来介绍一下QT在嵌入式环境的搭建。移植以到 JZ2440 为例,使用韦老大提供的ubuntu9.10 虚拟机作为移植环境。当然,其它虚拟机也是可以的,我同样在ubunt...转载 2019-08-15 14:06:24 · 290 阅读 · 0 评论 -
svn 回退/更新/取消至某个版本命令详解
1. 取消Add/Delete取消文件svn revert 文件名取消目录svn revert --depth=infinity 目录名2. 回退版本方法1: 用svn merge1) 先 svn up,保证更新到最新的版本,如20;2) 然后用 svn log ,查看历史修改,找出要恢复的版本,如10 。如果想要更详细的了解情况,可以使用svn diff -r 1...转载 2019-06-27 19:23:38 · 2384 阅读 · 0 评论 -
Windows屏蔽系统热键的方法总结
在编写程序的过程中,我们有时需要实现屏蔽操作系统一些热键的功能,如(ctrl+delete+alt,ctrl+shift+esc等)。网络上有很多关于这方面的资料,总结了一下,一般有如下两个方法: 1. 通过加载低级键盘钩子(WH_KEYBOARD_LL)截获大部分的系统热键,并屏蔽它。这个方法比较简单,但有个缺陷,那就是对ctrl+alt+delete没有办法。 2. 通...转载 2018-10-30 20:42:37 · 4834 阅读 · 0 评论 -
Linux内核调度
Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平 Linux线程优先级设置 首先,...转载 2018-04-25 15:35:36 · 378 阅读 · 0 评论 -
linux下实现对framebuffer(/dev/fb0)的截屏操作
在linux系统中,使用framebuffer来提供用户态进程直接操作显示屏的功能.在嵌入式系统开发中,需要对显示屏的内容进行截取,实现一个lcd截屏工具实现对显示屏内容的截取,存储为bmp格式.一个bmp文件有四部分组成:其中位图文件头内容如下:[plain] view plain copyWORD bfType; DWORD bfSize; WORD bfReserve...转载 2018-05-10 18:22:26 · 2417 阅读 · 2 评论 -
函数sync、fsync与fdatasync的总结整理(必看篇)
一、术语解释脏页:linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。内存映射:内存映射文件,是由一个文件到一块内存的映射。Win3...转载 2018-05-28 19:37:44 · 1043 阅读 · 0 评论 -
Linux文件缓冲区详解
Linux文件缓冲区详解A)缓冲区机制根据应用程序对文件的访问方式,即是否存在缓冲区,对文件的访问可以分为带缓冲区的操作和非缓冲区的文件操作:a) 带缓冲区文件操作:高级标准文件I/O操作,将会在用户空间中自动为正在使用的文件开辟内存缓冲区。b) 非缓冲区文件操作:低级文件I/O操作,读写文件时,不会开辟对文件操作的缓冲区,直接通过系统调用对磁盘进行操作(读、写等),当然用于可以在自己的程序中为每...转载 2018-06-01 14:04:00 · 10816 阅读 · 1 评论 -
Linux I/O优化 磁盘读写参数设置
Linux I/O优化 磁盘读写参数设置关于页面缓存的信息,可以用cat /proc/meminfo 看到。其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache)。随着写入缓存页,Dirty 的值会增加。一旦开始把缓存页写入硬盘,Writeback的值会增加直到写入结束。Linux 用pdflush进程把数据从缓存页写入硬盘,查看有多少个pdflush进程...转载 2018-06-01 14:10:34 · 1255 阅读 · 0 评论 -
linux文件系统(三) - 内核回写机制
将数据写到page cache写文件的时候其实是通过文件系统写到page cache中,然后再由相应的线程在适当的时机将page cache中的数据写到磁盘中。//fs/fat/file.cconst struct file_operations fat_file_operations = {... .aio_write = generic_file_aio_writ...转载 2018-06-01 14:32:20 · 646 阅读 · 0 评论 -
Linux虚拟终端控制小键盘灯
Linux内核提供函数 ioctl 用于控制底层设备与描述符。参数KDSETLED指示小键盘灯的状态,0x01为scroll lock灯亮,0x02为num lock灯亮, 0x04为caps lock灯亮。 #include <stdio.h> #include <fcntl.h> #include <unistd.h> ...转载 2018-08-15 21:57:29 · 1145 阅读 · 1 评论 -
linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress 、uncompress、 zip、 unzip、rar、unrar等程式,以及如何使用它们对.tar、.gz 、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、. tar.Z、.zip、.rar这10种压缩文件进行操作Linux下最常用的打包程序就是tar了,使用tar程序...转载 2018-08-31 10:11:55 · 126 阅读 · 0 评论 -
Qt 屏蔽系统按键、任务管理器、任务栏、鼠标,修改注册表
.h#ifndef CHOOK_H#define CHOOK_H #include <QObject>#include <Windows.h> /************************************************************************//* 钩子类,屏蔽系统热键 author: liuli...转载 2018-10-31 11:07:11 · 1209 阅读 · 0 评论 -
QT 如何注册系统热键,类似 Windows上的RegisterHotKey函数一样
下载库:http://doc.libqxt.org/tip/qxtglobalshortcut.html在linux下编译安装,ubuntu9.10上会报找不到X11/libx.h,执行命令apt-get install libx11-dev安装完后再编译就可以了2:在qt中使用qxt库 在pro文件中加上 CONFIG += qxt QXT += c...转载 2018-10-31 11:43:17 · 1041 阅读 · 0 评论 -
Linux各种重要配置文件详解
1:网卡文件/etc/sysconfig/network-scripts/ifcfg-eth0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@Gin scripts]# cat /etc/sysconfi...转载 2018-10-30 17:25:44 · 10549 阅读 · 0 评论 -
查看进程状态
转载:https://blog.youkuaiyun.com/gjy211/article/details/52680735查看进程状态/proc/pid/stat[root@localhost ~]# cat /proc/6873/stat 6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 041958 31 0 0 25 0 3 0 5882...转载 2018-04-25 15:31:57 · 257 阅读 · 0 评论