arm-linux

http://armboard.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  512 随笔 :: 0 文章 :: 48 评论 :: 115万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

12 2010 档案

摘要:GPIO是与硬件体系密切相关的,linux提供一个模型来让驱动统一处理GPIO,即各个板卡都有实现自己的gpio_chip控制模块:request, free, input,output, get,set,irq... 然后把控制模块注册到内核中,这时会改变全局gpio数组:gpio_desc[]. 当用户请求gpio时,就会到这个数组中找到,并调用这个GPIO对应的gpio_chip的处理函数。 gpio实现为一组可用的 gpio_chip, 由驱动传入对应 gpio的全局序号 去 request, dataout ,datain, free. 这时会调用gpio_chip中具体的实现... 阅读全文
posted @ 2010-12-30 23:55 arm-linux 阅读(3322) 评论(0) 推荐(0) 编辑

摘要:《程序员》杂志的编辑约我写一篇命题作文,想了几天都无从下手不知道写什么才好。在这篇文章里,我不打算将创业的艰辛与喜悦重新回忆一遍,我确实不想去误导大家,因为我所处的年代是一个物质缺乏的年代,成功相对来说要容易得多。每个人的成长经历都有其个性化的东西,每个人的成功创业经验虽然有一些可以遵循的普遍规律,但一般来说都很难复制,成功需要不断地创新。对于今天很多的年轻人来说,一味注重技术至上的观念刻骨铭心,其实很多时候努力并非一定有回报。事实上,有不少出类拔萃的人才往往做出来的产品就是卖不掉,因为设计者压根儿就不了解用户的需求和心理以及产品功能的恰当定义,而总想在同事及其老板面前卖弄自己的技术和产品功能 阅读全文
posted @ 2010-12-27 17:45 arm-linux 阅读(593) 评论(0) 推荐(1) 编辑

摘要:一、跳转指令跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转:Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC 写入跳转地址值。通过向程序计数器PC 写入跳转地址值,可以实现在4GB 的地址空间中的任意跳转,在跳转之前结合使用 MOV LR,PC 等类似指令,可以保存将来的返回地址值,从而实现在4GB 连续的线性地址空间的子程序调用。ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4 条指令:1、 B 指令B 指令的格式为:B{条件} 目标地址B 指令是最简单的跳转指令。一旦遇到一个 B 指令,ARM 处理器将立即跳转到给 阅读全文
posted @ 2010-12-25 16:19 arm-linux 阅读(1093) 评论(0) 推荐(1) 编辑

