自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (15)
  • 收藏
  • 关注

转载 Linux守护进程HALD

hal(hardware abstract lever)硬件抽象。 但是Linux的hal运行于用户空间作为一个daemon进程。监听一个socket接口。等待udev发来的通知。 udev为设备加载驱动,设备可用后,往往有udev的规则,让udev通知hald表示设备变动了。 hal作为一个硬件的数据库,记录了硬件的属性,当前硬件有哪些,他们的属性是什么,等等信息。 因而,用户态程序可以查询ha...

2018-06-29 18:06:10 2407

转载 用Qemu运行/调试arm linux

用Qemu运行/调试arm linux用Qemu运行/调试arm linux,这事情干过好几次了,久了就忘记了,每次都要重新去查资料,浪费不少时间。这次把整个过程弄成个脚本,放到github上,需要是拿下来运行一下即可,方便自己也方便有需要的朋友。这里解释一下脚本的内容(运行系统Ubuntu 16.04 LTS):1. 设置一些环境变量,可以根据自己需要修改。export ARCH=armexp...

2018-06-29 17:46:40 497

转载 C中volatile关键字

volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void t...

2018-06-15 17:53:50 172

转载 C语言堆栈入门——堆和栈的区别

数据结构的栈和堆首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。堆和栈都是一种数据项按序排列的数据结构。栈就像装数据的桶或箱子我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。堆像一棵倒过来的...

2018-06-15 17:34:49 313

转载 linux下利用coredump技术追查进程崩溃原因

最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了coredump技术以找到崩溃原因,即确定进程退出时正在执行的函数是哪个,其状态如何。       如果系统开启了coredump,准确的说如果当前的shell环境开启了coredump,当前shell环境下的程序崩溃退出时,会把当时进程的栈的内存状态写入core文件。使用gdb可以查看这个core文件中保存的栈的状态,gdb a.o...

2018-06-15 17:19:49 774

转载 linux使用core文件调试程序崩溃

1、简介当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core文件记录crash时刻系统信息,包括内存和寄存器信息,用以程序员日后debug时可以使用。这些错误包括段错误、非法指令、总线错误或用户自己生成的退出信息等等。2、开启/关闭core文件ulimit -c 可以查看是否打开core文件,输出信息为core文件大小最大值,0表示关闭core文件;ulimit -c 0 可手...

2018-06-15 15:33:46 766

转载 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 1387

转载 自旋锁(spinlock) 解释得经典,透彻

