Welcome 微信登录

首页 / 操作系统 / Linux

Linux动态链接库加载初探

Linux动态链接库加载初探

在基于GNU glibc的系统里,包括所有的linux系统,启动一个ELF格式的二进制可执行文件会自动启动和运行一个program loader。对于Linux系统,这个loader的名字是/lib/ld-linux.so.X(X是版本号)。这个loader启动后,反过来就会load所有的其他本程序要使用的共享函数库。 到底在哪些目录里查找共享函数库呢?这些定义缺省的是放在/etc/ld.so.conf文件里面。我们可以修改这个文件,加入我们自己的一些特殊...
Linux Kernel中的免锁算法

Linux Kernel中的免锁算法

在《LINUX设备驱动程序》(第三版)有几页对免锁算法的实现进行了分析。对于作者的分析有两点我想在这里作更加细致的说明。一是作者对循环缓冲的分析,当缓冲区满时分析错了;二是作者没有对里面的实现技巧作详细的介绍。针对以上两点,本文就用2.6.11(2.6.10和2.6.11是一样的)的kfifo.h和kfifo.c代码实现的免锁算法进行较为详细的分析。对于临界区的访问一般的做法是在访问前加锁,退出访问时解锁,在加锁的过程中可能会有漫长的等待时间,也因此可能会...
单片机和嵌入式系统Linux的区别

单片机和嵌入式系统Linux的区别

随着嵌入式行业硬件平台的性能增强,项目需求和功能日益复杂,ARM公司推出的 CORTEX-M3,更是让以往做单片机的工程师在芯片和技术选型面临两难选择,本专题将从芯片价格、整个系统的硬件软件设计及维护的成本等各个方面给您提供一个参考, 并从技术角度分析单片机和带操作系统的系统的软件开发的异同点。●1.单片机与ARM等新处理器的价格比较●2.带操作系统与不带操作系统的软件开发的区别●2.1.驱动开发的区别●2.2.应用程序开发的区别1. 单片机与ARM等新处...
嵌入式 Linux智能终端菜单界面设计

嵌入式 Linux智能终端菜单界面设计

低成本的单色LCD在工业领域应用非常广泛,英利公司提供的基于嵌入式Linux平台的EM9160支持外接单色LCD屏,目前应用得比较多的规格包括有LCD320x240、LCD240x128、LCD128x64、LCD160x160等。在实际应用中有许多对于菜单界面操作的需求,需要客户根据应用的具体要求自行构建菜单显示界面,本文将重点介绍这方面的内容。 基于菜单界面操作过程实质一个简单的交互式操作,需要实时响应键盘消息、定时消息等。嵌入式Linux操作系统是...
ARM Linux多连接TCP服务器的应用程序设计

ARM Linux多连接TCP服务器的应用程序设计