摘要:前段时间一直在搞GPS导航系统的应用软件,最近告一段落,继续捡起linux设备驱动,啃之!上次记录了模块初始化代码的学习,今次看看卸载模块的代码。void scull_cleanup_module(void){ int i; dev_t devno = MKDEV(scull_major, scull_minor); //这个见过!得到当前模块的设备号 if(scull_devices){ for(i = 0; i < scull_nr_devs; i++){ scull_trim(scull_d... 阅读全文
posted @ 2010-12-24 18:41 arm-linux 阅读(656) 评论(0) 推荐(0) 编辑

摘要:文字显示和颜色显示还没完善,虽然还很粗糙,但是基本显示功能实现了。ARM9下测试启动到显示地图用时小于3s缩放用时小于1s,无明显延迟。地图使用天津市地图shapefile文件格式 阅读全文
posted @ 2010-12-20 23:59 arm-linux 阅读(848) 评论(0) 推荐(0) 编辑

摘要:来源:季义钦BLOG 作者:季义钦初次接触Linux驱动程序开发,买了一本《Linux设备驱动程序》,第一件事当然就是构建开发环境了!!!它上面有一个Hello World的列子://hello.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "Hello, world/n");return 0;}static void hell 阅读全文
posted @ 2010-12-20 20:27 arm-linux 阅读(451) 评论(0) 推荐(0) 编辑

摘要:由于要统计某个源代码下的所有代码的行数,所以这里自己写了个脚本来完成这个功能。我在编写这个脚本的时候,遇到了一些问题,我先把代码贴在这里;使用方法,将此脚本文件存为linesNumber.sh,使用时,在后面跟上指定目录即可,例如:# ./linesNumber.sh mplayer就是统计mplayer目录下的所有.cpp,.c,.h文件的源代码行数;对于你还需要增加其他的行数,你只需更改教本中的REG变量即可,更改方法参考REG变量内容,对应修改即可;/**************************************************/#! /bin/sh# writed 阅读全文
posted @ 2010-12-16 14:41 arm-linux 阅读(1074) 评论(0) 推荐(0) 编辑

摘要:在学习 Linux 的过程中,安装 Linux 是每一个初学者的第一个门槛。 在这个过程中间,最大的困惑莫过于给硬盘进行分区。 虽然,现在各种发行版本的 Linux 已经提供了友好的图形交互界面,但是很多的人还是感觉无从下手。这其中的原因主要是不清楚 Linux 的分区规定,以及它下面最有效的分区工具― Fdisk 的使用方法。 下面从这两个方面入手,来讲解这个困扰大家的问题。 Linux 的分区规定 1. 设备管理 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。 Linux 把各种 IDE 设备分配了一个由 hd... 阅读全文
posted @ 2010-12-15 08:59 arm-linux 阅读(959) 评论(0) 推荐(0) 编辑

摘要:配置Apache2时可能碰到 这样的错误:(98): make_sock: could not bind to address 0.0.0.0:443 你可能会查一下系统中根本没有其他程序占用这个端口。 这是因为,这个端口是被Apache2自身占据了。 类似的错误原因是,Apache2的配置文件中,多次Listen了同一个端口。 请检查一下自己的Apache2的配置文件。Apache2的配置文件可以包含配置文件。因此有很多个配置文件。根配置文件是apache2.conf。 请注意:ports.conf文件默认Listen了两个端口80,443. 阅读全文
posted @ 2010-12-08 17:20 arm-linux 阅读(398) 评论(0) 推荐(0) 编辑

摘要:mod_python最新的 3.3.1版本有一个bug。make编译时显示错误:connobject.c:142: error: request for member ‘next’ in something not a structure or union apxs:Error: Command failed with rc=65536这个Bug已经被报告:https://bugzilla.redhat.com/show_bug.cgi?id=467637Bug467637-connobject.c:142: error: request for member 'next' i 阅读全文
posted @ 2010-12-07 16:28 arm-linux 阅读(530) 评论(0) 推荐(0) 编辑

摘要:孔令春 posted @ 2009年10月15日 20:57 in 内功修行 with tags pselect poll , 418 阅读 2、pselect函数 pselect函数是由POSIX发明的,如今许多Unix变种都支持它。?123456#include <sys/select.h> #include <signal.h> #include <time.h> int pselect(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct tim 阅读全文
posted @ 2010-12-06 14:50 arm-linux 阅读(1517) 评论(0) 推荐(0) 编辑

摘要:poll函数用于监测多个等待事件,若事件未发生,进程睡眠,放弃CPU控制权,若监测的任何一个事件发生,poll将唤醒睡眠的进程,并判断是什么等待事件发生,执行相应的操作。poll函数退出后,struct pollfd变量的所有值被清零,需要重新设置。 示例是使用poll函数来监测按键的输入----------------------------------------------------------------------------------------------------------驱动代码:#include <linux/config.h>#include < 阅读全文
posted @ 2010-12-06 09:23 arm-linux 阅读(2899) 评论(0) 推荐(0) 编辑

摘要:1. 删除.pro和Makefile文件2. 我的qt-everywhere使用arm-linux-gcc编译后生成的qmake命名是qmake-embedded3. 命令:qmake-embedded -project 生成pro文件4. 命令:qmake-embedded -makefile生成Makefile文件5. 命令:make开始编译 阅读全文
posted @ 2010-12-03 22:31 arm-linux 阅读(202) 评论(0) 推荐(0) 编辑

摘要:如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子JNI入门教程之HelloWorld篇 SUN JNI Tutorial这些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实际的使用过程中,往往需要对参数进行处理转换。才可以被C/C++程序识别。比如我们在C++中有一个结构(Struct)DiskInfo ,需要传递一个类似于DiskInfo *pDiskInfo的参数,类似于在C++这样参数如何传递到Java中呢?下面我们就来讨 阅读全文
posted @ 2010-12-03 17:30 arm-linux 阅读(659) 评论(0) 推荐(0) 编辑

摘要:一、 引言众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理,udev 动态地维护 /dev 下的设备文件,inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知,该机制是著名的桌面搜索 阅读全文
posted @ 2010-12-02 19:09 arm-linux 阅读(648) 评论(0) 推荐(0) 编辑

摘要:http://raymond1860.spaces.live.com/Blog/cns!BF47B6FD104579C9!797.entry1.目录树/framework/base/api/framework/base/awt/framework/base/build/framework/base/camera 关 于camera的HAL接口库。最终生成native共享库libcamera.so ,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的Camera硬件,则编译时会和虚拟 camera静态库(libcamerastub.a,由camer 阅读全文
posted @ 2010-12-02 15:47 arm-linux 阅读(19311) 评论(0) 推荐(1) 编辑

摘要:标签:Linux and Kernel Android 版本信息LinuxKernel:v2.6.28Android:v2.0对于休眠(suspend)的简单介绍在Linux中,休眠主要分三个主要的步骤:版本信息Linux Kernel: v2.6.28 Android: v2.0 对于休眠(suspend)的简单介绍在Linux中,休眠主要分三个主要的步骤:冻结用户态进程和内核态任务 调用注册的设备的suspend的回调函数 顺序是按照注册顺序 休眠核心设备和使CPU进入休眠态冻结进程是内核把进程列表中所有的进 程的状态都设置为停止,并且保存下所有进程的上下文. 当这些进程被解冻的时候,他们 阅读全文
posted @ 2010-12-02 13:16 arm-linux 阅读(830) 评论(0) 推荐(0) 编辑

摘要:<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } H1 { margin-bottom: 0.21cm } H1.western { font-family: "DejaVu Sans", sans-serif; font-size: 16pt } H1.cjk { font-family: "DejaVu Sans"; font-size: 16pt; font-style: normal; font-weight: bold } H1.ctl { font-family: " 阅读全文
posted @ 2010-12-02 11:19 arm-linux 阅读(2685) 评论(0) 推荐(0) 编辑

摘要:分析一下 Android 是如何读取按键及Touch Panel 的驱动的。主要在$(ANDROID_DIR)/frameworks/base/libs/ui/EventHub.cpp这个文件中,这是在 HAL 层,将一步步分析 Android 上层是如何接受事件的。一, 先看一下 Android HALClass EventHub 在$(ANDROID_DIR)/frameworks/base/include/ui/eventhub.h 定义.i. scan_dir(const char *dirname) // dirname = "/dev/input" 扫描 dir 阅读全文
posted @ 2010-12-01 21:51 arm-linux 阅读(934) 评论(0) 推荐(1) 编辑

摘要:在编写ioctl代码之前,需要选择对应不同命令的编号。为了防止对错误的设备使用正确的命令,命令号应该在系统范围内唯一,这种错误匹配并不是不会发生,程序可能发现自己正在试图对FIFO和audio等这类非串行设备输入流修改波特率,如果每一个ioctl命令都是唯一的,应用程序进行这种操作时就会得到一个EINVAL错误,而不是无意间成功地完成了意想不到的操作。要按Linux内核的约定方法为驱动程序选择ioctl编号,应该首先看看include/asm/ioctl.h和Doucumention/ioctl-number.txt这两个文件。头文件定义了要使用的位字段:类型(幻数)、序数、传送方向以及参数大 阅读全文
posted @ 2010-12-01 18:05 arm-linux 阅读(414) 评论(0) 推荐(0) 编辑

摘要:Android键盘系统 Android中的键盘系统的生命周期从系统的启动开始到系统的关闭一直存在着,因为,在这整个过程中我们希望按下的没一个按键都会有相应的事件发生。通过调研发现,Android键盘系统贯穿着Android框架的最底层——Linux内核(驱动)到上层JAVA架构层——SystemServer。与android键盘系统关系紧密的几个文件从下层往上层依次为:Goldfish_event.c(处于Linux内核)、EventHub.cpp(硬件抽象层)、com_android_server_KeyInputQueue.cpp(JNI本地方法)KeyInputQueue.java、Wi 阅读全文
posted @ 2010-12-01 17:36 arm-linux 阅读(1961) 评论(0) 推荐(0) 编辑

摘要:刚看到金山卫士开源了,而且是在Apache2 license下开源,也就是说可以用作商业用途,使用者自身不需要开源。http://code.ijinshan.com/ 看来金山豁出去了,非搞死360不可。 对开发者来说挺好的,有空可以观摩一下代码。 安全软件市场的门槛打破了! 可以有更多的程序员和厂商进入这个市场。 阅读全文
posted @ 2010-12-01 17:31 arm-linux 阅读(350) 评论(0) 推荐(0) 编辑

摘要:EventHub.cpp文件中open_device函数浅析 用户态中,与内核态联系紧密的一个函数是open_device,它位于EventHub.cpp文件中,该函数有大量的底层操作,以完成上层对硬件的操作。该函数的首部为:int EventHub::open_device(const char *deviceName)其中参数有scan_dir()函数获得。在这里,deviceName=”/dev/input/event0”for (attempt = 0; attempt < 10; attempt++) {fd = open(deviceName, O_RDWR);if (fd 阅读全文
posted @ 2010-12-01 17:30 arm-linux 阅读(1102) 评论(0) 推荐(0) 编辑

摘要:Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删除一个元素 front() 返回第一个元素 get_allocator() 返回list的配置器 insert() 插入一个元素到list中 max_size() 返回list能容纳的最大元素数量 merge() 合并两个list pop_b 阅读全文
posted @ 2010-12-01 11:20 arm-linux 阅读(1303) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示