自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

脱水的a鱼

若是能行,总要尽力与众人和睦

  • 博客(83)
  • 资源 (3)
  • 收藏
  • 关注

翻译 Writing a Resource Manager --Chapter 5:Handling Read and Write Messages

Chapter 5:Handling Read and Write MessagesHandling the _IO_READ messageio_read处理程序负责在收到_IO_READ消息后将数据字节返回给客户端。发送此消息的函数示例包括read(),readdir(),fread()和fgetc()。让我们首先看一下消息本身的格式: struct _io_read {...

2018-08-10 15:23:34 589 1

翻译 Writing a Resource Manager -- Chapter 4 :POSIX-Layer Data Structures

Chapter 4 :POSIX-Layer Data Structures资源管理器库定义了(在<sys / iofunc.h>中)与POSIX层支持例程相关的几个关键结构:iofunc_ocb_t (Open Control Block) structure包含每个打开的数据,例如当前位置到文件中(lseek()偏移量)。iofunc_attr_t (attribute...

2018-08-10 15:19:43 311

翻译 Writing a Resource Manager -- Chapter 3:Fleshing Out the Skeleton

Chapter 3:Fleshing Out the Skeleton现在是时候开始为资源管理器的基本骨骼添加一些内容了。我们将查看您可能必须处理的消息类型,如何设置资源管理器的属性,如何添加功能以及您应该考虑的一些安全问题。Message types正如我们在Bones of a Resource Manager中看到的那样,您的资源管理器可能需要处理这些类型的消息: 连接消息...

2018-08-09 13:46:45 441

翻译 Writing a Resource Manager -- Chapter 2:The Bones of a Resource Manager

Chapter 2:The Bones of a Resource Manager让我们从资源管理器的整体结构开始。首先,我们将了解客户端和服务器端的内幕情况。之后,我们将进入资源管理器中的层,然后查看一些示例。Under the covers尽管您将使用隐藏了许多详细信息的资源管理器API,但了解幕后发生的事情仍然很重要。例如,您的资源管理器是包含MsgReceive()循环的服务器...

2018-08-09 13:40:58 359

翻译 Writing a Resource Manager -- Chapter 1:What Is a Resource Manager?

Chapter 1:What Is a Resource Manager?一般而言,资源管理器是向文件系统命名空间中注册名称的过程。其他进程使用该路径与资源管理器进行通信。为了使QNX Neutrino RTOS具有很大的灵活性,最大限度地减少最终系统运行的内存要求,并应对自定义嵌入式系统中可能存在的各种设备,操作系统允许用户编写的流程充当可以动态启动和停止的资源管理器。资源管理器通常...

2018-08-09 13:35:55 509 1

原创 Profile工具-gperftools(一):CPU feature

简介gperftools 原名 Google Performance Tools,是一套可以做 profile 的工具,由 google 提供。 目前看来在 Linux 上特别的好使,Windows 基本不能用(官网说 Windows 正在开发,不知道会不会有下文) CPU profile 只是这个工具其中一个 feature,我们就用这个 feature。 其他 feature 还有 ...

2018-08-09 11:48:51 1536

翻译 Getting_Started_with_QNX_Neutrino -- Chapter 2:Message Passing

在本章中,我们将介绍QNX Neutrino最具特色的功能,即Message Passing。Message Passing是操作系统微内核架构的核心,为操作系统提供了模块化。A small microkernel and message passingQNX Neutrino的主要优势之一是它具有可扩展性。通过“可扩展性”,我的意思是它可以定制在具有严格内存限制的小型嵌入式盒子上工作,也...

2018-07-23 21:23:11 906 2

翻译 QNX system architecture -- Chapter 5 Multicore Processing

QNX Neutrino RTOS可以在单核或多核系统上运行。 多处理系统可以采用以下形式:Discrete or traditional具有单独物理处理器的系统通过板级总线连接在多处理模式下。Multicore一个芯片,其中一个物理处理器具有多个CPU,通过芯片级总线互连。多核处理器通过并发性提供更高的计算能力,提供更高的系统密度,并以比单处理器芯片更低的时钟速度运行。多核处...

2018-07-17 22:12:59 773

翻译 QNX system architecture -- Chapter 4:The Instrumented Microkernel

微内核(procnto-instr)的检测版本配备了复杂的跟踪和分析机制,可让您实时监控系统的执行情况。procnto-instr模块适用于单CPU和SMP系统。procnto-instr 模块使用非常少的开销并且提供了非常好的性能 - 它通常比非器械内核(当它不记录时)快98%。仪表内核中额外的代码量(x86系统上大约30 KB)对于这个有用工具的附加功能和灵活性来说是一个相对较小的代价。根...

2018-07-17 22:06:26 663

翻译 QNX system architecture -- Chapter 3:Interprocess Communication (IPC)

从微内核构建全面的POSIX操作系统,进程间通信起到至关重要的作用。当各种提供服务的进程加到微内核中,IPC做为粘合层,把这些部件连结成一个紧密的整体。尽管消息传递是QNX Neutrino RTOS IPC的主要形式,还有其他集中形式的IPC,除非提到,这些其他形式的IPC都是构建在本地消息传递基础之上。策略是在内核中创建一个简单的,鲁棒,易扩展的的IPC服务。更多复杂的IPC服务可以在此基...

2018-07-17 21:42:48 814

翻译 QNX system architecture -- Chapter 2:The QNX Neutrino Microkernel

microkernel实现了嵌入式实时系统中使用的核心POSIX功能,以及基本的QNX Neutrino消息传递服务。有些POSIX功能(如file, device I/O)不是在procnto microkernel中实现的,这些功能是通过可选进程和共享库实现的。 想查看你使用系统的kernel版本号,可以使用uname -a命令。 从QNX软件系统连续微内核已经看到了...

2018-07-17 21:30:50 1072

翻译 QNX system architecture--Chapter 1:The Philosophy of the QNX Neutrino RTOS

开发QNX的主要目的是提供一个支持开放系统POSIX API,并且系统稳定,易于扩展为各种应用系统:小到资源有限的嵌入式系统,大到高端的分布式计算环境。QNX支持多个处理器家族,包括X86 ARM和powerPC。对于实时性要求高的应用系统,架构健壮也是基本要求,OS可以灵活的完全控制MMU硬件。当然,简单的设定这些目标并不能保证预期的结果。我们请你通读System Architectur...

2018-07-17 21:17:06 537

原创 内存文件系统之--ramfs

本文档作在XCU平台上实现内存文件系统启动的记录文件,具体记录如下:平台:ubuntu 14.04 硬件:XCU A样编译器:gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu编译器安装位置:/opt/ gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu文件系统:busybox-1.25.1

2018-01-21 13:40:11 5062

转载 Linux系统SPI驱动学习笔记(二)

五. SPI驱动的软件架构在内核的SPI驱动的软件架构中,进行了合理的分层和抽象,如下图所示:SPI控制器驱动程序SPI控制器不用关心设备的具体功能,它只负责把上层协议驱动准备好的数据按SPI总线的时序要求发送给SPI设备,同时把从设备收到的数据返回给上层的协议驱动,因此,内核把SPI控制器的驱动程序独立出来。SPI控制器驱动负责

2017-06-20 17:53:36 386

转载 Linux系统SPI驱动学习笔记(一)

SPI是"Serial Peripheral Interface" 的缩写,是一种四线制的同步串行通信接口,用来连接微控制器、传感器、存储设备,SPI设备分为主设备和从设备两种,用于通信和控制的四根线分别是:CS    片选信号SCK  时钟信号MISO  主设备的数据输入、从设备的数据输出脚MOSI  主设备的数据输出、从设备的数据输入脚因为在大多数情况下,CPU或SOC一侧

2017-06-20 17:50:18 1817 1

转载 CAN与CANOpen(四)

CAN与CANOpen(一)基本概念 CAN与CANOpen(二)报文格式 CAN与CANOpen(三)错误处理CAN与CANOpen(四)CANOpen对象字典 CAN与CANOpen(五)PDO和SDOCAN与CANOpen(六)网络管理和CAN FD4.CANOpen图21 CANOpen所处的位置前面讲解的CAN的内容主要

2017-04-26 14:20:14 783

转载 CAN与CANOpen(二)

CAN与CANOpen(一)基本概念 CAN与CANOpen(二)报文格式 CAN与CANOpen(三)错误处理CAN与CANOpen(四)CANOpen对象字典 CAN与CANOpen(五)PDO和SDOCAN与CANOpen(六)网络管理和CAN FD3.3帧CAN协议的报文传输主要由下面的4种帧来实现:数据帧:从发射端携带数据到接收端。

2017-04-26 13:45:55 814

转载 CAN与CANOpen(一)

CAN与CANOpen(一)基本概念 CAN与CANOpen(二)报文格式 CAN与CANOpen(三)错误处理CAN与CANOpen(四)CANOpen对象字典 CAN与CANOpen(五)PDO和SDOCAN与CANOpen(六)网络管理和CAN FDCAN(Controller Area Network, 控制器局域网络)是由博世开发的一种现场总线,首先应

2017-04-26 13:17:50 879

原创 (一)uart通信:基于51实现

51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。当串行发送完毕后,将在标志位 TI 置 1,同样,当收到了数据后,也会在 RI 置 1。无论 RI 或 TI 出现了 1,只要串口中断处于开放状态,单片机都会进入串口中断处理程序。在中断程序中,要区分出来究竟是发送引起的中断,还是接收引起的中断,然后分别进行处理。看到过一些书籍和文章,在串口收、发数据的处理方法上,

2017-04-25 10:50:30 3339 1

转载 CAN总线基础知识(三)

1.CAN协议1.1 帧类型通讯时使用下面5个类型的帧:    数据帧    遥控帧    错误帧    过载帧    帧间空隙    在所有这些帧中,数据帧和遥控帧由用户设置,而其它帧则由CAN硬件设置。    数据和遥控帧有两种格式:标准和扩展格式。标准格式有11bit的ID,而扩展格式则是29bit的ID。    每个帧的用处见表6,每个帧的结构见图1

2017-04-24 14:59:58 1091

转载 CAN总线基础知识(二)

CAN协议和标准规范1 由ISO标准化的CAN协议    CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么不同,但是在物理层有些区别。    (1)   关于ISO11898:这个标准用于高速CAN通讯。开始的时候,数据链路层和物理层都在标准ISO11898中规定,后来被拆分为ISO11898-1(仅涉及数据链路层)和I

2017-04-24 14:58:28 1980

转载 CAN总线基础知识(一)

1.CAN总线是什么?    CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。    CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。    “显性”具有“优先”的意味,只要有一个单元输出显性电平,总

2017-04-24 14:57:28 878

原创 测试嵌入式Linux 的启动时间计算

Tim 的测试软件工具包:Tim软件包Tim Bird 的 grabserial 是一个广泛使用的工具,可以用于产看串口控制台输出的时间信息。这个工具能够为收到的每一行信息添加上时间戳,如下面所示:$ sudo ./grabserial -v -d "/dev/ttyUSB0" -b 115200 -w 8 -p N -s 1 -e 30 -t -m "Starting kernel.

2017-04-04 16:40:37 881

转载 linux内核之链表操作解析

本文只是对linux内核中的链表进行分析。内核版本是linux-2.6.32.63。文件在:linux内核/linux-2.6.32.63/include/linux/list.h。本文对list.h文件进行简要分析,有必要的地方还会以图进行说明。代码分析链表结构体:有前驱和后继,说明是双链表struct list_head { struct list_head

2017-03-30 14:46:56 270

转载 Linux内核:poll机制

在编写驱动程序的过程当中我们可以使用poll机制来非阻塞的打开我们的设备文件,我们知道,在之前我们编写CC1100的驱动程序以及倒车雷达的驱动程序的时候,在read函数中都有用到过wait_event_interruptible_timeout这个函数,这个函数的主要作用就是采用非阻塞的read,因为每一次我们read函数的时候,都会先判断是否有新的数据可以读,如果没有新的数据就会休眠等待有新的数

2017-03-28 17:02:21 889

转载 select、poll、epoll之间的区别总结[整理]

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用

2017-03-28 16:04:50 371

转载 IO多路复用之poll总结

1、基本知识  poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2、poll函数  函数

2017-03-28 15:58:45 272

转载 IO多路复用之select总结

1、基本概念  IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。  (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。  (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。

2017-03-28 15:45:16 197

转载 GPIO的驱动模型

一、概述GPIO是嵌入式系统最简单、最常用的资源了,比如点亮LED,控制蜂鸣器,输出高低电平,检测按键,等等。GPIO分输入和输出,在davinci linux中,有关GPIO的最底层的寄存器驱动,\arch\arm\mach-davinci目录下的gpio.c,这个是寄存器级的驱动,搞过单片机MCU的朋友应该比较熟悉寄存器级的驱动。GPIO的驱动主要就是读取GPIO口的状态,或者设置

2017-03-14 14:32:44 950

转载 linux gpio接口

一.相关结构体 1.gpio_chip代表一个芯片的一个gpio bank[cpp] view plain copy struct gpio_chip {  //gpio bank      const char  *label;     //bank名      struct device   *dev;   //设备文件      struct module

2017-03-13 17:11:24 523

转载 Linux GPIO驱动 - GPIO通用层

如果在内核配置的时候有打开CONFIG_GPIO_SYSFS标志,内核就会在/sys目录下导出GPIO的用户空间操作接口。gpiolib_sysfs_init(drivers/gpio/gpiolib.c)是gpio lib的初始化函数,该函数首先在/sys/class/目录下面创建一个gpio的class,然后把所有注册到gpio lib的控制器导出到/sys/class/gpio/目录下面。

2017-03-13 13:48:04 3556 1

转载 Linux GPIO驱动 - 硬件及硬件抽象层

在很多的SOC芯片里,GPIO硬件接口都是和其它硬件接口共用Pin脚,然后通过特定的寄存器去设置Pin使用时的类型。比如目前手上的项目使用的是Marvell的SOC芯片,该芯片上有50个多功能Pin脚(MPP:Multi-Purpose Pins),每个Pin都可以配置成不同的功能。SOC提供了7个32位的寄存器用来配置MPP Pin的类型,寄存器的每4位对应一个Pin,一个寄存器控制可以8个Pi

2017-03-13 13:46:25 1116

转载 Linux 内核GPIO的学习

GPIO是嵌入式开发中最常见的接口,之前自己就有写过小的GPIO驱动,提供ioctl接口给用户空间操作。但直到最近才发现Linux自身就有完善的GPIO驱动框架,并且通过sysfs向用户空间提供操作接口。Linux的GPIO驱动框架层次及数据结构如下:最上层是用来向向用户空间提供接口,用户可以通过该接口方去控制GPIO PIN脚。GPIO通用接口层主要是维护了一个GPIO PIN的数组gp

2017-03-13 13:45:13 657

转载 linux下devicetree中惯用的of函数

linux下devicetree中常用的of函数从device_node中获取信息:int of_property_read_u8_array(const struct device_node *np, const char *propname,u8 *out_values, size_t sz);int of_property_read_u16_array(const struct

2017-03-08 09:00:41 441

转载 select函数详解及实例分析

Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻

2017-03-02 14:59:37 238

原创 关于Linux下内核编程函数使用头文件包含的问题解决方案

在进行内核编程时候,其不再像C编程那样,函数的使用,我们可以通过man 查询;所以对于内核编程函数的使用往往会给编程人员带来很头疼的问题,古人云工欲善其事必先利其器,所以一个好的工具对于我们编程人员来说也很重要,由于个人也是进过很多的查找,总结了一下相关的使用方式,ctags并不推荐:这里是基于原始的man命令的改善:1.下载相关的内核编程源码,我这里用的是最新的4.1的源码;2.下载

2017-03-01 12:16:25 1569

转载 内核模块参数

模块参数引导模块时,可以向它传递参数。要使用模块参数加载模块,这样写:insmod module.ko [param1=value param2=value ...]为了使用这些参数的值,要在模块中声明变量来保存它们,并在所有函数之外的某个地方使用宏MODULE_PARM(variable, type) 和 MODULE_PARM_DESC(variable

2017-02-21 10:38:29 224

原创 sudo apt-get update error

更新Ubuntu新源的时候,把新的源替换进去,然后sudo apt-get update之后报错:W: Unknown Multi-Arch type 'no' for package 'compiz-core'W: Unknown Multi-Arch type 'no' for package 'compiz-gnome'W: Unknown Multi-Arch type

2017-02-17 21:56:38 526

转载 ioctl()函数详解

我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl     ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的

2017-02-14 16:17:45 278

转载 read 系统调用剖析--file_operations中read/write函数与内核系统调用的关系

在阅读LDD3-第三章-字符设备驱动程序中:struct file_operations scull_fops = {    .owner = THIS_MODULE,    .llseek = scull_llseek,    .read = scull_read,    .write = scull_write,

2017-02-14 15:55:02 6222

grabserial-master

测试嵌入式Linux 的启动时间,测试串口时间

2017-04-04

DoxygenToolkit

对于Linux下的vim配置文件 ,将其拷贝到家目录下的.vim目录下,加上vimrc的配置即可实现快速对代码的注释

2016-12-02

NERD_tree.zip

NERD_tree属于Linux下Vim的配置,可以在vim上显示目录结构,有一定的帮助

2016-12-02

空空如也

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

TA关注的人

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