嵌入式Linux工控主板EM9160的主要功能之一就是作为网络平台,工控领域中比较常见的网络应用是利用TCP/IP协议进行数据通讯。在网络应用中,通常都实现多连接的应用需求,本文主要介绍EM9160作为TCP服务器方式的应用——支持多连接的TCP服务器示例程序:Step3_TCPServer。TCP Socket编程在进行网络应用程序开发方面大多是采用套接字Socket技术,嵌入式Linux的系统平台上也是如此。Socket编程的基本函数有socket( ...
彻底解决Linux启动无输出问题

彻底解决Linux启动无输出问题

做嵌入式Linux移植,最常见也最郁闷的问题,就是自己新做的内核镜像,还没有神马把握,,就要忐忑不安地烧到板子上去测试。这个时候,我宁愿它突出一堆oops,甚至panic,心里觉得舒坦些。可是它要啥都不吐,那就抓瞎了。这种情况,就是printk缓冲区的信息准备好了,但是串口console初始化失败或者还没执行,printk内存缓冲区吐不出来造成的。一般内核开启会打印Linux version 2.6.xx (gcc version 4.2.2) #47 P...
Android 调试.so库文件

Android 调试.so库文件

调试步骤如下:1/ 将异常的地址信息存到文本文件,并存放在项目根目录;2/ 使用panic.py解析该文件;3/ 根据返回的信息(文件名;行号;方法名)调试程序。以操作第三方的Touch input 输入法为例,过程如下:# 该输入法的英文和手写OK,操作中文输入法时,出现异常,软键盘消失,异常日志如下02-05 06:41:19.834 D/dalvikvm( 751): Trying to load lib /system/lib/libimezi.s...
Android Widget 设计与开发

Android Widget 设计与开发

Widget杂谈:最早Widget是指在PC的桌面上的小窗口程序;Web上的先行者似乎是Yahoo!;当然,OPhone也搞了一套Widget,HTML+CSS的东东。我们这里谈的所谓Widget,就是窗口小部件,Android SDK从1.5版本开始支持AppWidget framework,返个框架允许开发者开发Widgets,这些Widgets可以被用户通过长按桌面进行添加,与应用程序进行数据交互。需求:在桌面上开发一个Widget,可以实时显示IM...
Android 安装软件后执行“OPEN”引起的Intent血案(系统BUG)

Android 安装软件后执行“OPEN”引起的Intent血案(系统BUG)

打开程序的入口有很多个:shell 命令行运行;Launcher待机界面执行;状态通知栏运行;桌面快捷方式运行;软件中调用运行;安装软件后执行“OPEN”运行!前面几项,调用程序的代码如下(参考:com.Android.Launcher/.Launcher.java):view plaincopy to clipboardprint?Intent intent = new Intent(this, TestActivity.class); intent.s...
Android 离线用户的灰色头像处理

Android 离线用户的灰色头像处理

主要涉及两个技术点:1、图标加灰色过滤;2、Android的图片资源默认是静态的,单实例;如果两个IM好友的头像一样,最简单的都是用的软件自带头像,有一个在线,一个离线,直接改变头像的灰度,则两个用户的头像都会变灰或者在线,答案是:Drawable.mutate()。代码如下:view plaincopy to clipboardprint?Drawable mDrawable = context.getResources().getDrawable(R....
Android 软件的状态栏图标通知处理

Android 软件的状态栏图标通知处理

QQ的状态栏通知机制:当所有QQ的UI Activity切换到后台后,添加状态通知;切换回来后,删除该状态通知。飞信的状态栏通知方式:运行软件后,图标一直显示在状态栏的通知栏中;显示退出软件则删除该状态通知。似乎QQ的更有点技术含量,多个程序切换到后台的处理而已;以飞信的模式,做个类似的测试,案例如下:程序路径:org.anymobile.im程序入口:org.anymobile.im.LoginActivity(Action:Android.intent...
Linux Epoll的使用方法

Linux Epoll的使用方法

epoll的优势?这个可能大家都知道,我稍微提一下:1、每次调用epoll的侦听函数epoll_wait时,它只会返回确实有事件发生的那些套接字,而不会返回所有注册的套接字,显然,这个会增强效率,特别是对于那些有大量的套接字,但套接字大多时候是处于休眠状态的场景;2、能够支持大量的套接字的同时监管:理论上讲,epoll能够支持整形所能表示的最大数值个套接字的监管(但实际上,这个上限往往由于机器体系结构、内存限制、网络限制等而不能达到);3、epoll所特有...
Linux 2.6内核Epoll用法举例说明

Linux 2.6内核Epoll用法举例说明

epoll是linux 2.6加入的用于I/O事件多路分离的一组函数,这组函数简化了反应式socket服务器的编程,并且很大程度提高了性能。从一定程度上弥补了LINUX内核对异步I/O支持的不足,epoll机制加上非阻塞I/0可以模拟实现异步I/O。本文主要是说明如何使用epoll机制来编写一个echo服务器。epoll用到的所有函数都是在头文件sys/epoll.h中声明的,下面简要说明所用到的数据结构和函数:所用到的数据结构typedef union ...
Linux shell的优点和缺点

Linux shell的优点和缺点

通过对shell脚本的学习,完成实习所安排的第一个脚本任务,我也对Linux shell有了一些基本认识:一、优点方面:1.shell的语法和结构比较简单,易于掌握2.学习和使用也比较方便,上手比较容易3.常用命令也比较好记,不清楚的情况下,可以通过man命令迅速找到相关的说明4.shell是解释型语言,运行之前不需要编译5.文本处理方面,主要依赖于awk、sed这两把尖刀,能够方便快捷地处理相当复杂的问题6.程序开发的效率非常高,依赖于功能强大的命令可以...
Linux tty core 源码分析

Linux tty core 源码分析

本文以linux 2.6.27内核为基础,阅读tty core 源码并作注解,自己接触时间不长,希望与爱好者共同分享,错误之处还望指正。linux tty core 是建立在字符设备驱动的基础之上,并为tty类型设备(串口、控制台、虚拟终端)提供一个公用的平台。所以任何一个tty设备驱动的注册都是作为一个字符设备驱动而操作的。下面我们看看代码中是如何处理的:/* 3/2004 jmc: why do these devices exist? *///tty...
Linux serial构架分析及驱动开发

Linux serial构架分析及驱动开发

前面介绍了tty核心分析及tty驱动开发的方法,tty设备包括串口、终端、伪终端三大类,其中终端和伪终端驱动内核都帮我们实现好了,很少需要改动。因此我们主要介绍串口驱动的开发及其在内核中的构架(其核心实现源码主要在/drivers/serial_core.c中),这一节中我们主要分析向内核中加入一个serial驱动用到的数据结构。 serial core是构建在tty core之上的。注册一个串口驱动即在tty core层注册一个tty驱动。下面我们看看串...
<< 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 >>