面试该如何回答iic

触摸屏的主要三大种类是:电阻技术触摸屏、 表面声波技术触摸屏、 电容技术触摸屏
电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏, 这是一种多层嘚复合薄膜它以一层玻璃或硬塑料平板作为基层,表面图有一层透明氧化金属 (ITO氧化铟透明的导电电阻) 导电层,上面在盖有一层外表面硬化处理、光滑防擦的塑料层 、它的内表面也涂有一层ITO涂层 、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开絕缘 当手指触摸屏幕时,两层导电层在触摸点位置就有了接触控制器侦测到这一接触并计算出(X,Y )的位置再根据模拟鼠标的方式運作。这就是电阻技术触摸屏的最基本的原理

表面声波技术是利用声波在物体的表面进行传输,当有物体触摸到表面时阻碍声波的传輸,换能器侦测到这个变化反映给计算机,进而进行鼠标的模拟

电容技术触摸屏利用人体的电流感应进行工作 。用户触摸屏幕时 由於人体电场,用户和触摸屏表面形成以一个耦合电容 对于高频电流来说,电容是直接导体于是手指从接触点吸走一个很小的电流

3.在Linux 中,ls这个命令是怎么被执行的?

使用fork创建一个进程或exe函数族覆盖原进程

第一道程序分配内存但没有填充,编译器可能会把内存分配优化掉程序死循环;第二道,程序分配内存并进行填充系统会一直分配内存,直到内存不足退出循环。

5.请定义一个宏比较两个数a、b的大小,不能使用大于、小于、if语句

搞的比较复杂主要思想就是a-b的值的最高位是否为0;但是又得考虑整数溢出的问题,所以很复杂不知道哪位大侠有更好的办法,指点指点



1、LINUX下的Soket套接字和Windows下的WinSok有什么共同点?请从/++语言开发的角度描述至少说出两点共同点。(10分说得好的烸点加5分,没有上限精通SOK编程者破格录用。)

本题的目的就是考考应试者的SOK功底以及应用能力。答案可谓是五花八门但是答对的少嘚可怜。其实答案很多也很好回答。可见面试者功底确实一般对SOK编程只是一知半解。更有甚者把TP/IP的原理搬出来讲了一大堆,却无一條符合要求

第1题,答中一个得5分答出其它正确答案的,也得5分

b)都是一个sok结构体。

)都是使用sok文件句柄进行访问

2、请编写一个标准Shell脚夲testd,实现如下功能:

B、当test异常退出之后自动重新启动。

、当test程序重启次数超过100次自动复位操作系统。

B、当前已有11个用户进程在运行占用了大部分的PU时间和内存,你可使用的内存只有2MB左右PU时间由系统分派。

(本题满分20分程序15分,注释5分程序不能运行的0分,能够运荇但有BUG的10分能够正确无误的运行的15分。清楚编写注释的5分)

本题是考查LINUX和嵌入式编程功底的,写出程序来的不少但是95%以上的人竟无視我假设的资源,不知道在重启test程序的时候需要加上一个适当的


掩饰时间以便资源紧张的操作系统有时间回收资源。85%的人不知道写完testd之後要在init里边加载这个脚本,才能实现启动时自动加载的功能
有人甚至在脚本开头使用bash作为脚本解析器,我已经清清楚楚说明了用“标准shell”!用sh不就完了吗是习惯作祟吗?


就业模拟测试题-LINUX驱动、系统底层工程师职位   1.你平常是怎么用写嵌入式系统的死循环的 [3分]  2.写一条命囹,实现在dir以及其子目录下找出所有包含“hello world”字符串的文件[2分] 

3.下面的两段程序中循环能否执行?为什么

4.一个计划跑LINUX系统的ARM系统把bootloader烧录進去后,上电后串口上没有任何输出硬件和软件各应该去检查什么?   

 5.列举最少3种你所知道的嵌入式的体系结构并请说明什么是ARM体系结構。[7分] 


 7.嵌入式中常用的文件系统有哪些说出它们的主要特点和应用场合?[5分] 

9.根据时序图和说明编写程序:

2.这个题主要是在笔试之后的面試,需要在3~5分钟之内表述清楚[8分] 

11.如何编写一个LINUX驱动

13.试总结单片机底层开发与LINUX驱动开发有哪些异同?[4分] 

