linux
houxiaoliwang
这个作者很懒,什么都没留下…
展开
-
使用strace工具跟踪系统调用
1、strace 使用时无需重新编译程序,我们可以用来跟踪没有源代码的程序。使用strace工具来执行程序时,它会记录程序执行过程中调用的系统调用、接收到的信号。通过查看记录结果,可以知道程序打开了哪些文件、打开是否成功、对文件进行了哪些操作等。2、strace的用法在使用前确保已经移植了strace。直接运行strace可以看到它的用法及各个参数的作用usage: s原创 2016-11-03 11:07:59 · 580 阅读 · 0 评论 -
ARM架构图
下图所示的是ARM构架图。它由32位ALU、若干个32位通用寄存器以及状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。1. ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。2. 桶形移位寄存器:ARM采用了32×32位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以转载 2017-01-08 22:49:36 · 6077 阅读 · 0 评论 -
STM32简介
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:1STM32STM32代表ARM Cortex-M内核的32位微控制器。2FF代表芯片子系列。原创 2017-01-12 22:56:46 · 1351 阅读 · 0 评论 -
linux日志管理
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。journalctl功能强大,用法非常多。# 查看所有日志(默认情况下 ,只保存本次启动的日志)$ sudo journalctl# 查看内核日志(不显示应用日志)原创 2017-02-20 10:56:56 · 336 阅读 · 0 评论 -
Linux输入子系统:事件编码
输入系统协议用类型types和编码codecs来表示输入设备的值并用此来通知用户空间的应用程序。这篇文档对这些类型和编码进行了说明并且指出什么时候和如何使用这些类型和编码。 一个单一的硬件事件可以产生多个输入事件,每个输入事件包含一个单一数据项的新的数据值。EV_SYN是一个特别的事件类型,它用来把同一时刻产生的多个输入数据分割为多个数据包。在下面的描述中,术语事件(event)是指一个涵盖类转载 2017-05-04 09:38:48 · 574 阅读 · 0 评论 -
交叉编译ARM下的GDB
最近arm下的应用程序开发进行的比较多。而我一贯的做法就是在windows下使用vs进行开发,使用跨平台开发规范,该加宏的地方加宏,该用跨平台库的时候用跨平台库,然后尽可能做到在windows下就调试完软件的功能(有些东西,像调用一些驱动,就没办法调了)。目前这样的开发方式基本满足开发需求,但偶尔也会碰到一些特别的问题,需要在板子上调试才能方便的判断问题根源,而使用打印调试信息的方式显然在某些时候转载 2018-01-22 14:50:43 · 704 阅读 · 0 评论 -
linux下的core文件路径及文件名设置
方式一、临时设置 1 、如何生成 coredump 文件 ? 1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。 2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte),如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此c原创 2018-01-22 15:22:58 · 6654 阅读 · 0 评论 -
格式化SD卡工具e2fsprogs嵌入式版本制作
1. 下载源码包e2fsprogs,本人下载的版本是1.44.1:http://sourceforge.net/projects/e2fsprogs/2. 解压源码包到某个目录,本人的是:/root/Desktop/common;3. cd进入到刚解压的源码目录,并建立新目录 release 用于安装编译连接后的程序;4. cd进入release目录,并建立配置脚本转载 2018-04-27 09:21:54 · 639 阅读 · 0 评论 -
linux系统时区设置方式
#include<stdlib.h>(setenv需要头文件)setenv("TZ","UTC-08:00",1);具体参数根据需要进行设置原创 2018-05-15 10:03:31 · 1495 阅读 · 0 评论 -
linux下通过命令格式化SD卡
步骤一:查看系统中是否有步骤二:sudo fdisk /dev/sdb12输入m会出现命令类表,简洁而强大Command (m for help): mCommand action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d del...原创 2018-05-16 15:12:21 · 8843 阅读 · 0 评论 -
ARM架构解析
先来谈一下ARM的发展史:1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn计算机公司。(摘录自百度百科) 80年代中期,Acorn的一个小团队要为他们的下一代计算机挑选合适转载 2017-01-08 22:47:33 · 361 阅读 · 0 评论 -
linux内核的整体架构介绍
1. 前言本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。注:本文和其它的“Linux内核分析”文章都基于如下约定: a) 内核版本为Linux 3.10.29(该版本是一个long term的版本,会被Linux社区持续维转载 2017-01-08 22:42:14 · 360 阅读 · 0 评论 -
linux内核的架构图
1,内核的体系架构图 2.转载 2017-01-08 22:40:52 · 2155 阅读 · 0 评论 -
使用memwatch进行内存调试
1、memwatch介绍memwatch可以跟踪程序中的内存泄漏和错误,提供结果日志记录,能检测双重释放、错误释放、没有释放的内存、上溢和下溢等。2、使用memwatch步骤1)在代码中加入头文件memwatch.h2)程序的代码与memwatch.c一起编译、链接3)使用gcc编译器进行编译时要定义宏MEMWATCH、MEMWATCH_STDIO,即在编译程序时增加“原创 2016-11-03 14:59:47 · 490 阅读 · 0 评论 -
段错误调试
1、GDB调试1)第一步是使用带有调试标志(debugging flags)的方式编译这段代码,如下:# gcc -g segfault.c2)运行可执行程序 $:gdb a.out //进入gdb模式 (gdb) run //运行程序 Starting program: /home/dgawd/cpsc/363/a.out原创 2016-11-03 15:38:21 · 198 阅读 · 0 评论 -
linux下的定时器
1、创建定时器#include timer_t timerTid;struct itimerspec timerIt;int create_timer(){//printf("%s %d Test\n",__func__,__LINE__); int ret = -1; struct sigevent evp; memset(&evp,原创 2016-11-03 16:33:44 · 318 阅读 · 0 评论 -
linux下打印带颜色的字符
前不久就在某位同学的博客里看到,但是今天找了好久没找到,就直接google了,现贴出来跟大家分享一下格式如下(双引号里面没有加任何额外字符,"字符串"为要打印的内容):printf("\033[字背景颜色;字体颜色m字符串\033[0m" );示例:printf("\033[40;37mhello world!\n\033[0m");40是字背景颜色, 37是字体的原创 2016-11-04 10:00:41 · 435 阅读 · 0 评论 -
linux下通过宏进行打印
1、形式一#ifdef DEBUG#define MY_DEBUG(...) fprintf(stderr, __VA_ARGS__)#else#defineMY_DEBUG(...) printf(__VA_ARGS__)#endif实例: 调用:MY_DEBUG("Howdy"); //_ _VA_ARGS_ _扩展原创 2016-11-04 11:02:25 · 595 阅读 · 0 评论 -
嵌入式学习网站
.C语言中文网 http://see.xidian.edu.cn/cpp/ .中国IT实验室 http://c.chinaitlab.com/c/Index.html .站长之家 http://www.zzzj.com/html/cjj/ .编程学吧 http://www.bcx8.com/ .6lic.com电子在线 http://www.61ic.com/n转载 2016-11-11 09:30:27 · 3416 阅读 · 0 评论 -
id3lib-3.8.3在linux下的编译
首先是编译PC版的id3lib,全部按照默认即可。./configure别高兴,这时会报错:configure: error: Missing a vital header file for id3lib。要解决这个问题首先:vim configure找到'iomanip.h',删除 ,保存。然后vim include/id3/id3lib_strings.h转载 2015-12-24 16:52:48 · 530 阅读 · 1 评论 -
configure常用参数说明
在交叉编译中比较常见的参数是build、host和target了,正确的理解这三者的含义对于交叉编译是非常重要的,下面就此进行解释 --build=编译该软件所使用的平台(在什么平台上进行编译) --host=该软件将运行的平台(生成的程序在什么平台上运行) --target=该软件所处理的目标平台 我们以 编译 gcc 为例子来 讲解 这三者的作用转载 2016-12-05 10:54:10 · 1227 阅读 · 0 评论 -
Linux Core Dump浅析
Core Dump 名词解释在半导体作为电脑内存材料之前,电脑内存使用的是 磁芯内存(Magnetic Core Memory),Core Dump 中的 Core 沿用了磁芯内存的 Core 表达。图为磁芯内存的一个单元,来自 Wikipedia.在 APUE 一书中作者有句话这样写的:Because the file is named core, it原创 2017-01-03 12:27:23 · 612 阅读 · 0 评论 -
linux下inline的使用
在windows下调试程序时,对部分类的成员函数用了inline进行修饰,在其他类中对inline修饰的函数进行了调用,可以正常运行,但是把程序移植到linux中时,却报错调用的函数未定义解决方法:把提示未定义但是程序中确实是有的用inline修饰的函数前面的inline去掉...原创 2019-07-26 10:31:08 · 905 阅读 · 0 评论