自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hntea-hong

每天一小步

  • 博客(35)
  • 收藏
  • 关注

原创 博客搬家:hntea.xyz

欢迎访问 hntea.xy

2017-03-16 10:19:25 1018

原创 Git 本地操作 与 Eclipse IDE 操作

Githup 与 Eeclipse IDE 操作git 工具安装sudo apt-get install git sudo apt-get install git-doc git-svn git-email git-gui gitkGit 命令行操作git 文档查看注意,这里所有安装的文档都会在 /usr/share/doc/... 在终端上查看使用: man git-checkout要在终端查

2016-11-29 13:25:55 945

原创 C++顺序容器

C++顺序容器October 27, 2016 3:09 PM容器的概念  容器容纳特定类型对象的集合;也可以这么理解:容器是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。适配器  适配器是根据原始的容器类型来提供操作,通过定义新的操作接口,来适应基础的容器类型;换句话说就是适配器让容器拥有像操作栈、队列等特有的操作

2016-10-28 20:03:30 297

原创 Linux驱动开发-中断分层机制_工作队列 笔记 7

中断分层机制_工作队列1.工作队列概念:a) 任务推后执行b) 被推后的任务由“内核线程”执行c) 允许重新调度和睡眠d) 这些被推后的工作组成一个双向链表,既称为工作队列2.运行机制注释:1.每个CPU都有独立的工作队列2.每个工作队列形成一个双向链表3.执行时由内核的一个线程去处理,执行的时机不确定;只有在线程觉得CPU有能 力处理时才去去工作队列的内容去执行3.工作队列的相关结构struc

2016-08-29 11:46:32 513

原创 Linux驱动开发-中断分层机制笔记 6

中断分层机制—tasklet中断上下文因为中断产生时会打断当前占用CPU的进程,为尽量提高进程的运行效率,不会卡顿,从而使中断服务程序分为顶半部和底半部两个部分顶部分是用来处理应急事件,特别是硬件相关;之后将CPU使用权交个当前进程底部分(不着急处理的,任务繁琐的)则等待CPU空闲时,既内核线程觉得有能力运行时才去执行。注意事项i. 中断上下文代码绝对不可以停止运行中断处理程序不能调用s

2016-08-27 17:25:45 567

原创 Linux驱动开发-中断处理模型笔记 5

中断处理模型1、概念解析a) I/O操作的不确定因素以及处理器和I/O设备之间速度不匹配,设备往往通过某种硬件信号异步唤起处理器的注意b) 这些硬件信号就称为 中断,每个设备都被分配了一个相关的标示符,别称为中断请求号(IRQ)c) 处理器检测到某一 IRQ 号对应的中断产生时,它将停止工作并启动IRQ所对应的中断服务程序d) 共享中断:多个设备使用同一个中断源;注销区分用设备号dev_id和 服务

2016-08-27 13:09:47 935

原创 Linux驱动开发-混杂字符设备驱动模型笔记 4