15.画出上题中你选定相应硬件模块与PU的主要引脚连线[5分]  16. 编写上题中你选定相应硬件模块相应LINUX驱动的流程[6分] 

3、platform总线设备及总线设备如何编写

7、II原理,总线框架设备编写方法,i2_msg


}

一、II 总线概述:

I2总线是PHLIPS公司推出嘚一种串行总线 I2总线只有两根双向信号线。一根是数据线SDA另一根是时钟线SL。

每个接到I2总线上的器件都有唯一的地址主机与其它器件間的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器由总线上接收数据的器件则为接收器。

二、II 总线通信协议:

要掌握II的通信协议需要掌握以下6个通信信号:

  • SL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SL线为高电平期间SDA线由低电平向高电平的变化表示终止信号。

  • II 总线协议规定每传送一个字节数据后,都要有一个应答信号以确定数据传送是否被对方收到应答信号由接受设备产生,在SL为高电平期间接受设备将SDA拉低为低电平,表示数据传输正确产生应答(AK)

  • I2总线进行数据传送时,时钟信号为高电平期间数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间数据线上的高电平或低电平状态才允许变化。

根据AT2402的芯片鈳编写以下信号函数程序:

根据时序图,可编写2402的读写函数程序:

三、有关 II 总线常见面试题:(参考)

  • 介绍一下你了解的I2

I2总线是飞利浦(PHLIPS)公司推出的一种串行总线,用于连接微控制器及其外围设备 I2串行总线有两根双向信号线。一根是数据线SDA另一根是时钟线SL。 它仅通過两根信号线就可以完成对所有挂载在I2总线上的从器件进行操作这样的好处是可以大大的节省我们微处理器的IO口资源。

  • I2到底可以挂载多尐个器件呢

答:II协议规定,在启动总线后第1字节的高7位是从节点的寻址地址其中高四位为器件类型识别符,接着三位为片选最后一位为读写位,当为1时为读操作为0时为写操作,所以具体挂载多少个器件由I2地址决定7位寻址地址减去1个广播地址0x00不用,所以有2^7=128 - 1 = 127那就是127個地址, 所以理论上可以挂127个从器件

  • I2如何同时挂载多个同一种器件(地址相同的器件)?

答:理论上是不会这样设计的如果一定要这樣做的话,可以通过硬件上设计控制器件是否挂载总线来实现(方法可用一个开关电路切断器件SDA或者SL是否接入总线来实现)

  • I2总线的主机與从机之间是如何通信的呢?

I2总线的主机与从机之间的通信主要和I2的时序有关在通信开始的时候SL与SDA都置为高电平,此时为总线空闲时间当SL为高电平期间SDA的电平被拉低,标志这总线的启动当SL为高电平期间SDA的电平被拉高,标志这总线的终止在进行数据传送时,SL为高电平期间SDA上的数据必须保持稳定,只有在SL的信号为低电平时SDA上的高电平才允许变化。所以只要我们根据芯片手册正确的写好II的时序按时序发送器件地址(不同的器件的地址不同)以及数据,就可以使主机与从机之间通信

  • I2总线的仲裁你知道吗?

总线上可能挂接有多个器件有时会发生两个或多个主器件同时想占用总线的情况,这种情况叫做总线竞争I2总线具有多主控能力,可以对发生在SDA线上的总线竞争进荇仲裁其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平而另一个主器件发送低电平,则发送电平與此时SDA总线电平不符的那个器件将自动关闭其输出级总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较如果主器件寻址同┅个从器件,则进入数据位的比较从而确保了竞争仲裁的可靠性。由于是利用I2总线上的信息进行仲裁因此不会造成信息的丢失。

  • I2时钟信号(SL)的同步问题

在I2总线上传送信息时的时钟同步信号是由挂接在SL线上的所有器件的逻辑“与”完成的SL线上由高电平到低电平的跳变將影响到这些器件,一旦某个器件的时钟信号下跳为低电平将使SL线一直保持低电平,使SL线上的所有器件开始低电平期此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SL线的状态于是这些器件将进入高电平等待的状态。当所有器件的时钟信号都上跳为高电平時低电平期结束,SL线被释放返回高电平即所有的器件都同时开始它们的高电平期。其后第一个结束高电平期的器件又将SL线拉成低电岼。这样就在SL线上产生一个同步时钟可见,时钟低电平时间由时钟低电平期最长的器件确定而时钟高电平时间由时钟高电平期最短的器件确定。

  • I2总线的其他注意点

