
AndroidPlatform LinuxEmbedded
文章平均质量分 88
Android Platform && Linux Embedded
chituhuan
这个作者很懒,什么都没留下…
展开
-
字符驱动学习四(异步通知 signal)
异步通知意思是:一旦设备就绪,则主动通知应用程序,这样应用程序不需要查询设备状态,类似硬件上的“中断”概念。准确的称谓是“信号驱动的异步I/O”.信号是在软件层次上对中断机制的一种模拟。 在驱动框架中需要实现xxx_fasync函数,主要涉及一个结构体 struct fasync_struct 和fasync_helper kill_fasync 两个函数。这个结构体和两个函数的声明在inc原创 2016-08-31 12:10:43 · 461 阅读 · 0 评论 -
vim 中 shell命令
:! command暂时离开 vi 到指令列模式下执行 command 的显示结果!例如:!ls bdev.c cdev.c cfifo.c cfifo.ko cfifo_poll_test.c Makefile modules.order test请按 ENTER 或其它命令继续:sh#进入shell命令行,执行完命令后ctrl+d退出重新进入vim编辑继续编辑在shell命令下,执行c原创 2016-08-31 12:10:41 · 652 阅读 · 0 评论 -
vi 中使用 man
Shift + k 打开光标所在函数的man手册 管理员在2009年8月13日编辑了该文章文章。 --> --> window._bd_share_config={"common":{"bdSnsK原创 2016-08-31 12:10:38 · 916 阅读 · 0 评论 -
vim中如何用鼠标跨窗口粘贴复制。
原来用ubuntu的时候VIM一直可以用鼠标中键跨窗口粘贴复制,但是一次虚拟机坏了,重装了以后,这个功能就不好使了。这样在VIM中写代码很影响效率,GOOGLE 了,终于找到了方法。首先安装gvim,这个是一定的。1.安装最新版本的vim :apt-get install vim2.安装gvim ,这个是一定的,跨窗口复制就要靠它了。apt-get install vim-gnome 或者apt原创 2016-08-31 12:10:10 · 5667 阅读 · 1 评论 -
在frambuffer 下画图
开启framebuff以后,测试framebuff。下边frambuffer.cpp程序修改自http://bbs.chinaunix.net/thread-1932291-1-1.html#。在此对 “曾有你的森林” 表示感谢。将发rambuff和skia结和起来。framebuff负责显示,skia负责绘图,这样就搭建起来一个简单的GUI系统。smem_start: 0xd0000000 表原创 2016-08-31 12:10:07 · 909 阅读 · 0 评论 -
Makefile 总结
一 Makefile 变量赋值 Makefile 赋值有四种方式,1. = 延迟赋值,或者称作展开赋值 变量等待 Makefile 完全展开后再确定实际的值x = $(y) 2y = 3$(warning $(2)) #at here x already is 3 2 z = 42. := 立即赋值,在Makefile 展开到这个位置时,立即赋值原创 2016-08-31 12:09:42 · 403 阅读 · 0 评论 -
LVM 方式安装Ubuntu 及使用
在虚拟机下使用Ubuntu会遇到磁盘空间不够使用的情况,服务器上多个多个磁盘,如何合理的划分磁盘的分区是一件头疼的事情。在Ubuntu14.04的安装过程中发现有LVM选项,网上搜了一下,发现是这个情况的完美解决方案。LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个物理硬盘的分区在逻原创 2016-08-31 12:09:21 · 19157 阅读 · 1 评论 -
VIM 去掉~M符号
由于DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,在Linux下经常能看到C文件或者TXT文件每行末尾都有一个^M符号,这个会导致shell脚本运行错误。 我们可以采用VI的编辑器命令进行删除。 利用VI的查找替换命令,将^M替换为空格符 (1):在VI的编辑模式下,ESC shilt + : 输入 g/\^M/s/\^M// 回车,就删除掉了。 (2):在VI的编辑模原创 2016-08-31 12:07:32 · 499 阅读 · 0 评论 -
使用Bash Shell快捷键
移动类Ctrl + a - Jump to the start of the line //跳到行首Ctrl + e - Jump to the end of the line //跳到行尾Ctrl + b - Move back a char //向前移动(一个字符)Ctrl + f - Move forward a char原创 2016-08-31 12:07:21 · 351 阅读 · 0 评论 -
带参数到内核模块
hellop.c 文件内容如下:/* * $Id: hellop.c,v 1.4 2004/09/26 07:02:43 gregkh Exp $ */#include linux/init.h>#include linux/module.h>#include linux原创 2016-08-31 12:07:18 · 469 阅读 · 0 评论 -
linux内核源码中常见宏标志tag
http://www.examda.com/linux/fudao/20100330/094653772.html 这些宏包括__init、__initdata、__initfunc()、asmlinkage、ENTRY()、FASTCALL()等等。它们的定义主要位于Include\linux\linkage.h和 include\asm-i386\Init.h以及其他一些.h文件中。原创 2016-08-31 12:07:05 · 674 阅读 · 0 评论 -
ubuntu 下 驱动开发环境
本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程 很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。所谓内核树,我的理解和网上资料说的一致就是内核源码的原创 2016-08-31 12:07:03 · 552 阅读 · 0 评论 -
udev实现原理
第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系, 把它当个助记符好了,有了下面的上路指南,可以节省很多时间。我们只需要树立一个信念:udev很简单! 嵌入式的udev应用尤其简单。 第二、为什么udev要取代devfs? 这是生产关系适应生产力的需要,udev好,devfs坏,用好的不用坏的。 udev是硬件平台无转载 2016-08-31 12:06:53 · 9726 阅读 · 0 评论 -
移植 unzip 工具
项目上要使用ZIP格式的压缩包,但是busybox自带的unzip工具不支持,移植了标准的unzip工具。1.下载地址是:http://sourceforge.net/projects/infozip/files/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz/download2.在察看根目录下的文件,configure Makefile原创 2016-08-31 12:06:50 · 1533 阅读 · 0 评论 -
configure 配置选项
最近移植一些第三方库,学习了configure配置文件生成Makefile。configure文件一般由autoMake工具生成,但是一些软件包的configure文件并不是由automake生成,需要察看帮助说明。root@ubuntu:/work/SKIA/3rdparty/jpeg-8b# ./configure --help`configure' configures libjpeg原创 2016-08-31 12:06:40 · 5027 阅读 · 0 评论 -
shell脚本编程
#case语句简单应用编程#输入大写字母A - D,输出相应的语句#Author:Lzy 时间:2011-4-15 #!/bin/bashecho -n "Input a chatacor A - D: " #输出不换行read IN #读入一个实际字符原创 2016-08-31 12:06:34 · 387 阅读 · 0 评论 -
Skia引擎API整理介绍(转载)
通过google, baidu,我们都很难搜索到关于skia引擎方面的文档,skia的官方wiki(http://code.google.com/p/skia) 也只有寥寥无几的文字简单介绍了SkCanvas, SkBitmap等几个主要的class,我通过分析源代码,查看jni接口对skia引擎的封装,总结和翻译了下面的一些文字,希望对想在 Android平台进行native画图的朋友有所帮助,原创 2016-08-31 12:05:50 · 718 阅读 · 0 评论 -
浅谈 Google Skia 图形处理引擎 (转载)
2008 年九月,Google 宣布以改良过的 WebKit 为核心的网络浏览器 Chrome,揭露了众多新特征,比方说崭新的 [V8] JavaScript (ECMAscript) 执行引擎,或许因为太亮眼,掩蔽了所使用另一个开放原始码项目 [skia], 后者是个 2D 向量图形处理函式库,包含字型、坐标转换,以及位图都有高效能且简洁的表现。不仅用于 Google Chrome 浏览器,新兴原创 2016-08-31 12:05:47 · 5611 阅读 · 0 评论 -
在Linux控制台下显示JPEG图像
1、引言通常情况下,在Linux控制台下是无法查看图像文件的,要想查看图像文件,比如要查看JPEG格式的图像文件,可能必须启动X-Windows,通过GNOME或者KDE之类的桌面管理器提供的图像查看工具查看图片内容。那么,能不能有办法在控制台下面简单地浏览图像内容呢。实际上,这是完全可以的。在Linux下有一个名为zgv的看图软件就是工作在控制台下的。不过,由于它所使用的底层图形库svgalib原创 2016-08-31 12:05:22 · 6048 阅读 · 0 评论 -
ubuntu 10.11 启动frambuffer
一:增加 16 17 两行root@ubuntu10:/etc# cat /etc/initramfs-tools/modules -n 1 # List of modules that you want to include in your initramfs. 2 # 3 # Syntax: module_name [args ...] 4 #原创 2016-08-31 12:05:19 · 377 阅读 · 0 评论 -
ubuntu 10.10 移植SKIA
桌面环境:vmware虚拟机ubuntu10.10root@ubuntu10:/work# uname -aLinux ubuntu10 2.6.35-27-generic #48-Ubuntu SMP Tue Feb 2220:25:29 UTC 2011 i686 GNU/Linuxroot@ubuntu10:/work# date2011年 04月 09日 星期六原创 2016-08-31 12:05:16 · 638 阅读 · 0 评论 -
linux kernel的开始
现在学习看linux内核代码,一开始看一头雾水,不知道从那里开始,偶尔听一个同学说起内核就是一个while(1)循环,在看TPC/IP 内核协议栈时,经常看到内核的回调机制,结合自己看代码的经验,对内核结构猜测:内核是一个模型,这个模型具有良好的分层结构,在不同的模块里通过回调init完成注册,在推出时通过注册回调exit完成退出。 在这里,内核使用了面向对象的思想。在我们讨论编程语言原创 2016-08-31 12:05:06 · 465 阅读 · 0 评论 -
TCUDUMP 交叉编译及使用
一:下载源码:libpcap-1.1.1.tar.gz tcpdump-4.1.1.tar.gz二:编译libpcap首先生成makefile,按照标准的交叉编译方法进行。1.root@wang:/work/libpcap-1.1.1# ./configure --host=mipsel-linux --prefix=/work/tcpdumpconfigure: WARNI原创 2016-08-31 12:10:49 · 2958 阅读 · 0 评论 -
字符驱动学习三(轮询 select调用)
在应用中经常调用selec函数实现多路访问,select函数的实现依赖与驱动的 xxx_poll函数。在xxx_poll函数中,核心的函数是poll_wait函数。在网上查了很多资料,发现轮询的操作依赖于select和poll_wait函数的配合。网上对poll函数是这样解释的:Poll函数原型:Unsigned int(*poll)(struct file *filp, struct poll_原创 2016-08-31 12:10:33 · 1187 阅读 · 0 评论 -
iw工具
这些资料收集网络:iwconfig命令的使用 Iwconfig命令使用:iwconfig是Linux Wireless Extensions(LWE)的用户层配置工具之一。LWE是Linux下对无线网络配置的工具,包括内核的支持、用户层配置工具和驱动接口的支持三部分。目前很多无线网卡都支持LWE,而且主流的Linux发布版本,比如Redhat Linux、Ubuntu Lin原创 2016-08-31 12:10:30 · 2652 阅读 · 0 评论 -
WIFI 驱动 RT3070移植
移植环境:主机:ubuntu10.10目标机:broadcom 7405驱动:DPO_RT3070_LinuxSTA_V2.3.0.4_20100604.tar.bz2内核:stblinux-2.6.18-7.5wireless_tools;wireless_tools.29.tar.gz1.首先编译内核,生成内核树。2.解压驱动,进入目录,里面有一些说明文档,打开README_STA_usb,这原创 2016-08-31 12:10:28 · 739 阅读 · 0 评论 -
字符驱动学习
写完第一个hello world 的驱动以后,想编写一个比较完整的字符设备驱动,就把《linux 设备驱动开发详解》上的globalmem驱动写了一下,写完以后,发现了几个问题,没有自动生成设备节点,在多设备的支持中,两个设备的关系不明确。搜集了一下资料,编写了一个能够自动生成设备节点的字符驱动。 在字符驱动中,内核提供了三个函数来注册一组字符设备编号,这三个函数分别是 register_ch原创 2016-08-31 12:10:22 · 395 阅读 · 0 评论 -
ubuntu 内核树
最近学习编写驱动程序,编写驱动,首先要构建内核树,记得以前编写驱动时,直接指定了内核源码的位置,但是在ubuntu上内核版本和源码版本不一致,编译时出了很多错误。在网上搜了一下,才明白,编写模块驱动,首先要构建内核树。ubuntu上不带内核源码,一般的方法是下载内核重新编译一遍,构建内核树。但是这样做有点麻烦,又网上搜集一下,发现ubuntu上自带内核树,在/lib/modules 目录下。roo原创 2016-08-31 12:10:19 · 638 阅读 · 0 评论 -
UDEV规则和调试
root@wang:/work/7405/trunk2/release/vender/cdma2000/udev/etc/udev# cat udev.conf # udev.conf# The initial syslog(3) priority: "err", "info", "debug" or its# numerical equivalent. For runtime debugging原创 2016-08-31 12:10:17 · 5403 阅读 · 1 评论 -
VIM 的配置和神一般的插件。
刚开始工作的时候,主要是C和C++,使用VIM比较多,后来转到Android,主要使用IDE开发,VIM用的比较少,但是也有用到VIM的时候,总是遇到这样那样的问题,自动补全,文件查找,搜索什么的,然后就是各种插件,插件多了,冲突的问题就来了,问题是插件也不能解决一些问题,搞的很纠结。下决心苦学一番vim,看来我不是那种传说中的天赋异常的武林高手,折腾了一顿,没有什么结果,偃旗息鼓了。最近心血来潮原创 2016-08-31 12:09:24 · 5210 阅读 · 0 评论 -
wireshark过滤器使用规则介绍
使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。过滤器的区别捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。显示过滤器(DisplayFilters):在捕捉结果中进行详细查找。他们可以在得到捕捉转载 2016-08-31 12:10:51 · 612 阅读 · 0 评论 -
7405 平台移植华为EC122上网卡
一、 开发环境板子:海思3716C dongle:华为EC122虚拟机:ubuntu10.10在这里参照了一篇博文,由于所移植的上网卡是一个型号,省去了找资料的很多麻烦,苍天啊,大地啊,感动。呵呵http://blog.youkuaiyun.com/liuming_3385/archive/2011/02/24/6206306.aspx二、以前也移植过一个dongle,那次是稀里糊涂的搞了半个月,最后虽然能够原创 2016-08-31 12:10:13 · 1504 阅读 · 0 评论 -
RT3070 STA 驱动移植
移植环境: 主机操作系统:Ubantu 10.10 目标系统:hi351x 内核 linux-2.6.14 交叉编译器:arm-hismall-linux- 驱动版本: 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO 1. 下载RT3070驱动源码版本: 2011_0107_RT3070_RT3370_Linux_S原创 2016-08-31 12:07:15 · 616 阅读 · 0 评论 -
Linux 内存管理
Linux 内存管理Linux 内存管理1页的概念2内核虚拟地址分区和物理内存分区3伙伴系统算法1 简介2 伙伴系统算法分配函数3 get_free_pages与alloc_pages的差异4Slab 内存分配算法1Slab 内存分配算法2Slab 内存结构3slab 着色区和slab 结构4Slab 内存函数5slabinfo对象5kmalloc 和 vmalloc1k原创 2017-03-29 10:05:54 · 786 阅读 · 0 评论 -
字符驱动学习二(阻塞I/O)
上次调试好了一个基本的字符驱动,支持并发控制。在实际的使用中,read 和 write 系统调用要支持阻塞访问的。这次使用等待队列实现阻塞。在实现阻塞的代码中涉及进程调度的内容。下面是read和write 函数:static ssize_t cfifo_read(struct file *filp, char __user *buf, size_t count, loff_t *fpos)原创 2016-08-31 12:10:25 · 347 阅读 · 0 评论 -
DHCP 协议
什么是DHCP?DHCP是DynamicHostConfigurationProtocol之缩写﹐它的前身是BOOTP。BOOTP原本是用于无磁碟主机连接的网路上面的﹕网路主机使用BOOTROM而不是磁碟起动并连接上网路﹐BOOTP则可以自动地为那些主机设定TCP/IP环境。但BOOTP有一个缺点:您在设定前须事先获得客户端的硬体位址,而且,与IP的对应是静态的。换而言之,BOOTP非常缺乏"动态转载 2016-08-31 12:11:59 · 549 阅读 · 0 评论 -
使用pppd移植WCDMAdongle
要在机顶盒上使用3G无线上网卡上网,机顶盒采用linux操作系统,总结了一下,如下:1.修改rc.S脚本中配置,开机时插入usbserial.ko和options.ko。2.配置udev工具和脚本,开机后,若检测到dongle,启动udev脚本。3.在udev脚本中有一switch工具,dongle上电后枚举为CD_RAW设备,switch工具将其转化为USB设备,挂载在dev/ttyUSB0设备原创 2016-08-31 12:06:19 · 863 阅读 · 0 评论 -
在嵌入式中使用gdbserver
一:准备PC机:172.16.7.153broad:172.16.7.155# ifconfigeth0 Link encap:Ethernet HWaddr 00:07:63:00:00:0B inet addr:172.16.7.155 Bcast:172.16.7.255 Mask:255.255.255.0 UP BROADCAST原创 2016-08-31 12:06:22 · 3209 阅读 · 0 评论 -
ARM平台移植jpeg z png 库
最近移植一些第三方开源库,移植中遇到一些问题,写出来和大家分享。解决困难的过程也是学习的过程。下面就是一份总结吧。需要移植的库:root@ubuntu:/work/SKIA/3rdparty# ls3716C_libs freetype-2.3.4 libpng-1.2.16 libpng-1.2.44 READMEcurl-7.20.0 giflib-4.1.6原创 2016-08-31 12:06:25 · 757 阅读 · 0 评论