混杂字符设备驱动模型概念linux系统中,称以主设备号为“10”,但次设备号不同的字符设备为混杂设备所有的混杂设备形成一个链表对设备访问时,内核根据次设备号查找到相应的设备结构描述struct miscdevice {int minor; /*次设备号*/const char *name;/*设备名,驱动加载后会自动创建该设备文件*/const struct file_operations

2016-08-27 12:58:24 617

原创 Linux驱动开发-字符设备控制技术笔记 3

字符设备控制技术  笔记要做的自己看起来舒服和有头绪,这不又折腾切换编辑器来从新排版,有强迫症啊!对于字符控制,很多时候编写上层应用程序时,使用ioctl系统调用来控制设备,原型如下:/* fd: 要控制的设备文件描述符 cmd: 发送给设备的控制命令 …: 第3个参数是可选的参数,存在与否是依赖于控制命令(第2 个参数)。*/int ioctl(int fd,unsig

2016-08-27 12:49:54 783

原创 Linux驱动开发-字符设备驱动笔记 2

字符设备驱动程序设计概念字符设备文件:应用程序通过字符设备文件而调用字符设备驱动的文件操作映射关系是一个文件描述符字符设备文件创建方法可以使用以下命令形式:cat /proc/devices  // 查看主设备号mknod /dev/xxx c 100 3 //(指明是字符设备) 主设备号 次设备号或者直接用使用函数注册,自动生成。设备号数据类型:dev_t高十二位为主设备号低

2016-08-27 11:55:26 772

原创 Linux驱动开发--设备驱动基础笔记 1

设备驱动基础设备驱动的使用方式:动态加载直接编译进内核直接编译进内核的方法:(内核源码/Doucument/kbuild/…中有相应的介绍).config:顶层配置文件,可以手动修改,也可以通过make menuconfig等命令配置内核自动生成;该文件对驱动进行三个方面配置:编译成驱动模块编译进内核从内核中除去Kconfig:连接LINUX内核的模块目录文件;功能:用于定义make

2016-08-27 11:22:00 512

原创 Linux 驱动开发-内核模块设计笔记 0

内核模块入门,模板说明以及命令解释

2016-08-27 11:05:56 658

原创 线程-Pthread 笔记

线程-Pthread1.作用:a) 单进程环境中执行多个任务b) 一个进程中的所有线程可以访问该进程的组成部件:文件描述符和内存等c) 资源一致性2.线程标识a) 每个线程有一个ID: pthread_t 数据类型3.线程启动相关函数a) 比较两个线程的ID pthread_equal();b) 获取自身的线程ID pthread_self();c) 创建线

2016-05-29 21:42:08 265

原创 守护进程-解析

守护进程-解析1.概念:守护进程也称为精灵进程,是生存期较长的一种进程a) 系统自举启动,系统关闭时终止b) 没有控制终端,在后台运行2.终端查看守护进程a) ps -axji. -a 显示由其他用户所拥有的进程状态ii. -x 显示没哟控制终端的进程状态iii. -j 显示与作业有关的信息b) 显示解析i. PPID:父进程ii. PID:进程ii

2016-05-29 21:40:28 1214

原创 标准I/O库 笔记

标准I/O库1.流和FILE对象a) ASCII字符集:一个字符用一个字节表示b) 国际字符:一个字符可以用多个字节表示c) 标准I/O文件流可以用于单字节或者多字节字符集2.流定向a) 决定所读、写的字符是单字节或者是多字节b) 流最初创建时无定向c) 函数i. int fwide(FILE* fp,int mode) :设置流定向1. 注意:fwid

2016-05-29 21:39:11 232

原创 根文件系统制作

根文件系统制作1.创建目录:a) 一级目录:mkdir rootfs(该文件名可随便取)b) 二级目录:mkdir usr bin dev mnt etc proc sbin sys tmp var libc) 三级目录:mkdir usr/bin usr/lib usr/sbin lib/modulesd) 注意:二三级目录是固定的。2.在/dev目录下创建设备文件

2016-05-29 21:32:44 643

原创 建立目标板Linux系统

建立目标板Linux系统1、步骤a) 决定系统组件b) 配置及建立内核c) 建立根文件系统d) 设置引导软件与配置2、为嵌入式系统开发软件3、网络功能:a) 网络功能让嵌入式系统能够跟外界交互。b) HTTP, Telnet,SSH及SNMPc) 在具有网络功能的嵌入式系统中,值得注意的是“远程更新”,既可通过网络跟新系统!4、实际项目工作空间的使用

2016-05-29 21:28:15 367

原创 Busybox ---------- init进程解析

Busybox ---------- init进程解析1、/sbin/init 是 /bin/busybox的符号链接,所以busybox是目标板上执行的第一个应用程序。2、当busybox知道调用它的目的是init,它会立即跳转到init进程3、busybox 的init进程会依次执行以下工作:a) 为init设置信号处理进程b) 初始化控制台c) 剖析inittab

2016-05-29 21:26:57 892

原创 Linux驱动开发、22-USB子系统

