- 博客(72)
- 资源 (12)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 IA32: Intel architecture 32 bit
英特尔32位架构(英语:Intel Architecture, 32-bit,缩写为IA-32),常被称为i386、x86-32或是x86,由英特尔公司推出的复杂指令集(CISC)架构,至今英特尔最受欢迎的处理器仍然采用此架构。它是x86架构的32位延伸版本,1985年首次应用在Intel 80386芯片中,用来取代之前的x86 16位架构(x86-16),包括8086、 寄存器结构80186与80286芯片。一个IA32中央处理器(CPU)包含一组8个存储32位值的寄存器. 这些寄存器用来存储
2021-01-04 22:49:35
337
1
原创 ILP32、ILP64、LP64、LLP64、64位系统
32、ILP64、LP64、LLP64、64位系统Data Type ILP32 ILP64 LP64 LLP64char 8 8 8 8short 16 16 16 16int 32 64 32 32lon
2020-07-06 16:28:13
632
原创 Linux中IIC设备驱动再细读
S3C2440内核IIC设备驱动建立流程:由内核打印信息,追索驱动流程:内核注册流程: 由打印信息: 1. 先注册 i2c_driver: i2cdev_driver — \drivers\i2c\i2c-dev.c 前面分析过,内核启动初始化会执行函数:i2c_dev_init i2c_dev_init(void) register_chrdev(I
2017-01-19 14:04:54
1413
2
原创 linux多线程编程
=================== 1. Linux 多线程概述 1.1 什么是线程 线程( thread)是包含在进程内部的顺序执行流,是进程中的实际运作单位,也是操作 系统能够进行调度的最小单位。一个进程中可以并发多条线程,每条线程并行执行不同的任 务。1.2 线程与进程的关系 线程与进程的关系可以归结为以下几点: a. 一个线程只能属于
2017-01-10 13:52:11
516
原创 S5PV210内存外存及启动方式
内存: SRAM 静态内存 特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用 DRAM 动态内存 特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。单片机中: 内存需求量小,而且希望开发尽量简单,适合全部用SRAM 嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质 PC机: 内存需
2017-01-08 22:47:48
707
原创 C编译出现这样的警告:returning pointer to local variable
void PWM_GpioInit(void){ timer8_PWM_GpioInit(); timer4_PWM_GpioInit(); //timer3_PWM_GpioInit();}void PWM_TimerInit(void){ timer8_PWM_Init(); timer4_PWM_Init(); //time
2015-10-20 10:07:59
5092
转载 加载地址和运行地址_2
ifndef CONFIG_SKIP_RELOCATE_UBOOT/* _start == _TEXT_BASE, 从Flash 启动 _start != _TEXT_BASE, 从RAM 启动 */relocate: /* relocate U-Boot to RAM */ adr r0, _start /* r0 <
2015-04-17 23:03:02
544
转载 加载地址和运行地址
裸板程序烧在FLASH上 一上电,肯定从0地址运行但是,0地址要么对应NOR FLASH,要么对应只有4K的片内内存程序要读写数据,或是程序大于4K,怎么办?程序就要复制到SDRAM里去执行SDRAM那么大,复制到哪个地址去?能随便选择地址吗不能,要复制到它的链接地址去为什么一定要复制到它的链接地址去?因为这个链接地址是程序运行时“应该位于的地方”,比如要访问某个全局变量时,就是访问
2015-04-17 22:03:13
809
原创 Zigbee协议栈之ZCL API简介
Z-Stack ZCL API本文是参考TI官网文档整理过来的,有些是翻译,翻译的不好多原谅。下载地址:http://download.csdn.net/detail/mengzhuicanyang/7348101也可以去TI的官网免费下载。-----------------------------------------------------------------------
2014-05-14 22:32:59
9940
转载 IAR建立CC2530工程的设置问题及生成.hex文件
选择 Project 菜单下的Options配置与 CC2430 相关的选项。1、General Options选项,按下图配置Target标签,选择Codemodel 和Data model,以及其它参数。 a、单击 Derivative information 栏右边的按钮, 选择程序安装位置如这里是IARSystems\EmbeddedWorkbench4.05 Eval
2014-05-02 20:41:14
11207
1
原创 ZIGBEE中Profile、Cluster和Attribute关系
ZIGBEE中Profile、Cluster和Attribute关系在zigbee规范中,引入了profile, cluster的概念。具体说来,假设规范一个profile(可以理解成一套规定),这个profile用来规范智能家居领域的相关产品都要满足那些要求,那么homeautomation public profile就规定了智能家居都要做什么。当然了,你可以自己规范一个自己的profil
2014-05-01 11:26:30
5903
4
原创 zigbee组网原理
1.组网概述组建一个完整的zigbee网状网络包括两个步骤:网络初始化、节点加入网络。其中节点加入网络又包括两个步骤:通过与协调器连接入网和通过已有父节点入网。2. 网络初始化预备Zigbee网络的建立是由网络协调器发起的,任何一个zigbee节点要组建一个网络必须要满足以下两点要求:(1)节点是FFD节点,具备zigbee协调器的能力;(2)节点还没有与其他网络连接,当节点已
2014-04-30 22:09:14
14152
2
原创 zigbee概述
Zigbee概述From:http://zh.wikipedia.org/wiki/ZigBee维基百科1.ZigbeeZigBee(也称紫蜂)是一种低速短距离传输的无线网络协议,底层是采用IEEE 802.15.4 标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网络节点、支持多种网络拓扑、低复杂度、快速、可靠、安全。2. 发展历程主要由Honeyw
2014-04-30 21:34:06
3560
原创 Linux usb设备驱动(2)---> usbmouse.c 源码分析
一个 USB 总线引出两个重要的链表,一个为 USB设备链表,一个为 USB驱动链表。设备链表包含各种系统中的 USB设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB驱动程序(usb driver)。 1. USB设备驱动程序(usb device driver)和 USB驱动程序(usb dri
2012-07-05 16:16:49
3957
转载 Linux usb 设备驱动 (1)
Linux USB驱动框架分析(一) Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。由于Linux的内核用c来编写,所以我们也按照这种结构化的思想来分析代码,但我还是希望从OO的角度来阐述这些细节。这个结构体的名字有驱动开
2012-07-04 17:52:01
1500
转载 VMware下 Ubuntu 看不到共享文件夹之解决办法
--------------------------------------------------------------------------- 初学Linux,在VMWare 上装了Ubuntu10.04,主机端和虚拟机相互间的访问是必不可少的,途径有许多,其中vmware tool提供的共享文件夹方式简单又方便。然而,有时却莫名其妙的,在Ubuntu上看不到共享文件夹
2012-06-27 15:03:46
966
转载 mount: RPC: Unable to receive; errno = Connection refused
mount: RPC: Unable to receive; errno = Connection refused linux挂载时,出现 mount: RPC: Unable to receive; errno = Connection refused 令人郁闷的是,以前用的好好的。怎么这次开机使用就有这种问题出现呢??网上查了很多资料,再经过排查,发
2012-06-27 14:38:16
4679
原创 input subsystem 笔记2
怎么写符合输入子系统的驱动程序??1. 分配一个input_dev结构体2. 设置3. 注册4. 硬件相关的代码,比如在中断服务程序里上报事件。参考/drivers/input/keyboard/gpio_keys.c1. 定义入口和出口函数 module_init(buttons_init); module_exit(buttons_exit); 入口函数
2012-06-27 10:08:56
1406
转载 显存、像素、帧
显存 1、显存的种类: 显存的种类有EDORAM、MDRAM、SDRAM、SGRAM、VRAM、WRAM、DDR等许多种。EDO显存曾用在Voodoo、Voodoo 2等显卡上,但目前已消声匿迹。SGRAM显存支持块写和掩码,可以看作是SDRAM的加强版,曾流行一时,但由于价格较SDRAM稍高,现在也已甚少采用。目前显卡上被广泛使用的显存就是SDRAM和DDR SDRAM了。SDRAM
2012-06-27 09:01:04
2358
原创 input subsystem 笔记1
花了一个下午整理的资料,有些地方还不是很明白,先做下记录以后再详细整理。 /drivers/input/input.c1.input.c --> core --> static int __init input_init(void) // 输入子系统初始化 -->> err = class_register(&inpu
2012-06-23 17:24:06
906
原创 void * 的用法
void中文翻译为“无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。void含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,定义一个void变量没有意义,不妨试着定义: void a;这行语句编译时会出错,提示“illegal u
2012-06-21 15:39:26
652
原创 typedef 用法详解
第一部分 基本概念1.基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2.
2012-06-21 13:43:09
936
转载 C函数指针的用法
函数指针通常用来实现回调,其基本用法如下: 1、定义函数指针类型// 定义一个原型为int Fun( int a );的函数指针typedef int (*PTRFUN) ( int aPara ); 2、函数指针变量的定义PTRFUN pFun; // pFun为函数指针变量名int (*pFun2) ( int a ); // pFun2也是函数指
2012-06-20 10:18:12
536
原创 linux驱动学习1---led驱动
1. uboot启动内核, 内核启动应用程序。 2. 应用程序找到相应的驱动程序流程 ------------------------------------------------- 应用层: open read write poll c库
2012-06-18 10:14:33
527
转载 linux驱动学习之 同步/异步 阻塞/非阻塞
from: http://www.cppblog.com/converse/archive/2009/05/13/82879.html 我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首
2012-06-17 10:41:42
1081
1
转载 Linux 设备驱动学习之 异步通知
From:http://blog.csdn.net/ypoflyer/article/details/6131334 异步通知: 使用poll轮询方式的时候,相当于应用程序在需要的时候询问设备“准备好了吗?”,如果有这样一种情况,一个进程在低优先级正在执行长的循环计算,但又需要“尽可能快”的处理输入数据,如果采用poll的方式,那么需要这个应用程序周期性的调用poll来检测数据,也
2012-06-16 13:06:31
654
转载 Linux设备驱动学习之 Poll机制分析
int poll(struct pollfd *fds,nfds_t nfds, int timeout); 总的来说,Poll机制会判断fds中的文件是否可读,如果可读则会立即返回(程序从休眠态变为运行态,可以再次参与调度),返回的值就是可读fd的数量,如果不可读,那么该进程就会休眠timeout这么长的时间,然后再来判断是否有文件可读,如果有,返回fd的数量,如果没有,则返回.
2012-06-15 21:32:33
895
原创 char device driver
// 三个最重要的数据结构。struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write)
2012-06-15 14:13:20
569
转载 Linux设备驱动程序学习(4)-高级字符驱动程序操作[(1)ioctl and llseek]
今天进入《Linux设备驱动程序(第3版)》第六章高级字符驱动程序操作的学习。一、ioctl大部分设备除了读写能力,还可进行超出简单的数据传输之外的操作,所以设备驱动也必须具备进行各种硬件控制操作的能力. 这些操作常常通过 ioctl 方法来支持,它有和用户空间版本不同的原型:int(*ioctl)(struct inode*inode,st
2012-06-15 09:31:39
855
转载 Linux设备驱动程序学习(3)-并发和竞态
今天进入《Linux设备驱动程序(第3版)》第五章并发和竞态的学习。对并发的管理是操作系统编程中核心的问题之一。 并发产生竞态,竞态导致共享数据的非法访问。因为竞态是一种极端低可能性的事件,因此程序员往往会忽视竞态。但是在计算机世界中,百万分之一的事件可能没几秒就会发生,而其结果是灾难性的。一、并发及其管理竞态通常是作为对资源的共享访问结果而产生的。在设计自己的驱动程序
2012-06-15 09:18:40
754
转载 Linux设备驱动程序学习(1)-字符设备驱动程序
今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。一、主设备号和次设备号主设备号表示设备对应的驱动程序
2012-06-14 15:47:17
524
转载 Linux设备驱动程序学习(0)-Hello, world!模块
一个学习Linux设备驱动程序都会碰到的第一个例程:#includelinux/init.h>#includelinux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, Tekka
2012-06-14 15:08:30
624
原创 LDD3源码主目录下的Rules.make文件分析
把一些宏定义都替换了,成了如下文件,有些地方还不是很明白,以后补充。==================================================================================================TOPDIR = .KERNELDIR = /usr/src/linuxINCLUDEDIR = /usr/src/li
2012-06-14 13:55:12
1033
转载 linux sed命令参数及用法详解
sed编辑器是 Linux 系统管理员的工具包中最有用的资产之一,因此,有必要彻底地了解其应用Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用 工具是 sed。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。sed 实用工具是一个“
2012-06-14 13:47:27
632
转载 Makefile之wildcard
Makefile之wildcard 1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建
2012-06-14 13:09:26
471
转载 0 - 构造和运行模块
作者:蔡伦辉写在前面作者一直支持GPL的精神。允许任何人自由使用、转载、复制和再分发,但必须保留作者署名,必须保证全文完整转载,包括完整的版权声明。由于作者水平有限,因此不能保证文章内容准确无误,请批判阅读。如果你发现任何错误或对文章内容有任何建议,欢迎你与我联系:Email: caiallen@tom.com QQ群: 14765968
2012-06-14 10:43:13
799
转载 对Linux内核中进程上下文和中断上下文的理解
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较低级别(用户态),在这个级别,处理器控制着对
2012-06-14 09:18:39
508
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人