- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 Fedora20 yum update 自动升级后virtualbox无法启动
Fedora20 yum update 自动升级后virtualbox无法启动提示:The VirtualBox Linux kernel driver (vboxdrv) is probably not loaded.If you installed or VirtualBox package recently you need to restart the computer for
2014-02-08 10:09:48 2429
原创 mkimage: invalid entry point -k 错误
最近编译内核和uboot都会提示mkimage: invalid entry point 错误,再另外部机器上正常编译。调试发现出错makefile部分 KRN_SIZE=`expr $$ISIZE - $$RSIZE + 64` ; \ ENTRY=`readelf -h $(ROOTDIR)/$(LINUXDIR)/vmlinux | grep "Entry" | awk '{pri
2013-12-01 14:29:09 4352 4
原创 linux驱动学习之并发和竞争控制
linux驱动学习之信号量和互斥体 在驱动程序中,当多个线程同时访问相同的资源时(全局变量或硬件资源),可能会引发竞态因此我们必须对共享资源进行并发控制。linux内核中解决并发控制的最常用方法是自旋锁与信号量。一 信号量 1965年,荷兰学者Dijkstra提出了利用信号量机制解决进程同步问题,信号量正式成为有效的进程同步工具,现在信号量机制被广泛的用于单处
2012-12-20 15:42:57 3750
原创 linux驱动学习之内核线程分析
内核线程和普通的进程间的区别在于内核线程没有独立的地址空间,它只在 内核空间运行,从来不切换到用户空间去;并且和普通进程一样,可以被调度,也可以被抢占。 一 线程的创建 struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[], ...
2012-12-13 17:29:37 13602 1
原创 linux驱动学习之内核定时器使用
内核定时器是内核用来控制在未来某个时间点调度执行某个函数的一种机制,而且是处于中断上下文中,所以调度函数必须遵守以下规则:1) 没有 current 指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。2) 定时器函数必须是原子的,不能进行睡眠或者调度. 原子代码不能调用 schedule 或者某种 wait_event, 也不能调用任何其他可能睡眠的函数.
2012-12-12 19:17:14 3128
原创 linux驱动学习之工作队列使用
工作队列是一种将工作推后执行的形式,交由一个内核线程去执行在进程上下文执行,其不能访问用户空间。最重要特点的就是工作队列允许重新调度甚至是睡眠。工作队列子系统提供了一个默认的工作者线程来处理这些工作。默认的工作者线程叫做events/n,这里n是处理器的编号,每个处理器对应一个线程,也可以自己创建工作者线程。 1.工作的定义 typedef void (*work_f
2012-12-12 14:29:26 5620
原创 linux驱动学习之tasklet分析
tasklet是中断处理下半部分最常用的一种方法,驱动程序一般先申请中断,在中断处理函数内完成中断上半部分的工作后调用tasklet。tasklet有如下特点:1.tasklet只可以在一个CPU上同步地执行,不同的tasklet可以在不同地CPU上同步地执行。2.tasklet的实现是建立在两个软件中断的基础之上的,即HI_SOFTIRQ和TASKLET_SOFTIRQ,本质上没有什
2012-12-10 17:20:14 7611 1
原创 linux shell笔记之sed
这篇记录一下sed的基本用法,建议看下sed与awk第三版里面介绍的很详细,sed通过正则表达式匹配出命令处理文本,如果对正则不熟悉是件很头疼的事。注意以下脚本都是在脚本文件上测试的使用命令sed -f scrift files 1.sed先读取一行至模式空间,取前先清除以前模式空间内容(多行模式下读取命令N除外),脚本从脚本顶部开始处理模式空间的内容,处理一条命令更新模式空间内容,
2012-12-07 11:31:56 3663
原创 linux驱动学习之异步通知
异步通知是设备状态改变后主动通知应用程序,这样应用程序就不需要阻塞或查询设备了。应用通过信号来处理内核的异步通知,上次使用poll select来查询设备的可读状态,下面这个例子类似,不同的是当设备有数据时主动通知应用去读数据。 应用的C代码很简单,主要设置对信号的处理方式,内核有数据时会收到SIGIO信号,应用会自动调用signal设置的函数去读数据。 main.c#i
2012-12-05 11:13:01 2024
原创 linux shell笔记之awk1
一 分隔符1.单个分隔符(例将11:22:33字符串取出11 22 33) echo 11:22:33 | awk 'BEGIN{FS=":"};{print $1" "$2" "$3;};'2.定义多个分隔符(例将11:22#33&44字符串取出11 22 33 44) echo '11:22#33&44' | awk 'BEGIN{FS="[:#&]"};{prin
2012-12-03 18:10:06 2179
原创 linux 驱动学习之poll与select
在使用socket或串口的时候应用代码经常使用select来判断有没接收到数据,驱动需要做什么处理,应用层用户才能正确判断有数据收到并读取数据呢?使用select能够监视我们需要监视的文件描述符的变化情况——读写或是异常。 先建立简单模型,应用使用select监听设备是否可读,当设备可读将数据读出后继续监听。已经有了一个监听设备可读状态的进程,还要打开终端使用echo xxx >/
2012-12-03 18:04:42 2239
原创 linux 驱动学习之阻塞 I/O
为了将进程以一种安全的方式进入休眠,我们需要牢记两条规则:一、永远不要在原子上下文中进入休眠。二、进程休眠后,对环境一无所知。唤醒后,必须再次检查以确保我们等待的条件真正为真测试例子只是针对休眠的几个函数,例子本身没什么意义。测试例子在读的时候休眠直到条件满足后唤醒,再写的时候唤醒一个等待读的进程如果有进程在读的话。static DECLARE_WAIT_QUEUE
2012-11-30 18:18:32 2268
原创 linux驱动学习之ioctl接口
这里先用例子介绍一下ioctrl接口的使用, 应用层的ioctl函数传入的cmd和arg参数会直接传入驱动层的ioctl接口,ioctl接口的命令有一定规范详细查看ioctl-number.txt文件,这里命令的定义不在规范内,先看下面测试的例子,驱动只实现ioctrl接口并使用ioctl修改和读取内核中的一个整型参数为例,使用两个不同方式读取(值传递和地址传递)。 应用程序测试代
2012-11-30 09:44:54 14005 3
原创 linux驱动学习之旗标的使用
下面简单介绍一下旗标的使用,介绍如何在任何时间只有一个执行线程可以操作一个共享资源,首先介绍一下模型,首先用c写一个测试应用创建5个进程去打开一个设备,没加旗帜时5个进程同时打开使用完后关闭,加了旗帜后每次只能打开一个,其他进程等待设备使用完后才能操作,模板使用上次介绍的模板。测试c代码,创建5个进程打开同时打开设备#include #include #includ
2012-11-28 15:48:29 2712
原创 linux驱动学习之字符设备驱动模板
今天整理了一下字符设备驱动的模板,工程分开3个文件.main.c 驱动加载初始化工作。loadmod.c 提供安装和卸载驱动的函数。fileops.c 文件操作函数。Makefile#KERNELDIR = /home/fontlose/board/tx2416/kernelsom2416KERNELDIR = /usr/src/kern
2012-11-27 17:24:23 2768
原创 linux驱动开发之自动创建设备节点
在有2.6系列版本中支持udev管理设备文件可以方便的创建设备节点,不必使用mknod来创建,本文使用最小编码来说明创建的几个方法。//主要用到的四个方法在linux/device.h定义://创建类和释放类的函数 创建成后将创建/sys/class/name文件夹extern struct class *class_create(struct module *owner
2012-11-26 15:05:07 6196 1
原创 android常见问题之jni读取assets资源文件(附源码)
assets目录底下的文件会被打包到一个apk文件里,这些资源在安装时他们并没被解压,使用时是直接从apk中读取的。这里介绍下怎么在jni内使用ndk自带api的接口函数读取assets资源文件,和libzip库函数的使用,可以用来读创建修改压缩文档,这里也是以读取apk安装包内
2011-08-14 16:11:24 22043 4
原创 Android 常见问题之Assets文件大小限制
Android Asset Packaging Tool(aapt)使用这个工具可打包所有数据 Image XML文件 任何资源文件.在生成APK时aapt选择性的压缩各种资源来节省设备空间,aapt使用后缀来决定哪个资源需要压缩,aapt源码定义一些不需要压缩的文件后缀。附aa
2011-08-07 20:21:48 10193
原创 Android Native C 之 Helloworld的四种编译方式
一.编写helloworld.c Android.mk [root@fontlose jni]# cat hello.c #include int main(){ printf("Hello World!\n"); return 0;}
2011-08-07 13:04:04 17128 6
转载 Android-NDK开发之基础--Android JNI开发高级篇(JNI中的常用方法)
有关Android JNI开发中比较强大和有用的功能就是从JNI层创建、构造Java的类或执行Java层的方法获取属性等操作。 一、类的相关操作 1. jclass FindClass(JNIEnv *env, const char *name); 查找类
2011-07-12 14:59:14 10907
原创 Android 查看本机外网IP
String GetNetIp(String ipaddr){ URL infoUrl = null; InputStream inStream = null; try { infoUrl = new
2011-07-07 20:10:28 10420 15
原创 mini6410下移植apache
一 环境 fedora 14 gcc 4.5.1 arm-linux-gcc 4.4.1 apache_1.3.39二 编译过程1. 从http://www.apache.org/ 上下载apache_1.3.39.tar.gz,然后解压缩两次,两个目录命名为apache_1.3.39_x86和apache_1.3.39_arm。2.进入apa
2011-06-12 12:35:00 4000
原创 mini6410下移植sqlite3.7.6.3
1、 下载SQLite 3.7.6.3,http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz2 、 解压到某个文件夹下3 、 配置,这里安装到当前文件夹下的sqlite下./configure CC=/usr/local/arm/4.4.1/bin/arm-linux-gcc –prefix=./sqlite --disable
2011-06-11 20:58:00 2469 2
原创 Linux 下使用Source Insight
1.下载安装wine(省略) 2.我的Source Insight 是绿化版的 主要是将Install.reg文件导入注册表 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE/SOFTWARE/Source Dynamics/Source Insight/3.0/Install] "SetupAdminOK"=
2011-06-06 11:11:00 2118
原创 Android创建XMl文件
/*生成xml格式字符串*/public String WriteXmlStr(){ XmlSerializer serializer = Xml.newSerializer(); StringWriter writer = new StringWriter(); try { serializer.setOutput(writer); serializer.s
2011-06-03 11:55:00 7554 2
翻译 Using Shared Preferences
The SharedPreferences class provides a general framework that allows youto save and retrieve persistent key-value pairs of primitive data types. You can use SharedPreferences to save any primitive data: booleans, floats, ints, longs, andstrings. Th
2011-05-18 09:33:00 1442
原创 自定义控件在布局文件中使用的方法
<br />自定义控件想在布局文件中使用如下方法<br />1 定义自己的控件类这里使用pqw.view.MyView类<br />2 在布局文件中定义格式如下<br /><br /><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:orientation="vertical"<br /> android:layout_width="fill_paren
2011-05-17 14:04:00 2755
转载 Linux下gcc编译中关于头文件与库文件搜索路径相关问题
<br />如何指定GCC的默认头文件路径<br />网上偶搜得之,以之为宝:)<br />原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631<br />===============================================================================<br /><br />在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-I”来指定头文件目录,但是每次都需要
2011-05-09 12:39:00 2850
原创 fedoa14安装kscope-1.6.2
<br />Kscope相当于windows下的Source Insight,系统自带的kscope报错打不开,还是自己动手丰衣足食。<br />http://download.chinaunix.net/download.php?id=28565&ResourceID=5469<br />下载解压后进入kscope-1.6.2目录,查看INSTALL安装说明安装如下:<br />1. ./configure<br /><br />问题:error: The important progra
2011-05-08 07:16:00 6013
转载 Fedora yum命令详解
<br />总所周知,Redhat和Fedora的软件安装命令是rpm,但是用rpm安装软件最大的麻烦就是需要手动寻找安装该软件所需要的一系列依赖关系,超级麻烦不说,要是软件不用了需要卸载的话由于卸载掉了某个依赖关系而导致其他的软件不能用是非常恼人的。令人高兴的是,Fedora终于推出了类似于ubuntu中的apt的命令yum,令Fedora的软件安装变得简单容易。<br />yum有一下特点:<br />*可以同时配置多个资源库(Repository)<br />*简洁的配置文件(/e
2011-05-07 17:36:00 1999
原创 linux C文件操作相关
一 递归获取文件及其子文件#include #include #include #include #include #include int readir(const char * path){ DIR * dir; struct dirent * ptr; char *newPath; printf("Search Path name: %s/n/n",path); if ((dir = opendir(pa
2011-05-06 17:43:00 2031
转载 awk的使用
Table of Contents1. awk简介2. awk命令格式和选项2.1. awk的语法有两种形式2.2. 命令选项3. 模式和操作3.1. 模式3.2. 操作4. awk的环境变量5. awk运算符6. 记录和域6.1. 记录6.2. 域6.3. 域分隔符7. gawk专用正则表达式元字符8. POSIX字符集9. 匹配操作符(~)10. 比较表达式11. 范围模板12. 一个验证passwd文件有效性的例子13. 几个实例14. awk编程14.1. 变量14.2. BEGIN模块14.3.
2011-05-04 11:32:00 2669
转载 Linux find常见用法例子
find path -option [ -print ] [ -exec -ok command ] {} /;#-print 将查找到的文件输出到标准输出#-exec command {} /; —–将查到的文件执行command操作,{} 和 /;之间有空格#-ok 和-exec相同,只不过在操作前要询用户====================================================-name filename #查找名为filename的文件-perm
2011-05-03 10:30:00 1121
原创 Android模拟器使用WVGA800时显示半屏居中
<br />如图显示:<br /> <br /> <br />在使用大显示屏是需要在AndroidManifest.xml的<manifest>内申明<supports-screens android:largeScreens="true"/><br /> <br />supports-screens有以下属性用于指定应用程序支持的显示屏尺寸。<br /> <br /><supports-screens android:smallScreens =["true" | "false"] <br />
2011-04-27 16:36:00 3264
原创 fedora14下编译qtopia问题
<br />主要用strrchr函数时,从类型‘const char*’到类型‘char*’的转换无效,新版本g++不支持报错了。<br /><br />错误1:<br /> backend/vobject.cpp: In function ‘VObject* addGroup(VObject*, const char*)’:<br /> backend/vobject.cpp:419: error: invalid conversion from ‘const char*’ t
2011-04-26 15:41:00 5491 5
原创 android ScrollView 和 HorizontalScrollView 的使用
<br />ScrollView 和 HorizontalScrollView 同时存在时一次触摸移动要么只能在垂直方向滚动或水平方向滚动。<br /> <br />程序代码<br />packagepqw.scrollview;<br />import java.io.BufferedInputStream;<br />import java.net.URL;<br />import java.net.URLConnection;<br />import org.apache.http.util.Byte
2011-04-21 17:04:00 117 1
原创 android ScrollView 和 HorizontalScrollView 的使用
<br />ScrollView 和 HorizontalScrollView 同时存在时一次触摸移动要么只能在垂直方向滚动或水平方向滚动。<br /> <br />程序代码<br />packagepqw.scrollview;<br />import java.io.BufferedInputStream;<br />import java.net.URL;<br />import java.net.URLConnection;<br />import org.apache.http.util.Byte
2011-04-21 17:03:00 1780 1
原创 android响应事件的三种方式
ScrollView 和 HorizontalScrollView 同时存在时一次触摸移动要么只能在垂直方向滚动或水平方向滚动。程序代码packagepqw.scrollview;import java.io.BufferedInputStream;import java.net.URL;import java.net.URLConnection;import org.apache.http.util.ByteArrayBuffer;import org.apache.http.util.EncodingU
2011-04-21 17:03:00 3478
原创 Android Socket(TCP/IP) 通信
main.xml 代码 android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=
2011-04-21 16:18:00 11655
原创 MPlayer 安装
rpm -ivh http://rpm.livna.org/livna-release.rpmrpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpmrpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpmyum insatll mpl
2011-04-16 19:48:00 2878
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人