USB子系统USB(universal serial bus)总线:通用串行总线,是一种外部总线标准,用于规范电脑与外部设备的连接和通讯。 USB1.0:1.5MB/SUSB1.1(full speed):12MB/SUSB2.0(high speed):480MB/SUSB3.0(supper sped):4800MB/S USB硬件结构(4线):电源(5V,50

2016-05-29 21:18:53 1295

原创 Linux驱动开发、21-块设备驱动设计

块设备驱动1、基础概念 块设备是一种能随机访问的存储介质,与字符设备不同,它能保存文件系统数据。 IDE(Integrated Driver Electrics,集成驱动电子设备)是PC中常见的存储接口技术ATA(Advance Technology Attachment ,高级技术配件),很老的了。CD-ROM 和磁带等存储设备称为 ATAPI(ATA Packet

2016-05-29 21:07:13 393

原创 Linux驱动开发、20-SPI子系统分析

SPI总线基础概念: SPI(Serial Peripheral Interface,串行外围设备接口)总线,串行 主-从接口;很多集成与微控制器内部。 四线制,全双共模式,速度达到几兆,四线分别为:SCLK(Serial Clock):串行时钟CS(Chip Select):片选,有些写着SSMISO(Master In Slave out):主设备输入,从设备输

2016-05-29 21:03:10 562

原创 Linux驱动开发、19-I2C子系统之客户驱动分析与移植

I2C子系统_设备驱动移植  用户程序通过I2C设备驱动程序访问步骤是这样的... 用户的操作函数---/sys/bus/i2c/devices/....->设备驱动的操作函数---->最终回调i2c-core的函数实现数据的通信。 AT24.C驱动追踪:(Linux内核已经帮我们实现大部分驱动,所以驱动开发移植比较多..) 模块入口:每个i2c设备都需要使用该

2016-05-29 20:54:36 451

原创 Linux驱动开发、18-I2C子系统之用户态驱动设计

Linux 系统下的I2C子系统子系统架构 1. I2C核心I2C 总线和 I2C设备驱动的中间枢纽,它提供了I2C总线驱动和设备驱动的注册、注销方法等。2. i2c-dev通用驱动2.I2C控制器(适配器)驱动对I2C 控制器驱动的实现,属于总线驱动程序,通常由适配器驱动(i2c_adapter)和adapter.algo成员(算法驱动程序;控制器(适配器

2016-05-29 20:45:44 993

原创 Linux驱动开发、17-输入子系统浅析

输入子系统1、概念:内核对分散的,多种不同类别的输入设备进行统一处理的驱动程序。2、输入子系统的好处:a) 统一物理形态各异的相似的输入设备的处理功能b) 提供了用于分发输入报告给用户应用程序的简单事件(event)接口。驱动程序不必创建、管理/dev节点以及相关的访问方法,因此它能方便地被调用输入API以发送鼠标移动,键盘按键或者触摸事件给用户空间c) 抽取了输入驱动程序的通

2016-05-29 20:37:25 630

原创 Linux驱动开发、16-回环网卡驱动设计

1、回环网卡:它是一种虚拟设备,原理是自发自收,形成逻辑上的回路   2、回环网卡驱动设计步骤 设备初始化:1、分配网卡设备:struct net_device *dev = alloc_netdev(0, "lo", loopback_setup);参数1:私有空间设备名:"lo"回调函数:用来初始化设备,初始化数据包格式,关联操作函数集合 2、向

2016-05-29 20:32:50 880

原创 Linux驱动开发-15、网络设备驱动

网络设备驱动1、Linux 网络类设备不在是基于文件操作(没有对应的映射到文件系统中的设备节点),而是套接字socket来实现通讯2、Linux 网络子系统的架构图 各层次接口功能说明:系统调用接口层:为应用程序提供访问网络子系统的统一方法。协议无关层:提供通用的方法来使用传输层协议。协议栈的实现:实现具体的网络协议设备无关层:协议与设备驱动之前通信的通用接口设

2016-04-19 23:10:43 481

原创 Linux驱动开发-14、串行设备驱动模型

串行设备驱动模型1、TTY概念解析a) 串口终端(/dev/ttyS*)串口终端是使用计算机串口连接的终端设备;Linux以字符设备来处理这种串行端口;这些端口所对应的设备名称是/dev/ttySAC0-N b) 控制台终端(/dev/console )计算机的输出设备通常被称为控制台终端,特指printk信息输出到的设备;/dev/console是一个虚拟设备;它