自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。  由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。  信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(_trylock的变种能够...

2018-06-12 16:04:45 2023

转载 自旋锁与互斥锁的对比、手工实现自旋锁

本文之前,我只是对自旋锁有所了解,知道它是做什么的,但是没有去测试实现过,甚至以为自旋锁只有kernel用这个,今天才发现POSIX有提供自旋锁的接口。下面我会分析一下自旋锁,并代码实现自旋锁和互斥锁的性能对比,以及利用C++11实现自旋锁。一:自旋锁(spin lock)    自旋锁是一种用于保护多线程共享资源的锁,与一般互斥锁(mutex)不同之处在于当自旋锁尝试获取锁时以忙等待(busy ...

2018-06-12 15:58:33 497

原创 Makefile 模板

Makefile 自动编译目录下的源文件,支持添加头文件子目录和源文件子目录################################################################################# A smart Makefile template for GNU/LINUX programming## Author: wan.xp ( googoltec...

2018-06-12 15:52:10 213

转载 进程间通信(IPC)介绍

进程间通信(IPC)介绍进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老...

2018-06-12 15:36:51 180

转载 CANopen学习笔记

CANopen学习笔记RTR-远程传输请求位RTR=0 数据帧RTR=1 远程帧IDE-标识符扩展位IDE=0:11bits 标准CANIDE=1:29bits 扩展CANSDO用来读写其他CANopen设备的对象字典PDO用来快速传输实时数据CANopen协议中定义了三种不同的通信关系:主机-从机模型(master-slave),仅用于网络管理(NMT),主机-从机模型不仅可以由确认的服务(握手...

2018-05-22 19:24:52 1228

转载 Canopen通信--PDO

 过程数据对象(Process Data Object,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权。PDO 传输的数据必须少于或等于 8 个字节,PDO 的 CAN 报文数据域中每个字节都用作数据传输,因此,在应用层上不包含传输控制信息,报文利用率极高。       PDO 通信是基于生产者/消费者的通讯模式[13],如图 3-3 所示...

2018-05-21 10:36:06 3220

原创 EtherCAT 应用层协议

不对EtherCAT进行介绍,只谈谈对EtherCAT应用层协议的简单理解1、COE (CANopen over EtherCAT)  一种基于且完全遵循CANopen协议的通信协议  用途:      1、用于驱动PDO对象,实现PDO对象间数据通信       2、用于驱动SDO对象,实现SDO对象间的数据传输  分类:     1、周期性过程数据通信 – 驱动PDO    ...

2018-05-18 15:28:58 3391 1

转载 Xenomai编程笔记

 Xenomai 是一种采用双内核机制的Linux 内核的强实时扩展。由于Linux 内核本身的实现方式和复杂度,使得Linux 本身不能使用于强实时应用。在双内核技术下,存在一个支持强实时的微内核,它与Linux 内核共同运行于硬件平台上,实时内核的优先级高于Linux 内核,它负责处理系统的实时任务,而Linux 则负责处理非实时任务,只有当实时内核不再有实时任务需要处理的时候,Linux 内...

2018-05-17 11:13:24 7733 1

转载 实时系统性能测试指标及方法

一、Rhealstone Rhealstone是系统实时性的测量基准之一,Rhealstone方法对ERTOS中六个关键操作的时间量进行测量,并将它们的加权和称为Rhealstone数。这六个时间量如下:2.抢占时间(preemption time),即系统将控制从低优先级的任务转移到高优先级任务所花费的时间。为了对任务进行抢占,系统必须首先识别引起高优先级任务就绪的事件,比较两个任务的优先...

2018-05-17 11:09:32 6057

原创 RTAI的用户空间编程

任务创建实时任务的创建主要完成对代表实时任务实体的任务结构变量的初始化操作,包括分配任务栈、初始化任务栈、初始化链表指针等。 1. 函数RT_TASK* rt_task_init(unsigned long name, int priority, int stack_size, int max_msg_size)RT_TASK*rt_task_init_schmod(unsigned lo...

2018-05-17 10:55:26 1284 2

转载 linux性能异常定位之进程级别

本文主要涉及的linux的常见的性能维度:cpu,内存,io,网络【涉及工具】top:综合,偏cpu,内存dstat:综合、磁盘iostat:磁盘io,全局iotop:磁盘io,精确到进程,(类似工具还有pidstat)iftop:网络、实时刷新(类似工具还有nload,ifstat)nethogs:进程级别的流量ss:网络、快、消耗资源低(替代netstat)

2018-01-29 19:28:28 586

转载 Linux 系统内核的调试

教您如何搭建Linux内核调试环境/*----------------------------------------------------------------------------------------------------------------------------*/一 安装linux虚拟机1 在vmware上安装新的linux虚拟机.创建一个新的虚拟机,

2018-01-25 19:24:27 983

转载 C和汇编混合编程

在有些情况下,我们不得不需要C和汇编同时上阵,各显神通。BootLoader和Kernel就是比较典型的例子,本文将就C语言和汇编语言混合编程做些简略说明。需要说明的是,这里所说的混合编程,并不是C语言中嵌入汇编,如需要相关资料,请自行查找。知识回顾:GCC编译流程是,先将C语言翻译成汇编语言(*.s),再编译成目标文件(*.o),最后执行连接,将目标文件连接成可执行文件。C语言编程中,经

2017-12-29 16:29:48 1181

转载 ACPI 简析

什么是ACPI?ACPI的全称是Advanced Configuration and PowerInterface。它是由早期的APM发展和改进起来的,其主要作用是为操作系统提供一套标准的电源管理接口。ACPI关键概念:什么Gx State, Cx State, Sx State:Power Management State(电源管理状态)为

2017-11-09 17:31:08 3177

原创 X86 SMI 笔记

SCI VS SMISCI:System Control Interrupt, 系统控制中断。专门用于ACPI电源管理的一个IRQ,需要OS支持。SMI:System Management Interrupt, 系统管理中断,使用系统进入SMM的特殊中断。 两者区别:SMI是CPU级别的,ACPI和非ACPI模式下都可以使用,而SCI是OS级别的,只有在ACPI support

2017-11-09 14:18:37 1499

转载 如何将boot loader及wince内核镜像固化到flash芯片中

Boot Loader是定制Windows CE操作系统过程中一个重要的开发环节。Boot Loader的作用正如名字中的两个单词:Boot,既引导系统,如果基于CE的产品采用BIOS实现硬件初始化和配置,那么Boot Loader只需引导软件系统。如果没有采用BIOS,那么Boot Loader的作用还包括实现BIOS的基本功能;Loader,既加载操作系统,在整个系统正常启动后Boot Loa

2017-11-08 17:23:40 556

转载 一种基于BIOS的WINCE启动方法

Windows CE.NET是微软公司向嵌入式领域推出的一款操作系统。它最大程度继承了桌面版Windows操作系统的丰富功能,同时又赋予了许多新特性,以适应嵌入式领域的实际要求。无论是商业应用还是多媒体消费需求,都能被采用CE操作系统的设备轻松满足。最新的.NET版本较之3.0版本,在实时性和稳定性上有大幅度提高,并广泛地被平板电脑、数码相机、彩屏手机、PDA等多种高性能产品所采用,同时工业控制中

2017-11-08 14:14:20 1727

转载 GRUB2配置文件"grub.cfg"详解

GRUB2模块对于GRUB-2.0.2版本来说,官方提供的模块一共有200多个,这些模块大致可以分为以下几类(模块间的依赖关系位于"moddep.lst"文件中):命令模块[command.lst]提供了各种不同的功能,类似标准Unix命令,一共将近100个。例如:cat cpuid echo halt lspci chainloader initrd linux password ...

2017-11-07 14:00:01 11960

转载 Grub 命令行启动Windows全过程

这里所说的Grub和上文中说的Grub for DOS是不一样的,上文的Grub跟磁盘的第一扇区没有关系,即是说,如果你把上面C盘里grub目录删除,不会影响你的系统启动。我下面讲的Grub却会把一部分代码写到磁盘的第一扇区上,即会写到主引导纪录MBR中。1 Grub 命令行代码分两部分,一部分写入第一扇区的主引导纪录MBR中,另一部分驻留在磁盘的某一固定位置。2 Grub 命令行工作过程

2017-11-07 13:53:31 9464 1

转载 Xneomai 简介

Real Time 的定義一個real time的系統需要保證其工作在給定的時間限制內完成(稱為deadline)。 系統不需要以最快的速度(real fast)完成任務,但需要時常或每次皆在deadline之內完成。在這個前提下,real time系統的任務完成時間是可確定的(deterministic)。 而根據系統的限制不同,real time可分為:Soft Rea

2017-11-02 10:57:06 2791

转载 多文件工程的编译-Makefile的简便写法

通常我们在命令行使用GCC对程序进行编译,如果对于单个或者几个文件时比较方便的,但当工程中的文件逐渐增多甚至变得十分庞大的时候,使用GCC显然力不从心,不好管理。因此我们有必要编写一个Makefile来对工程进行管理。就以下工程目录进行学习。生成可执行程序cacu,建立如下规则的Makefile文件。#生成test,":"左边为目标,右边为依赖 。gcc后是命令cacu:a

2017-11-01 11:31:16 303

转载 Makefile模板解析

#一个实用的makefile,能自动编译当前目录下所有.c/.cpp源文件,支持二者混合编译  #并且当某个.c/.cpp、.h或依赖的源文件被修改后,仅重编涉及到的源文件,未涉及的不编译  #author:wanxp 2017-11-01   #----------------------------------------------------------  #编译工具用g+

2017-10-31 11:20:18 308

转载 双网卡的回环测试

最近碰到这样一个问题,一台linux机器上装有两个网卡,分别为eth0和eth1,将这两个网卡用网线直接连接起来,要进行回环测试,也就是从eth1发数据从eth0收到,从eth0发数据从eth1收到。本来,通过原始套接字,直接绑定到指定的网卡上进行接收和发送数据,是很容易完成任务。但要求是要用基于IP的协议,TCP或UDP完成测试。Linux的内核对从一个网络地址发往另一个网络地址的数据包

2017-10-24 16:53:44 2155

转载 iptables 详解(NAT)

前提基础:当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。iptables实现防火墙功能的原理是:在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,称为钩子函数,iptables这款用户空间的

2017-10-24 16:36:19 5998

转载 Linux内核的整体架构简介

1. 前言本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。注:本文和其它的“Linux内核分析”文章都基于如下约定:  a) 内核版本为Linux 3.10.29(该版本是一个long term的版本,会被Linux社区持续维

2017-10-23 17:44:42 71691 1

转载 Linux内核抢占机制(preempt)

早期的Linux核心是不可抢占的。它的调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度。非自愿的强制性调度只能发生在 每次从系统调用返回的前夕以及每次从中断或异常处理返回到用户空间的前夕。但是,如果在系统空间发生中断或异常是不会引起调度的。这种方式使内核实现得以 简化。但常存在下面两个问题:如果这样的中断发生在内核中,本次中断返回是不会引起调度的,而要到最初使CPU从用户

2017-10-19 17:57:39 8590 1

原创 RTAI API ---RTAI service functions

rt_global_cli rt_global_stirt_global_save_flags rt_global_restore_flagsrt_global_save_flags_and_cli send_ipi_shorthandsend_ipi_logicalrt_assign_irq_to_cpu rt_reset_irq_to_sym_modert_

2017-10-19 14:10:13 473

原创 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

原创 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 229

原创 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 751

原创 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 314

原创 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 994 1

原创 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 958

基于FANUC数控系统的数据采集系统的设计与实现

基于FANUC数控系统的数据采集系统的设计与实现

2018-07-20

Digital_Video_and_Audio_Broadcasting_Technology

讲述数字电视Video 和Audio相对完整的文档资料

2013-05-06

GYT 201-2004 数字电视系统中的数据广播规范

全国广播电视标准化技术委员会 制定的数字电视系统中的数据广播规范

2013-04-25

bootstrap proces

The bootstrap procedure of u-boot 介绍uboot 启动顺序的文档

2012-03-23

内核vmlinux配置分析

linux kernel vmlinux 配置分析,基于2.6.18内核

2012-03-23

SMP8634 Security zboot2

Introduction of Sigma SMP86xx security zboot

2012-03-17

makefile详解介绍

Linux/unix makefile 的详细介绍,教你如何编写Makefile文件

2012-03-03

数据库课程设计 (用sql2000和vb实现的)

用vb和sql2000实现的高校工资管理系统

2009-11-13

操作系统课程设计(命令解析程序)

这是我们做的课程设计,里面有源码和课程设计报告, 源码有详细的注释。

2009-03-11

win32.api函数库

里面含有windows编程需要的所有函数库<br>对于学者有很大的帮助

2008-08-05

vb基本操作例子

对初学vb的学者来说,是一个很好的帮助,<br>

2008-04-22

栈操作程序

操作简单,易懂,不妨下载试一试

2008-03-26

c语言通讯录

很好的了,下载试一试

2008-03-03

c语言跟随系统时间

vc++环境下跟随系统时间

2008-03-03

空空如也

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

TA关注的人

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