1、进行数据传送时在SL为高电平期间,SDA线上电平必须保持稳定只有SL为低时,才允许SDA线上电平改变状态并苴每个字节传送时都是高位在前。
2、对于应答信号AK=0时为有效应答位,说明从机已经成功接收到该字节若为1则说明接受不成功。
3、如果從机需要延迟下一个数据字节开始传送的时间可以通过把SL电平拉低并保持来强制主机进入等待状态。
4、主机完成一次通信后还想继续占鼡总线在进行一次通信而又不释放总线,就要利用重启动信号Sr它既作为前一次数据传输的结束,又作为后一次传输的开始
5、总线冲突时,按“低电平优先”的仲裁原则把总线判给在数据线上先发送低电平的主器件。
6、在特殊情况下若需禁止所有发生在I2总线上的通信,可采用封锁或关闭总线具体操作为在总线上的任一器件将SL锁定在低电平即可。
7、SDA仲裁和SL时钟同步处理过程没有先后关系而是同时進行的。

iruit)总线是一种由PHILIPS公司开发的两线式串行总线用于连接微控制器及其外围设备。II总线产生于在80年代最初为音频和视频设备开发,洳今主要在服务器管理中使用其中包括单个组件状态的通信。例如管理员可对各个组件进行查询以管理系统的配置或掌握组件的功能狀态,如电源和系统风扇可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性方便了管理。


1、 II总线的特点

 II总线朂主要的优点是其简单性有效性由于接口直接在组件之上,因此II总线占用的空间非常小减少了电路板的空间和芯片管脚的数量,降低了互联成本总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件II总线的另一个优点是,它支持多主控(multimastering) 其中任何能够进荇发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率当然,在任何时间点上只能有一个主控


2、II总线工作原理

II总线是由数据线SDA和时钟SL构成的串行总线,可发送和接收数据在PU与被控I之间、I与I之间进行双向传送,最高传送速率100kbps各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作所以每个电路和模块都有唯一的地址,在信息的传输过程中II总線上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器)这取决于它所要完成的功能。

PU发出的控制信号分为地址码控制量两部分:

1) 地址码用来选址即接通需要控制的电路,确定控制的种类;

2) 控制量决定该调整的类别(如对比度、亮度等)及需要调整的量

    这样,各控制电路虽然挂在同一条总线上却彼此独立,互不相关

    II总线在传送数据过程中共有四种类型信号:

开始信号:SL为高電平时,SDA由高电平向低电平跳变开始传送数据;

结束信号:SL为高电平时,SDA由低电平向高电平跳变结束传送数据;

数据传输信号:在开始条件以后,时钟信号SL的高电平周期期问当数据线稳定时,数据线SDA的状态表示数据有效即数据可以被读走,开始进行读操作在时钟信号SL的低电平周期期间,数据线上数据才允许改变每位数据需要一个时钟脉冲。

应答信号:接收数据的I在接收到8bit数据后向发送数据的I發出特定的低电平脉冲,表示已收到数据PU向受控单元发出一个信号后,等待受控单元发出一个应答信号PU接收到应答信号后,根据实际凊况作出是否继续传递信号的判断若未收到应答信号,由判断为受控单元出现故障

     II规程运用主/从双向通讯。器件发送数据到总线上則定义为发送器,器件接收数据则定义为接收器主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制主器件产生串行时钟(SL)控制总线的传输方向,并产生起始和停止条件SDA线上的数据状态仅在SL为低电平的期间才能改变,SL为高电平嘚期间SDA状态的改变被用来表示起始和停止条件

      在起始条件之后必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片類型有不同的定义EEPROM一般应为1010),接着三位为片选最后一位为读写位,当为1时为读操作为0时为写操作。

      写操作分为字节写和页面写两種操作对于页面写根据芯片的一次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的时序

      读操作有三种基本操作:当湔地址读、随机读和顺序读。图4给出的是顺序读的时序图应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。

       主机只能在总线空闲的时候启动传輸两个或多个主机可能在起始条件的最小持续内产生一个起始条件,结果在总线上产生一个规定的起始条件

       当SL线是高电平时,仲裁在SDA線发生这样在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级因为总线上的电平和它自己的电平不同。

      仲裁可以歭续多位从地址位开始,同一个器件的话接着就是数据位(如果主机-发送器)或者比较相应位(如果主机-接收器)。II总线的地址和数據信息由赢得仲裁的主机决定在这个过程中不会丢失信息。

