Welcome 微信登录

首页 / 操作系统 / Linux

在Android系统使用socket在Java层和native之间数据通信

在Android系统使用socket在Java层和native之间数据通信

Android是基于Linux的系统,系统底层机制基本上是相同的,因为分本地代码和java代码,并且是java代码通过jni调用本地代码执行。因为UDP报文发送是有局限的,局限就是当发送方的速度远远的超过接受方的时候,底层会大量的丢失数据,而且用UDP还会比较容易引起端口的阻塞,因此需要更加强大的类来实现类似的功能。LocalServerSocket和LocalSocket正是在这样的情况下产生的,是以UNIX空间为缓冲区来进行数据的存储的.实例一:Nat...
Linux驱动子系统之输入子系统

Linux驱动子系统之输入子系统

[内容概要]介绍了input-subsystem的三个组成部分,并对主要结构体和函数进行了分析以及它们如何关联。[概述]内核的输入子系统是对分散的、多种不同类别的输入设备(如键盘、鼠标、跟踪球、操作杆、触摸屏、加速计和手写板)进行统一处理的驱动程序。输入子系统带来的好处:统一了物理形态各异的相似的输入设备的处理功能。例如,各种鼠标,不论是PS/2、USB,还是蓝牙,都做同样的处理;提供了用于分发输入报告给用户应用程序的简单的事件接口;抽取出了输入驱动程序的...
Linux驱动子系统之I2C

Linux驱动子系统之I2C

[概述]I2C总线是由Philips公司开发的两线式串行总线,这两根线为时钟线(SCL)和双向数据线(SDA)。由于I2C总线仅需要两根线,因此在电路板上占用的空间更少,带来的问题是带宽较窄。I2C在标准模式下传输速率最高100Kb/s,在快速模式下最高可达400kb/s。属于半双工。在嵌入式系统中,I2C应用非常广泛,大多数微控制器中集成了I2C总线,一般用于和RTC,EEPROM,智能电池电路,传感器,LCD以及其他类似设备之间的通信。[I2C总线传输...
Linux驱动设备模型之Platform

Linux驱动设备模型之Platform

[概述]一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、IIC、SPI等的设备而言,这自然不是问题,但是在嵌入式系统中,SoC系统中集成的独立的外设控制器,挂接在SoC内存空间的外设(IIC,RTC,SPI,LCD,看门狗)等却不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为platform总线,相应的设备称为platformdevice,而驱动称为platform driver。注意,所谓的pl...
Linux内核模块符号导出后无法调用问题

Linux内核模块符号导出后无法调用问题

Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。1. 符号导出函数EXPORT_SYMBOL()EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。EXPORT_SYMBOL_GPL()EXPORT_SYMBOL...
Linux 系统编程:几个宏定义

Linux 系统编程:几个宏定义

__init宏使内建模块中的init函数在执行完成后释放掉,仅用于初始化。编译器将所有代码存储到特殊的内存段中,初始化结束就释放这段内存。__initdata,和__init的作用基本上一样,不过它是针对数据。__exit和__exitdata 仅用于退出和关闭线程,一般在注销设备驱动程序时使用。likely和unlikely 的实现:#define likely(x) __builtin_expect(!!(x),1)#define unlikely(x...
Linux字符设备驱动入门

Linux字符设备驱动入门

先亮一下装备:平台:VMware 7.0 + Linux Ubuntu 3.0.0-12-generic编译器:gcc参考资料:LDD 3功能:实现简单的字符操作(从用户空间向内核空间写入一串字符;从内核空间读一个字符到内核空间) 众所周知,字符设备是linux下最基本,也是最常用到的设备,它是学习Linux驱动入门最好的选择,计算机的东西很多都是相通的,掌握了其中一块,其他就可以触类旁通了。在写驱动前,必须先搞清楚字符设备的框架大概是怎样的,弄清楚了流程...
Uboot下的DRAM的初始化

Uboot下的DRAM的初始化

在G870中,C版的SDRAM为128MB(DDR2),E版的SDRAM为64MB(MDDR),它们在系统存储空间的基地址都为0x8000_0000,具体见iMAX25RM的数据手册: 在uboot中,我们必须设置好这些参数,主要是基地址和SDRAM的大小等。这里主要采用到了uboot的一个全局的结构体变量: bd_t : board info数据结构定义,位于文件 include/asm-arm/u-boot.h。主要是用来保存板子参数。typedef ...
在Eclipse中配置NDK自动编译环境builders

在Eclipse中配置NDK自动编译环境builders

对于NDK的编译,切换到目标目录下,运行ndk-build脚本即可。对于使用Eclipse开发,我们希望EC能自动的编译我们的NDK,那么只需要为工程添加一个Builders即可。对于Windows的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK,所以为EC需要配置的builder,其实是执行Cygwin,然后传递ndk-build作为参数。在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build....
<< 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 >>