Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

I2C子系统之ioctl()

I2C子系统之ioctl()

根据前一篇的文章介绍 at24c02的读写方式有很多种,写有两种1.写一字节数据到word address处2.从指定的word address处开始写一页数据,此word address需要页对齐!读有三种1.从at24c02当前的word address读一字节数据2.从指定的word address 读数据3.从当前的word address地址开始读一串数据根据驱动中write() read()的实现方法可以发现,当msg发送完毕时才发送stop信...
I2C子系统之at24c02简介

I2C子系统之at24c02简介

AT24C02存储规格总共32个page,每个page为8byte。总共256KB(2Kb),地址的长度需要使用8bit(刚好可以用来表示256个字节的地址)来表示。AT24CC02的地址设备的地址由8bit组成,前4 bit是固定的(1010);接着的3 bit是和A2 A1 A0的硬件连接相关,通过指定这3 bit可以在统一个I2C系统里面最多连接8个AT24C02设备;第8bit用来表示读/写选择,1表示读/0表示写。AT24C02会和总线上的设备地...
I2C子系统之内核中I2C子系统的结构

I2C子系统之内核中I2C子系统的结构

本文开始,分析内核的i2c子系统。说明:1.分析的内核版本为2.6.37.1 2.开发板为TQ2440,板载ARM9(S3C2440) 3.I2C设备为AT24C02 4.分析顺序就是内核I2C子系统的注册顺序(即本系列文章发表的先后顺序)。在正式进入代码分析前应摸清各初始化函数的执行先后顺序,清楚这个顺序后对i2c的整个框架也有就有数了。1.初始化函数的执行顺序1.1 函数执行顺序是如何确定的内核编译链接完成后初始化函数的执行先后顺序就确定了。这是通过链...
I2C子系统之platfor_device初始化——smdk2440_machine_init()

I2C子系统之platfor_device初始化——smdk2440_machine_init()

调用完函数i2c_init后(见 I2C子系统之I2C bus初始化——I2C_init() http://www.linuxidc.com/Linux/2012-08/68261.htm)系统将成功创建i2c总线。初始化完毕总线后还需要接着初始化i2c设备和i2c驱动(一般是先初始化device),对于2440来说,linux内核中的device初始化一般是通过platform device来初始化的,platform device的初始化在/arch/...
μC/OS中高优先级任务一旦处于就绪态总能获得CPU控制权的理解

μC/OS中高优先级任务一旦处于就绪态总能获得CPU控制权的理解

μCOS的任务切换时间:1.任务创建时2.任务挂起时3.任务恢复4.任务延时时 6.任务释放信号量时7.任务释放互斥信号量时8.任务请求消息邮箱时9.任务释放消息队列时10中断退出时(OSINTEXIT()函数中)任务之前的切换应该就是利用时钟中断来实现,当OS运行完一个时钟片后会产生一个中断(定时器的中断)异常,PC指针立即跳转到异常向量表执行处理异常的代码,随后会导致OS执行一次任务调度。整个过程分析如下:产生异常后执行的第一条指令b HandlerI...
内核代码不可直接访问用户空间数据

内核代码不可直接访问用户空间数据

一定要注意的是不能直接访问用户空间数据,内核代码可以通过特殊的函数来访问用户空间数据,copy_to_user copy_from_user这两个函数就是内核代码访问用户空间数据的函数,但是内核不能直接通过像是memcpy函数来直接操作用户空间数据。按照linux设备驱动书本上的说法,我的理解,三个原因描述如下。其一,驱动程序架构不同或者内核的配置不同,用户空间数据指针可能运行在内核模式下根本就是无效的,可能没有那个虚拟地址映射到的物理地址,也有可能直接指...
交叉编译gdb遇到no termcap library found的解决方法

交叉编译gdb遇到no termcap library found的解决方法

在是用ejtag的时候缺少了gdb工具,因此自己需要手动编译一个gdb工具,编译过程中遇到了一些错误,翻阅了大量的网上资料解决了这些问题,从而也学习了一下交叉编译源码包的方法,这里做一个总结。首先去官方网站下载gdb的源码包,我下载的7.4.1版本的源码包,解压开来,进入到源码包的根目录下。对于一个源码包,拿到手里首先要阅读的就是README,然后看一下INSTALL文件,这个文件里编译源码包的步骤。基本上所有的源码包都是三步,configure,make...
如何在GNU Emacs环境下编译并运行C/C++程序?

如何在GNU Emacs环境下编译并运行C/C++程序?

学习C/C++的朋友有没有想过完完全全的在Linux环境下开发软件!?我想过,可能是因为个人对Windows平台有些偏见,或者说个人不是非常喜欢在Windows下写程序的感觉,总觉得有那么一层膜隔阂着我们,不像Linux,可以做强大的服务器,在终端下只需要使用简简单单的命令便能完成相当复杂的事情,是不是感觉很高深!?还有很多很多开源项目,Emacs也算一个吧!!! 呵呵,谈到在Linux下编程,我们不得不提这两款编辑器:vi/vim和Emacs(确切的说E...
使用OpenCV官方提供文件配置、静态编译并运行OpenCV-2.3.x/2.4.x实例

使用OpenCV官方提供文件配置、静态编译并运行OpenCV-2.3.x/2.4.x实例

当我们需要测试程序,或者想将程序发给其他同事或者同学,以让同事或者同学运行以测试程序性能或者逻辑是否恰当时,是不是还要他人也要像你当初开发程序时一样一步一步的配置OpenCV运行环境!?如果不做这些,还会提示像图1所示的系统错误(无法启动程序,因为计算机中丢失“opencv_highgui241d.dll。尝试重新安装该程序以解决此问题”),这是不是太麻烦了,其实我们可以将程序以静态链接的方式编译,如此便少去了配置运行时环境的步骤了。图1动态编译的程序在未...
<< 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 >>