仲裁不能在下面情况之间进行:

1)重复起始条件和数据位;
2)停止条件和数據位;
3)重复起始条件和停止条件

-- 每个字节后应该由对方回送一个应答信号AK做为对方在线的标志.非应答信号一般在所有字节的最后一个芓节后.一般要由双方协议签定.

d -- SL必须由主机发送,否则天下大乱

e -- 首字节是"片选信号",即7位从机地址加1位方向(读写)控制.从机收到(听到)自己的地址才能发送应答信号(必须应答!!!)表示自己在线.其他地址的从机不允许忽悠!!!(当然群呼可以忽悠但只能听不许说话)

f -- 读写是站在主机的立场上定义的."读"昰主机接收从机数据,"写"是主机发送数据给从机.

g-- 重复位主要用于主机从发送模式到接收模式的转换"信号",由于只有2线,所以收发转换肯定要比SPI复雜,因为SPI可用不同的边沿来收发数据,而II不行.

h -- 在硬件II模块,特别是MU/ARM/DSP等每个阶段都会得到一个准确的状态码,根据这个状态码可以很容易知道现在在什么状态和什么出错信息.

i -- 7位II总线可以挂接127个不同地址的II设备,0号"设备"作为群呼地址.10位II总线可以挂接更多的10位II设备.

         Linux定义了系统的II驱动体系结构,在Linux系统中II驱动由3部分组成,即II核心II总线驱动II设备驱动这3部分相互协作,形成了非常通用、可适应性很强的II框架

       那么我们如何編写特定i2接口器件的驱动程序?就是说上述架构中的那些部分需要我们完成而哪些是linux内核已经完善的或者是芯片提供商已经提供的?

adapter在硬件上产生信号(start、stop、ak)以及处理i2中断覆盖图中的硬件实现层

第四层:实现i2设备所对应的具体devie的驱动,i2_driver只是实现设备与总线的挂接而掛接在总线上的设备则是千差万别的,所以要实现具体设备devie的write()、read()、iotl()等方法赋值给file_operations,然后注册字符设备(多数是字符设备)覆盖图中的driver驅动层

2、Linux下I2驱动体系结构三部分详细分析

       II 核心提供了II总线驱动和设备驱动的注册、注销方法,II通信方法(即“algorithm”笔者认为直译为“运算方法”并不合适,为免引起误解 下文将直接使用“algorithm”)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。

 i2-ore.攵件实现了I2ore框架是Linux内核用来维护和管理的I2的核心部分,其中维护了两个静态的List分别记录系统中的I2driver结构和I2adapter结构。I2ore提供接口函数允许一個I2adatper,I2driver和I2lient初始化时在I2ore中进行注册以及退出时进行注销。同时还提供了I2总线读写访问的一般接口主要应用在I2设备驱动中。

       II总线驱动是对II硬件体系结构中适配器端的实现适配器可由PU控制,甚至直接集成在PU内部总线驱动的职责,是为系统中每个I2总线增加相应的读写方法但昰总线驱动本身并不会进行任何的通讯,它只是存在那里等待设备驱动调用其函数。

 II总线驱动主要包含了II适配器数据结构i2_adapterII适配器的algorithm数據结构i2_algorithm控制II适配器产生通信信号的函数经由II总线驱动的代码,我们可以控制II适配器以主控方式产生开始位、停止位、读写周期以及鉯从设备方式被读写、产生AK等。

 Busses文件夹下的i2-mp.文件实现了PowerP下I2总线适配器驱动定义描述了具体的I2总线适配器的i2_adapter数据结构,实现比较底层的對I2总线访问的具体方法I2adapter 构造一个对I2ore层接口的数据结构,并通过接口函数向I2ore注册一个控制器I2adapter主要实现对I2总线访问的算法,ii_xfer() 函数就是I2adapter底层對I2总线读写方法的实现同时I2adpter 中还实现了对I2控制器中断的处理函数。

      II设备驱动是对II硬件体系结构中设备端的实现设备一般挂接在受PU控制嘚II适配器上,通过II适配器与PU交换数据设备驱动则是与挂在I2总线上的具体的设备通讯的驱动。通过I2总线驱动提供的函数设备驱动可以忽畧不同总线控制器的差异,不考虑其实现细节地与硬件设备通讯

     i2-dev.文件中实现了I2driver,提供了一个通用的I2设备的驱动程序实现了字符类型设備的访问接口,实现了对用户应用层的接口提供用户程序访问I2设备的接口,包括实现openrelease,readwrite以及最重要的iotl等标准文件操作的接口函数。峩们可以通过open函数打开 I2的设备文件通过iotl函数设定要访问从设备的地址,然后就可以通过 read和write函数完成对I2设备的读写操作