2016-04-19 23:07:54 623

原创 Linux驱动开发-13、平台总线驱动模型

平台总线驱动模型1.概念a) 一种虚拟总线,由内核创建b) 一般在内核代码中已近注册了相应的平台资源,在sys/bus/platform中可以查看平台的设备和驱动 2.平台设备:(查看内核document/driver-model目录下的文档)a) 平台设备是一种典型的自动挂载进系统的设备b) 它包含有设备的端口基地址和设备外设总线c) 很多控制器为完善系统的集成度

2016-04-04 15:45:09 401

原创 Linux驱动开发-12、总线设备驱动模型

总线设备驱动模型1、概念:将属于同一种接口(如USB,I2C等)的不同设备挂载在总线上,设备可以通过总线匹配到相应的驱动程序。 2、优点:a) 支持热插拔b) 驱动程序可移植性提高3、关系图解 ---- 头文件  #include 4、图解说明a) 总线设备包含三个结构;既设备,设备的驱动,总线b) 设备和其驱动通过struct bus_type 结

2016-04-04 15:40:49 485

原创 Linux驱动开发-11、设备阻塞访问-等待队列

Linux设备阻塞访问-等待队列1、概念a) 阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再执行b) 被挂起的进程进入休眠状态,从调度器的运行队列移走,直到条件等待的条件被满足时进程再度被唤醒2、需要阻塞访问的应用a) 当应用程序使用read()或者write()等系统调用时,若设备的资源无法获取,而用户又希望等待到设备有数据自行读取或写入(阻塞

2016-04-04 15:37:33 543

原创 Linux驱动开发-10、Linux延时处理

Linux延时处理1、Linux 内核提供三个函数a) void ndelay(unsigned long nsecs) //纳秒b) void udelay(unsigned long nsecs) //微秒c) void mdelay(unsigned long nsecs) //毫秒d) 注:基本原理就是忙等待,这样的坏处就是消耗CPU资源2、毫秒级以上休眠a) 

2016-03-24 21:40:19 488

原创 Linux驱动开发-9、Linux定时器

Linux定时器1.定时器是对机器时钟中断的应用 -2.内核提供一组数据结构来完成定时触发工作或者完成周期性的事务3.操作系统中,一般不允许使用for循环来延时,一般使用定时器来完成延时功能4.jiffies 表当前时间,HZ表示延迟1S5.数据结构struct timer_list {/* * All fields that change during norma

2016-03-24 21:37:08 427

原创 Linux驱动开发-8、中断分层机制_软中断

中断分层机制_软中断1、概念:软中断是模拟硬件中断的概念,实现宏观上的异步执行效果。其实tasklet也是基于软中断实现的。2、软中断和硬中断的区别a) 硬中断是外部设备对CPU的中断,软中断时程序对内核的中断b) 信号是由内核(或者其他进程)对某个进程的软中断3、结构表示:struct softirq_action{void (*action)(struct

2016-03-24 13:39:50 458

原创 Linux Shell 编程语法

Shell 编程变量1.变量赋值方式a) var=value #这种赋值方式需要value没有空格符号b) var=”value” #包含空格的变量可以这样赋值2.变量应用:$变量名3.环境变量a) HOMEb) PWDc) USERd) UIDe) SHELL4.字符串长度获取:length=${#var}5.获取命令输出,将其存入变量中的语法

2016-03-18 22:28:42 346

原创 Linux驱动开发--1、设备驱动基础

设备驱动基础1.设备驱动的使用方式:a) 动态加载 b) 直接编译进内核2.驱动程序分类:a) 字符型设备b) 块设备c) 网络接口d) 其他:如SCSI3.字符设备:a) 指的存取时没有缓存的设备b) 可以像文件一样访问字符设备,字符设备驱动程序负责实现这些行为4.块设备:a) 块设备是文件系统的宿主,如磁盘。b) 大多数Unix系统中,只

2016-03-16 09:38:15 170

原创 Linux 驱动开发-0、内核模块设计

Linux内核模块设计

2016-03-16 09:29:10 169

空空如也

空空如也

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

TA关注的人

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