linux
Vance2016
我是一名在校大学生,从事于计算机专业的学习
展开
-
git的一些基础命令
git的一些基础命令Git常用命令一般配置 git --version //查看git的版本信息 git config --global user.name //获取当前登录的用户 git config --global user.email //获取当前登录用户的邮箱 登录git /* 如果刚没有获取到用户配置,则只能拉取代码,不能修改 要是使用git...转载 2019-03-20 14:36:19 · 469 阅读 · 0 评论 -
简要描述linux系统从开机到登陆界面的启动过程
简述:1.开机BIOS自检2.MBR引导3.grub引导菜单4.加载内核kernel5.启动init进程6.读取inittab文件,执行rc.sysinit,rc等脚本7.启动mingetty,进入系统登陆界面来个简图:超详细描述linux系统从开机到登陆界面的启动过程对于linux系统的初学者来说,理解并掌握linux系统启动流程能够使你够深入的理解linux系统,还可以通过系统的启动过程来分析...原创 2018-07-04 15:40:12 · 17564 阅读 · 1 评论 -
DBUS及常用接口介绍
1. 概述1.1 DBUS概述 DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。 DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的...转载 2018-07-04 14:07:05 · 2795 阅读 · 0 评论 -
Linux开机启动过程分析
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算...转载 2018-07-04 14:03:43 · 301 阅读 · 0 评论 -
Linux守护进程HALD
hal(hardware abstract lever)硬件抽象。 但是Linux的hal运行于用户空间作为一个daemon进程。监听一个socket接口。等待udev发来的通知。 udev为设备加载驱动,设备可用后,往往有udev的规则,让udev通知hald表示设备变动了。 hal作为一个硬件的数据库,记录了硬件的属性,当前硬件有哪些,他们的属性是什么,等等信息。 因而,用户态程序可以查询ha...转载 2018-06-29 18:06:10 · 2409 阅读 · 0 评论 -
用Qemu运行/调试arm linux
用Qemu运行/调试arm linux用Qemu运行/调试arm linux,这事情干过好几次了,久了就忘记了,每次都要重新去查资料,浪费不少时间。这次把整个过程弄成个脚本,放到github上,需要是拿下来运行一下即可,方便自己也方便有需要的朋友。这里解释一下脚本的内容(运行系统Ubuntu 16.04 LTS):1. 设置一些环境变量,可以根据自己需要修改。export ARCH=armexp...转载 2018-06-29 17:46:40 · 499 阅读 · 0 评论 -
C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void t...转载 2018-06-15 17:53:50 · 173 阅读 · 0 评论 -
C语言堆栈入门——堆和栈的区别
数据结构的栈和堆首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。堆和栈都是一种数据项按序排列的数据结构。栈就像装数据的桶或箱子我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。堆像一棵倒过来的...转载 2018-06-15 17:34:49 · 313 阅读 · 0 评论 -
linux下利用coredump技术追查进程崩溃原因
最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了coredump技术以找到崩溃原因,即确定进程退出时正在执行的函数是哪个,其状态如何。 如果系统开启了coredump,准确的说如果当前的shell环境开启了coredump,当前shell环境下的程序崩溃退出时,会把当时进程的栈的内存状态写入core文件。使用gdb可以查看这个core文件中保存的栈的状态,gdb a.o...转载 2018-06-15 17:19:49 · 775 阅读 · 0 评论 -
linux使用core文件调试程序崩溃
1、简介当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core文件记录crash时刻系统信息,包括内存和寄存器信息,用以程序员日后debug时可以使用。这些错误包括段错误、非法指令、总线错误或用户自己生成的退出信息等等。2、开启/关闭core文件ulimit -c 可以查看是否打开core文件,输出信息为core文件大小最大值,0表示关闭core文件;ulimit -c 0 可手...转载 2018-06-15 15:33:46 · 767 阅读 · 0 评论 -
Linux 获取并分析程序崩溃时的调用堆栈
下面是一个小例子,说明了程序出现段错误时,如何打印程序的堆栈信息。[cpp] view plain copy#include<stdio.h> #include<string.h> #include<stdlib.h> #include <signal.h> static void WidebrightSegvHandler(int si...转载 2018-06-15 15:20:21 · 1390 阅读 · 0 评论 -
自旋锁(spinlock) 解释得经典,透彻
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。 信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(_trylock的变种能够...转载 2018-06-12 16:04:45 · 2025 阅读 · 0 评论 -
自旋锁与互斥锁的对比、手工实现自旋锁
本文之前,我只是对自旋锁有所了解,知道它是做什么的,但是没有去测试实现过,甚至以为自旋锁只有kernel用这个,今天才发现POSIX有提供自旋锁的接口。下面我会分析一下自旋锁,并代码实现自旋锁和互斥锁的性能对比,以及利用C++11实现自旋锁。一:自旋锁(spin lock) 自旋锁是一种用于保护多线程共享资源的锁,与一般互斥锁(mutex)不同之处在于当自旋锁尝试获取锁时以忙等待(busy ...转载 2018-06-12 15:58:33 · 498 阅读 · 0 评论 -
3分钟了解伺服驱动器的工作原理
伺服驱动器简单地说:是用来控制伺服电机的一种控制器,其作用类似于变频器作用于普通交流马达,属于伺服系统的一部分,主要应用于高精度的定位系统。一般是通过位置、速度和力矩三种方式对伺服马达进行控制,实现高精度的传动系统定位,目前是传动技术的高端产品。下面本文就为大家介绍一下伺服驱动器的工作原理。 伺服驱动器均采用数字信号处理器(DSP)作为控制核心,可以实现比较复杂的控制算法,实现数字化、网络化和智...转载 2018-07-04 17:58:20 · 38188 阅读 · 0 评论 -
linux系统编程之进程(-):守护进程详解及创建,daemon()使用
一,守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器m...转载 2018-08-30 16:30:07 · 176 阅读 · 0 评论 -
自增运算符 和 a+++++b 、 a++ + ++的理解
a++: 先将a的值代入表达式,在表达式运算完毕后,再将a进行++处理++a: 先将a进行++处理,再将a的值代入表达式(注意咬字)a+++++b在编译时会报错,(a++)+(++b)和a++ + ++b不会报错“a+++++b”这一段根本就无法解析,编译系统从左至右扫描整条语句,先遇到a++,判断出来是一个a的后缀自加运算,然后接着扫描,遇到一个+,+是一个二目运算符,它的左边已...转载 2018-09-09 08:49:20 · 1502 阅读 · 0 评论 -
BitBake 使用笔记
1. 概述欢迎使用Bitbake用户手册。本手册提供Bitbake工具的相关信息。这些信息尽可能独立于使用Bitbake的系统,如OpenEmbedded和Yocto Project。在某些情况下,本手册将使用构建系统中的场景或示例来帮助理解。对于这些情况,手册清楚地说明的使用上下文。1.1.介绍从根本上说,Bitbake是一个通用任务执行引擎,允许shell和python任务在复杂的...转载 2019-01-09 16:07:50 · 2433 阅读 · 1 评论 -
bitbake 使用指南
如果说 Linux 系统镜像是你想吃的一桌饭菜,那么 Yocto 就是一家餐厅,Poky 就是厨房,BitBake 就是厨师。那么,如果我们想定制自己的 Linux,我们应该学会怎么用好 BitBake,或者说把我们的意图告诉 BitBake。总而言之,如果你想定制 Linux 系统的愿望跟你想吃一桌好吃的饭菜一样强烈的话(或者更强烈),你应该好好了解了解 BitBake。1. 认识 BitB...转载 2019-01-09 14:55:57 · 1941 阅读 · 0 评论 -
bitbake的原理介绍, 使用方法, 编译脚本的编写方法
oe bitbake一种软件组建自动化工具程式,像所有的build工具一样(比如make,ant,jam)控制如何去构建系统并且解决构建依赖。但是又区别于功能单一的工程管理工具(比如make),bitbake不是基于把依赖写死了的makefile,而是收集和管理大量之间没有依赖关系的描述文件(这里我们称为包的配方),然后自动按照正确的顺序进行构建。oe代表OpenEmbedded,而openemb...转载 2019-01-09 11:24:03 · 1619 阅读 · 0 评论 -
bitbake 常用问题笔记
原文 http://blog.csdn.net/xiaofeng_yan/article/details/67577251 当你已经编完一个系统比如sato映像,在编一个meta-toolchain的映像如何重用已经下载的源码。 修改build/local.conf变量 DL_DIR=2 如果你用ctl+c中断了编译过程,在重新编译的时候poky可能出现了一些问题。你个以这样做来避免...转载 2019-01-14 13:26:49 · 4523 阅读 · 0 评论 -
yocto相关class总结
1.allarch.bbclass该class用在架构无关的镜像上。通常的recipes只要继承base和package类就可以完成基本的工作,继承allarch类的recipe主要是只包含配置文件、媒体文件以及脚本文件等。2.archiver.bbclass该class支持以源代码的方式发布。3.autotools*.bbclass该class簇支持使用autotool工具进行编译的软件包。 ...转载 2019-01-11 08:17:53 · 2242 阅读 · 0 评论 -
imx6设备树pinctrl解析
请参考:https://blog.csdn.net/michaelcao1980/article/details/50730421转载 2018-12-10 15:59:23 · 386 阅读 · 0 评论 -
video4linux(v4l)使用摄像头的实例基础教程与体会
由于毕业设计的关系,本人要做一下在 linux 系统中视频的相关工作比如采集和传输。由于本人是菜鸟一个,所以是需要上网搜一搜看大家都是如何做的,当然开始都是理不出一个头绪,但是很多文章都提到了 video4linux(v4l) ,所以我觉得工作的展开可以先从这里开始,。看了网上的一些文章,其中比较重要的也是比较知名的吧,有戴小鼠写的《基于 Video4Linux 的 USB 摄像头图像采集实现》,...转载 2018-12-20 18:04:14 · 534 阅读 · 0 评论 -
Linux下Shell的for循环语句
第一类:数字性循环-----------------------------for1-1.sh#!/bin/bash for((i=1;i<=10;i++)); do echo $(expr $i \* 3 + 1); done -----------------------------for1-2.sh#!/bin/bash ...转载 2018-12-20 15:27:17 · 293 阅读 · 0 评论 -
Yocto构建文件系统
Yocto构建文件系统一、准备工作准备操作系统 建议使用Ubuntu14的虚拟机或PC由于后面的编译过程将占用大量资源,虚拟机建议16g内存(至少8g)、4线程### 安装软件~~~java$ sudo apt-get install build-essential git-core libncurses5-dev \flex bison texinfo zip u...转载 2018-10-10 13:57:19 · 3671 阅读 · 0 评论 -
i.mx6ul linux驱动开发—基于Device tree机制的驱动编写
前言 Device Tree是一种用来描述硬件的数据结构,类似板级描述语言,起源于OpenFirmware(OF)。在目前广泛使用的Linux kernel 2.6.x版本中,对于不同平台、不同硬件,往往存在着大量的不同的、移植性差的板级描述代码,以达到对这些不同平台和不同硬件特殊适配的需求。但是过多的平台、过的的不同硬件导致了这样的代码越来越多,最终引发了Linux创始人Linus的不满,以及...转载 2018-10-11 10:15:17 · 1077 阅读 · 0 评论 -
C语言运算符优先级列表(超详细)
每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家。初级运算符( )、[ ]、->、. 高于 单目运算符 高于 算数运算符(先乘除后加减) 高于 关系运算符 高于 逻辑运算符(不包括!) 高于 条件运算符 高于 赋值运算符 高于 逗号运算符。位运算符的优先级比较分散。除了赋值运算符、条件运算...转载 2018-09-09 11:16:34 · 183767 阅读 · 17 评论 -
(*(void (*) ()) 0) ();
在第二章语法陷进看到一个有趣的例子:(*(void (*) ()) 0) ();第一眼看到完全懵了,后来经过讲解发现很好理解!(果然是封神的书!)(*(void (*) ()) 0) ();其实可以拆分成三个部分:1.void(*) (),其实这样看起来还不是很明显,在*之后加上一个变量p,void (*p) ();那很明显,这就是一个函数指针*p的声明,且返回值为void类型,...转载 2018-09-09 11:11:11 · 1992 阅读 · 0 评论 -
Makefile 模板
Makefile 自动编译目录下的源文件,支持添加头文件子目录和源文件子目录################################################################################# A smart Makefile template for GNU/LINUX programming## Author: wan.xp ( googoltec...原创 2018-06-12 15:52:10 · 213 阅读 · 0 评论 -
进程间通信(IPC)介绍
进程间通信(IPC)介绍进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老...转载 2018-06-12 15:36:51 · 181 阅读 · 0 评论 -
Xenomai编程笔记
Xenomai 是一种采用双内核机制的Linux 内核的强实时扩展。由于Linux 内核本身的实现方式和复杂度,使得Linux 本身不能使用于强实时应用。在双内核技术下,存在一个支持强实时的微内核,它与Linux 内核共同运行于硬件平台上,实时内核的优先级高于Linux 内核,它负责处理系统的实时任务,而Linux 则负责处理非实时任务,只有当实时内核不再有实时任务需要处理的时候,Linux 内...转载 2018-05-17 11:13:24 · 7739 阅读 · 1 评论 -
RTAI API---Timer functions
Timer functions:rt_set_oneshot_modert_set_periodic_modestart_rt_timer stop_rt_timercount2nano nano2countrt_get_time rt_get_time_ns rt_get_cpu_time_ns next_period**********原创 2017-10-19 11:39:16 · 996 阅读 · 1 评论 -
RTAI api ---Semaphore function
rt_sem_init rt_sem_delete rt_sem_signal rt_sem_wait rt_sem_wait_if rt_sem_wait_until rt_sem_wait_timed********************************************************************************原创 2017-10-19 11:51:15 · 315 阅读 · 0 评论 -
RTAI API---Mailbox functions
rt_mbx_init rt_mbx_delete rt_mbx_send rt_mbx_receivert_mbx_send_wp rt_mbx_receive_wprt_mbx_send_if rt_mbx_receive_ifrt_mbx_send_until rt_mbx_receive_untilrt_mbx_send_timed rt_mbx原创 2017-10-19 12:44:26 · 752 阅读 · 0 评论 -
RTAI API-----Message handling functions
rt_send rt_receivert_send_if rt_receive_ifrt_send_until rt_receive_untilrt_send_timed rt_receive_timed**********************************************************************************原创 2017-10-19 13:50:46 · 230 阅读 · 0 评论 -
RTAI API --- RPC functions
rt_rpc rt_rpc_if rt_rpc_until rt_rpc_timed rt_isrpc rt_return*******************************************************************************************************************************原创 2017-10-19 13:59:17 · 293 阅读 · 0 评论 -
RTAI API---task function
rt_task_init rt_task_init_cpuid rt_task_delete rt_task_make_periodic rt_task_make_periodic_relative_ns rt_task_wait_period rt_task_yield rt_task_suspend rt_task_resume rt_busy_sleep原创 2017-10-19 11:21:30 · 963 阅读 · 0 评论 -
iptables简介
iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如转载 2017-10-10 12:08:38 · 215 阅读 · 0 评论 -
linux 串口操作详解
区分真实串口与伪串口 1、使用ls -l ttyS* 命令显示本机所有串口2、使用 cat /proc/tty/driver/serial 显示如下: seri转载 2017-10-09 17:18:55 · 2017 阅读 · 0 评论 -
RTAI 分析
实时内核, rtai转载 2017-08-30 14:05:42 · 897 阅读 · 0 评论