通过I2driver提供的通用方法可以访问任何一个I2的设备,但是其中实现的readwrite及iotl等功能完全是基于一般设备的实现,所有的操作数据都是基于字节流没有明确的格式和意义。为了更方便和有效地使用I2设备我们可以为一个具体的I2设备开发特定的I2设备驱动程序,在驱动中完成对特定的数据格式的解释鉯及实现一些专用的功能

      因为II设备种类太多,如果每一个II设备写一个驱动程序那么显得内核非常大。不符合软件工程代码复用所以對其层次话:

    设备层关系到实际的II设备,总线层包括PU中的II总线控制器和控制总线通信的方法值得注意的是:一个系统中可能有很多个总線层,也就是包含多个总线控制器;也可能有多个设备层包含不同的II设备

        由II总线规范可知,II总线由两条物理线路组成这两条物理线路昰SDA和SL。只要连接到SDA和SL总线上的设备都可以叫做II设备

设备结构体i2_lient中addr的低8位表示设备地址。设备地址由读写位、器件类型和自定义地址组成如下图:

第7位是R/W位,0表示写2表示读,所以I2设备通常有两个地址即读地址和写地址;

类型器件由中间4位组成,这是由半导体公司生产嘚时候就已经固化了;

自定义类型由低3位组成由用户自己设置;

1、i2_lient数据结构是描述II设备的“模板”,驱动程序的设备结构中应包含该结構;

2、adapter指向设备连接的总线适配器系统可能有多个总线适配器。内核中静态指针数组adapters记录所有已经注册的总线适配器设备;

3、driver是指向设備驱动程序这个驱动程序是在系统检测到设备存在时赋值的;

      II总线适配器就是一个II总线控制器,在物理上连接若干个II设备II总线适配器夲质上是一个物理设备,其主要功能是完成II总线控制器相关的数据通信:

       每一个适配器对应一个驱动程序该驱动程序描述了适配器与设備之间的通信方法:


      II设备驱动程序大致可以分为设备层和总线层。设备层包括一个重要的数据结构i2_lient。总线层包括两个重要的数据结构分別是i2_adapter和i2_algorithm。一个i2_algorithm结构表示适配器对应的传输数据方法3个数据结构关系:

II设备层次结构较为简单,但是写II设备驱动程序却相当复杂

II设备驱動程序的步骤:

4、各结构体的作用与它们之间的关系

  i2_msg也非常关键,调用驱动中的发送接收函数需要填充该结构体

 从i2驱动架构图中可鉯看出linux内核对i2架构抽象了一个叫核心层ore的中间件,它分离了设备驱动devie driver和硬件控制的实现细节(如操作i2的寄存器)ore层不但为上面的设备驅动提供封装后的内核注册函数,而且还为小面的硬件事件提供注册接口(也就是i2总线注册接口)可以说ore层起到了承上启下的作用。

面試你该如何回答---->II总线协议

面试的时候主要会遇到的II问题如下

  • 介绍一下你了解的I2?

I2总线是飞利浦(PHLIPS)公司推出的一种串行总线用于连接微控制器及其外围设备, I2串行总线有两根双向信号线一根是数据线SDA,另一根是时钟线SL 它仅通过两根信号线就可以完成对所有挂载在I2总線上的从器件进行操作。这样的好处是可以大大的节省我们微处理器的IO口资源

  • I2到底可以挂载多少个器件呢?

答:II协议规定在启动总线後第1字节的高7位是从节点的寻址地址,其中高四位为器件类型识别符接着三位为片选,最后一位为读写位当为1时为读操作,为0时为写操作所以具体挂载多少个器件由I2地址决定,7位寻址地址减去1个广播地址0x00不用所以有2^7=128 - 1 = 127,那就是127个地址 所以理论上可以挂127个从器件。

  • I2如哬同时挂载多个同一种器件(地址相同的器件)

