- 博客(45)
- 资源 (23)
- 收藏
- 关注
原创 UNIX网络编程 -- 第十六章 ioctl操作
第十六章 ioctl操作 传统上ioctl函数是用于那些普遍使用,但不适合归入其他类别的任何特性的系统接口。Posix去掉了ioctl,它通过创建特殊的其功能已被Posix标准化的包裹函数来代替ioctl。这一章介绍和网络编程有关的ioctl操作。 1. ioctl函数 int ioctl(int d, int request, ...); 和网络有关的i
2010-03-31 09:15:00 1277
原创 网络控制
引言 文件描述符是低层的输入和输出接口。描述符可以表示到设备、管道或套接字的连接,这些连接用于与另一个进程或普通文件进行通信。I/O 控制 (ioctl) 函数调用可以用来对特殊文件的基础设备参数进行操作。它们可以完成与打开的文件描述符相关联的控制功能。这些命令涉及文件、流、普通数据链路控制以及其他各种设备。 本文将讨论 AIX Version 5.3 中提供的与网
2010-03-31 09:12:00 1210
原创 Linux内核的ioctl函数学习nework
一般的说,,用户空间的IOCTL系统调用如下所示: ioctl(int fd, int command, (char *) argstruct)因为这个调用拥有与网络相关的代码,所以文件描述符号fd就是socket()系统调用所返回的,而command参数可以是/usr/include/linux/sockios.h头文件中的任何一个,这些个命令根据它可以解决的问题所涉及的方面被分为多种
2010-03-31 09:03:00 1449
转载 Android单线程模型相关概念详解
我们今天将会在这篇文章中为大家详细介绍有关Android单线程模型的相关内容。希望初学者们可以通过本文介绍的内容对这一概念有一个充分的认识,并从中对这一系统有一个深刻的认识。当第一次启动一个Android程序时,Android会自动创建一个称为“main”主线程的线程。这个主线程(也称为UI线程)很重要,因为它负责把事件分派到相应的控件,其中就包括屏幕绘图事件,它同样是用户与Andri
2010-03-28 20:49:00 1327
原创 Android Native(JNI)層的多線程安全
一、Native 程式如何誕生子線程 在Java層的各進程(Process) 都有主線程(Main Thread),各線程皆可能誕生子線程。這些Java層的線程都有可能並行呼叫同一個Native函數,因而Native函數的線程安全考量是必要的。 Java線程一旦進入Native函數裡執行,在其執行過程中,也可能會誕生子線程,也可能多個線程並行執行同一個非Native的一般C/
2010-03-28 19:50:00 5071
原创 Android JNI 应用实例
Android的SDK中没有包括JNI的支持,而且对如何支持JNI也没有任何文档说明。不过既然整个Android平台是开源的,我们可以通过Google发布的源代码来找到一些线索(比如frameworks/base/media/jni/目录),依葫芦画瓢的实现上层JAVA程序通过JNI来调用Native C程序中的函数。 依照下面的步骤可以实现一个非常简单的JNI的实例程序: 1.
2010-03-25 20:51:00 1873
原创 Android上JNI的调试
Android的SDK中没有包括JNI的支持,而且对如何支持JNI也没有任何文档说明。不过既然整个Android平台是开源的,我们可以通过Google发布的源代码来找到一些线索(比如frameworks/base/media/jni/目录),依葫芦画瓢的实现上层JAVA程序通过JNI来调用Native C程序中的函数。 依照下面的步骤可以实现一个非常简单的JNI的实例程序: 1
2010-03-25 20:46:00 2725
原创 Android JNI知识简介
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。 1.从如何载入.so档案谈起 由于Android的应用层的类都是以J
2010-03-25 20:45:00 10563 1
原创 adr和ldr的区别
同学们在学习ARM指令时,多数都会对adr和ldr这两个命令产生疑惑,那他们究竟有什么区别呢?其实这两个都是伪指令:adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。可实际上adr是将基于PC相对偏移的地址值或基于寄存器相对地址值读取的为指令,而ldr用于加载32为立即数或一个地址到指定的寄存器中。到这儿就会看到其中的区别了。如果在程序中想加载某个函数或者某个在联接时候指定的
2010-03-24 13:41:00 3178
转载 Cortex系列ARM内核介绍
众所周知,英国的ARM公司是嵌入式微处理器世界当中的佼佼者。ARM一直以来都是自己研发微处理器内核架构,然后将这些架构的知识产权授权给各个芯片厂商,精简的CPU架构,高效的处理能力以及成功的商业模式让ARM公司获得了巨大的成功,使他迅速占据了32位嵌入式微处理器的大部分市场份额,甚至现在,ARM芯片在上网本市场的也大有与INTEL的ATOM处理器一较高低的实力。目前,随着对嵌入式系统的要求
2010-03-24 13:38:00 1224
原创 Linux socket 编程中存在的五个隐患
前言: Socket API 是网络应用程序开发中实际应用的标准 API。尽管该 API 简单,但是 开发新手可能会经历一些常见的问题。本文识别一些最常见的隐患并向您显示如何避免它们。 相关文档:《linux socket 编程》 在 4.2 BSD UNIX® 操作系统中
2010-03-23 14:42:00 862
转载 Recovery简介
Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级。升级一般通过运行升级包中的META-INF/com/google/android/update-script脚本来执行自定义升级,脚本中是一组recovery系统能识别的UI控制,文件系统操作命令,例如write_raw_image(写FLASH分区),copy_dir(复制目录)。
2010-03-23 10:10:00 3001
转载 android dalvik vm oo
java.lang.Class&ClassObject 在java语言里的特殊的类java.lang.Class,它保存了类的信息。我们可以用它得到类的名字、成员、方法包括构造方法等等。举个例子,我们写java.lang.String stringClass=Class.forName(“java.lang.String”);于是我们得到了java.lang.Class的一个实例,它存
2010-03-17 10:53:00 2104
转载 Dalvik opcodes
栈的增长方向以及某一瞬时可能的数据结构表示 OP_NOP 什么也不做OP_GOTO +AA 向前移动AA个16bit的指令处继续执行OP_GOTO_16 +AAAA 向前移动AAAA个16bit的指令处继续执行OP_GOTO_32 +AAAAAAAA 向前移动AAAAAAAA个16bit的指令处继续执行 OP_INT_TO_LONG *((long*)&v[v
2010-03-17 10:51:00 2112
转载 android dalvik vm alloc
gagbage collection:为了跟踪对象的使用情况,必须知道内存中的对象是否在被使用,这就需要一个标志指示对象是否正在使用,也就是mark bits。一种方案是每个对象有自己相关联的mark bits。还有一种是将对象和mark bits分开,有独立的存放mark bits的内存区域。当你将mark bits 与对象一起存放的时候,就会消耗更多的缓冲区。当你将mark bits分
2010-03-17 10:47:00 2990
转载 Flexible Architecture for Simulation and Testing (FAST)
We are at the point in the area of multithreaded microprocessor architectures where further progress will require the development of a hardware prototype. This prototype should support more than two
2010-03-15 11:42:00 1159
转载 多处理器和多线程技术分析
对于无线系统设计工程师来说,清楚地了解单处理器上的多线程(MT)和利用多处理器(MP)处理之间的差异至关重要。蜂窝电话是首个实现了双核设计的大批量应用,然而双核实现对于许多需要高性能、低功耗的无线应用同样适用。 当然MP和MT的话题同样适用于除无线电之外的许多系统。最普遍的误解是,MP和MT处理器是具有同等软件复杂度的相当的技术。这一点应该会引起许多设计工程师的兴趣。 重新考虑
2010-03-15 10:28:00 1527
转载 ARM多核和MIPS多执行绪嵌入式处理器技术剖析
在嵌入式装置中建置多核心(包含同质或异质)以及多执行绪技术,的确能带来诸多效益,尤其是改进系统效能方面最为明显。 尽管RISC嵌入式技术所面临的挑战越来越多,但是在维持以往嵌入式软件资源兼容性的前提之下,能够改善其未来适用性,并且有效提升新系统的效能表现,使其不失为良好的解决方案。 应用决定多核或多绪 多核心与多执行绪在效能表现上有其帮助,但是效能与
2010-03-15 09:33:00 1912
原创 MIPS与ARM RISC的简单对比
1.流水线结构 pipeline - MIPS 是最简单的体系结构之一,所以使大学喜欢选择 MIPS 体系结构来介绍计算体系结构课程。 - ARM has barrel shifter shifter是两面性的,一方面它可以提高数学逻辑运算速度,另一方面它也增加了硬件的复杂性。所以和可以完成同样功能的adder/shift register相比,效率更高,但是也
2010-03-15 09:11:00 2171
转载 Android 技术专题系列之十七 -- volume 服务
Android 的volume服务主要是用来管理usb/sd卡 等外部存储设备。平台可以对外部存储设备进行操作和轮询状态,当外部存储设备状态发生变化时,volume 服务也会即时报告平台。相关代码主要位于:system/core/voldframeworks/base/services/java/com/android/server/MountListener.javaframeworks/bas
2010-03-11 18:35:00 2159 2
原创 生活小常识
一、 内 科 1、 初起感冒:葱白(连须)、生姜片5钱、水一碗煎开、加适量红糖乘热一次服下(葱姜不需服下),并马上睡觉,出汗即愈。 2、 多日感冒:白天用法同第一条,另外,要在晚上睡觉前,用大蒜头捣成糊状,敷两足心(涌泉穴,每足心敷黄豆粒大即可),用布包好,次日晨揭去,连用2-3天即愈。 3、 头痛(各种头痛均可):生白萝卜汁,每次滴鼻孔两滴(两鼻孔都滴),一日两次,连用4-5天,可除根。忌吃花椒
2010-03-11 14:22:00 1036
转载 exit、 _exit、 atexit区别
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函
2010-03-10 17:03:00 1770
转载 Android 技术专题系列之九 -- 图形系统
本文试图讲述Android图形系统的底层实现。Android图形系统底层实现非常复杂,文档较少,没有使用比较流行的图形组建如X window, Cairo等。Android中的图形系统采用Client/Server架构。Server (即SurfaceFlinger)主要由c++代码编写而成。Client端代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由c++写成的底
2010-03-10 15:11:00 1224
转载 Linux图形界面中客户端、服务器、窗口管理器之间的关系
一、Linux操作系统和图形的关系linux本身没有图像界面,linux现在的图像界面的实现只是linux下的应用程序实现的。图像界面并不是linux的一部分,linux只是个基于命令行的操作系统。Linux内核为linux系统中的图形界面提供了显示设备驱动。二、X的概念X 是协议,就像HTTP协议,IP协议。这个概念很多初学者甚至学习LINUX有一定时间的人都混淆,一个基于X的应
2010-03-10 15:02:00 1363
转载 DirectFB窗口管理器(unique)研究笔记
转载时请注明出处和作者联系方式作者联系方式:李先静 DirectFB自带有两个窗口管理器:default和unique,可以在配置文件中用wm=xxx来选择用哪一个作为当前的窗口管理器。两个窗口管理器的功能都很简单,与桌面环境流行的窗口管理器几乎没有可比性。尤其是前者,提供的功能更是简陋,仅仅是管理一下窗口栈而已。后者虽然简陋,但其架构设计还算不错,很容易在上面扩展自己需要的功能。什么是窗口管理器
2010-03-10 15:01:00 1406
转载 DirectFB代码导读
DirectFB代码导读 转载时请注明出处和作者联系方式作者联系方式:李先静 DirectFB是一个庞大的系统,对它进行彻底分析要花不少时间。幸好多数情况下,只要弄清楚它的基本架构,再重点读一些关键的代码,也就差不多了。前几个月为了完善DFB的窗口管理器,我花了一些时间去研究DFB的架构。把其中一些经验写到这里,供有兴趣的朋友参考。
2010-03-10 14:58:00 2274
原创 DirectFB介绍
n 简介DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的开源图形库,它集成了支持半透明的视窗系统以及在Linux Framebuffer驱动之上的多层显示。当底层硬件无法完成某些图形算法时,都可以使用该库提供的相应软件封装进行替代。DirectFB是为嵌入式系统而设计,它以最小的资源开销来实现最高的硬件加速性能。n 特性
2010-03-10 14:56:00 2488
转载 linux 动态加载 动态链接库
动态库的显式调用显式调用的含义是代码出现库文件名,用户需要自己去打开和管理库文件。其要点为:⑴把dlfcn.h系统头文件包含进来⑵用dlopen函数打开库文件,并指定打开方式dllope的的第一个参数为共享库的名称,将会在下面位置查找指定的共享库。 ①环境变量LD_LIBRARY_PATH列出的用分号间隔的所有目录。 ②文件/etc/ld.so.cache中找到
2010-03-10 11:46:00 1401
原创 setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已经处于连接状态的soket在调用closesocke
2010-03-10 09:56:00 1230
转载 android之handler使用--对于异步消息的处理
android里面对于异步消息的处理,提供了一套Handler的实现方案。Handler有很多适宜的应用和微妙之处,使它在和Thread以及Service等一起使用的时候达到很好的效果。一. Handler与Thread的区别。Handler与调用者处于同一线程,如果Handler里面做耗时的动作,调用者线程会阻塞。Android UI操作不是线程安全的,并且这些操作必须在UI线程
2010-03-10 09:42:00 1192 1
转载 Linux2.6 内核的 Initrd 机制解析
1.什么是 Initrd initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 init
2010-03-09 15:21:00 1098
转载 kernel initrd & ramfs
在早期的Linux系统中,一般就只有软盘或者硬盘被用来作为Linux的根文件系统,因此很容易把这些设备的驱动程序集成到内核中。但是现在根文件系统可能保存在各种存储设备上,包括SCSI, SATA, U盘等等。因此把这些设备驱动程序全部编译到内核中显得不太方便。在Linux内核模块自动加载机制的介绍中,我们看到利用udevd可以实现实现内核模块的自动加载,因此我们希望根文件系统的设备驱动程序
2010-03-09 15:17:00 2744
转载 ramfs,tmpfs, rootfs and initramfs
ramfs是什么ramfs是一个非常简单的文件系统,它输出Linux的磁盘缓存机制(页缓存和目录缓存)作为一个大小动态的基于内存的文件系统。通常,所有的文件由Linux被缓存在内存中。页的数据从保持在周围以防再次需要的后备存储(一般被挂载的是块设备文件系统)中读取,并标记为可用(空闲)以防虚拟内存系统(Virtual Memory System)需要这些内存作为别用。类似的,在数据写回后备
2010-03-09 15:06:00 1352
转载 ramfs,tmpfs, rootfs and initramfs
ramfs是什么ramfs是一个非常简单的文件系统,它输出Linux的磁盘缓存机制(页缓存和目录缓存)作为一个大小动态的基于内存的文件系统。通常,所有的文件由Linux被缓存在内存中。页的数据从保持在周围以防再次需要的后备存储(一般被挂载的是块设备文件系统)中读取,并标记为可用(空闲)以防虚拟内存系统(Virtual Memory System)需要这些内存作为别用。类似的,在数据写回后备存储时,
2010-03-09 14:55:00 7378
转载 【简介】如何编写linux下nand flash驱动-2
version: 1.0date:20090721Author:crifanMail:green-waste(At)163.com 上接:【简介】如何编写linux下nand flash驱动-1http://green-waste.blog.163.com/blog/static/3267767820096221127554/ 【读(read)操作过程详解】
2010-03-09 14:51:00 1400
转载 如何编写linux下nand flash驱动-1
【简介】如何编写linux下nand flash驱动-1version: 1.0date:20090721Author:crifanMail:green-waste(At)163.com【编写驱动之前要了解的知识】1. 硬件特性:【Flash的硬件实现机制】Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile M
2010-03-09 14:48:00 1218
原创 嵌入式系统文件系统比较
Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、 iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。 Linux下的文件系统结构如下: Linux启动时,第一个必须挂载的是根文件系统;若系统不能从
2010-03-06 14:02:00 1141
原创 linux时钟jiffies及其相关
在LINUX的时钟中断中涉及至二个全局变量一个是xtime,它是timeval数据结构变量,另一个则是jiffies,首先看timeval结构struct timeval{time_t tv_sec; /***second***/susecond_t tv_usec;/***microsecond***/}到底microsecond是毫秒还是微秒??1秒=1000毫秒(3个零),1秒=10
2010-03-03 10:11:00 7000
原创 Linux Platform Device and Driver
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_registe
2010-03-03 10:05:00 2197 1
原创 The Linux USB Input Subsystem, Part I
The Linux USB input subsystem is a single, harmonized way to manage all input devices. This is a relatively new approach for Linux, with the system being partly incorporated in kernel version 2.4
2010-03-01 14:31:00 1374
WebKit 研究报告(侯炯)
2012-05-10
ALSA 驱动架构说明
2012-04-06
Android 高效编程注意事项
2012-04-06
android系统vold透析
2012-04-06
android 核心学习资料
2010-09-09
MPEG-2 压缩编码技术原理应用
2010-05-12
Pthreads Programming
2010-03-24
The Linux Kernel API
2010-03-24
The Linux TCP/IP Stack: Networking for Embedded Systems
2010-03-24
usb 鼠标驱动注解及测试
2010-03-24
用 FPGA 如何自己设计 CPU 和制作计算机
2010-03-24
avs 标准文档中的源码
2009-10-13
项目管理知识体系指南
2009-10-06
PMP项目管理原版书籍
2009-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人