答:理论上是不会这样设计的,如果一定要这样做的话可以通过硬件上设计,控制器件是否挂载总线来实现(方法可用一个开关电路切断器件SDA或者SL是否接入总线来实现)

  • I2总线的主机与从机之间是如何通信的呢

I2总线的主机與从机之间的通信主要和I2的时序有关。在通信开始的时候SL与SDA都置为高电平此时为总线空闲时间。当SL为高电平期间SDA的电平被拉低标志这總线的启动。当SL为高电平期间SDA的电平被拉高标志这总线的终止。在进行数据传送时SL为高电平期间,SDA上的数据必须保持稳定只有在SL的信号为低电平时,SDA上的高电平才允许变化所以只要我们根据芯片手册正确的写好II的时序,按时序发送器件地址(不同的器件的地址不同)以及数据就可以使主机与从机之间通信。

  • I2总线的仲裁你知道吗

总线上可能挂接有多个器件,有时会发生两个或多个主器件同时想占鼡总线的情况这种情况叫做总线竞争。I2总线具有多主控能力可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时如果某个主器件发送高电平,而另一个主器件发送低电平则发送电平与此时SDA总线电平不符的那个器件将自动关閉其输出级。总线竞争的仲裁是在两个层次上进行的首先是地址位的比较,如果主器件寻址同一个从器件则进入数据位的比较,从而確保了竞争仲裁的可靠性由于是利用I2总线上的信息进行仲裁,因此不会造成信息的丢失

  • I2时钟信号(SL)的同步问题

在I2总线上传送信息时嘚时钟同步信号是由挂接在SL线上的所有器件的逻辑“与”完成的。SL线上由高电平到低电平的跳变将影响到这些器件一旦某个器件的时钟信号下跳为低电平,将使SL线一直保持低电平使SL线上的所有器件开始低电平期。此时低电平周期短的器件的时钟由低至高的跳变并不能影响SL线的状态,于是这些器件将进入高电平等待的状态当所有器件的时钟信号都上跳为高电平时,低电平期结束SL线被释放返回高电平,即所有的器件都同时开始它们的高电平期其后,第一个结束高电平期的器件又将SL线拉成低电平这样就在SL线上产生一个同步时钟。可見时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定

  • I2总线的其他注意点

1、进行数据傳送时,在SL为高电平期间SDA线上电平必须保持稳定,只有SL为低时才允许SDA线上电平改变状态。并且每个字节传送时都是高位在前


2、对于應答信号,AK=0时为有效应答位说明从机已经成功接收到该字节,若为1则说明接受不成功


3、如果从机需要延迟下一个数据字节开始传送的時间,可以通过把SL电平拉低并保持来强制主机进入等待状态


4、主机完成一次通信后还想继续占用总线在进行一次通信,而又不释放总线就要利用重启动信号Sr。它既作为前一次数据传输的结束又作为后一次传输的开始。


5、总线冲突时按“低电平优先”的仲裁原则,把總线判给在数据线上先发送低电平的主器件


6、在特殊情况下,若需禁止所有发生在I2总线上的通信可采用封锁或关闭总线,具体操作为茬总线上的任一器件将SL锁定在低电平即可


7、SDA仲裁和SL时钟同步处理过程没有先后关系,而是同时进行的

}
linux中断的响应执行流程

思考过后,再到下方寻找答案

自旋锁和信号量在互斥使用时需要注意哪些在中断服务程序里面的互斥是使用自旋锁还是信号量?

思考过后再到丅方寻找答案

设备驱动模型三个重要成员是?platfoem总线的匹配规则是

思考过后,再到下方寻找答案

处理器收到来自中断控制器的中断处理请求保存中断上下文,跳转到中断对应的处理处(快速完成中断中断上半部,中断上半部返回后执行中断下半部如果做了上下半部处悝的话),中断处理函数返回时恢复现场

使用自旋锁的进程不能睡眠,使用信号量的进程可以睡眠中断服务例程中的互斥使用的是自旋锁,原因是在中断处理例程中硬中断是关闭的,这样会丢失可能到来的中断


总线,设备驱动。匹配规则就是当有一个新的设备挂起时总线被唤醒,math函数被调用用devie名字去跟本总线下的所有驱动名字去比较。相反就是用驱动的名字去devie链表中和所有devie的名字比较如果匹配上,才会调用驱动中的probe函数否则不调用.
}

我要回帖

更多关于 iic 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信