
linux 嵌入式驱动开发
tyl_355402
这个作者很懒,什么都没留下…
展开
-
关于驱动的入门知识
首先在编写linux设备驱动程序的时候需要一些基本的技术基础如下:1,编写驱动时首先自己需要对HW有个较好的认识,比如一些常见的SRAM, Flash,SDRAM,磁盘的读写方式,UART,i2c,USB等设备接口的通信原理,pulling,interrupt,DMA的原理,PCI的工作方式,以及cpu 里的MMU的工作方式等。2,比较特别需要注意的也是最基本的,需要了解多任务时的并发控制原创 2012-02-29 00:17:48 · 1255 阅读 · 1 评论 -
android 中属性设置
Android系统大量使用属性,用于记录系统设置和进程通讯。属性是在整个系统中全局可见的。每个进程都可以get/set属性。在系统初始化时,Android将分配一个共享内存区来存储属性。这是由init进程(见system/core/init/init.c)完成的:init守护进程在执行完系统启动过程后,将成为一个属性管理的后台服务,接收其它进程对于属性的管理请求。---------------转载 2013-03-09 10:45:46 · 810 阅读 · 0 评论 -
在Android NDK中编译和使用Box2D
本文使用Windows+NDKr8编译,编译前请自行配置好相关环境变量Box2D是一个在手机游戏开发中使用的物理引擎,本文使用NDK将Box2D移植到Android首先去Box2D官网下载最新版的源码,目前版本是2.2.1,下载地址是:Box2D_v2.2.1.zip解压源码,删除源码目录中除Box2D以外的其它目录,将HelloWorld目录中的HelloWorld.cpp复制到源码转载 2013-03-09 16:34:46 · 1066 阅读 · 0 评论 -
编译android not reserve enough space for object heap错误
修改build/core/definition.mk 改成-JXmx2048 改小些。原创 2013-03-09 17:32:02 · 618 阅读 · 0 评论 -
android适配各种分辨率的问题
Android设备屏幕的尺寸是各式各样的,如小米是4英寸的,Xoom平板是10英寸;分辨率也千奇百怪,800×480,960×540等;Android版本的碎片化问题更是萦绕于心,不过在设计应用时可以分为两大块:3.0之前的版本和3.0之后的版本。这种情况会带来什么问题我们用三个假设来说明一下。1. 假设你的手上有两个4英寸的设备,设备A的分辨率是800×480,设备B的分辨率是1转载 2013-04-01 10:41:18 · 554 阅读 · 0 评论 -
linux设备和驱动加载的先后顺序
Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。Linux系统使用两种方式去加载系统中的模块:动态和静态。静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载核心进程(/init/main.c)kernel_inità do_basic_setup()àdo_initcalls()该函数中会将在_转载 2013-04-17 11:13:26 · 488 阅读 · 0 评论 -
Android下的图形渲染配置文件egl.cfg
Android中的EGL/GLES库不是在运行时直接链接的,而是在第一次使用时根据配置选择性载入的。更具体的,libEGL.so文件包含了一个“载入器”,它会尝试载入硬件图形库或是软件图形库(libagl)。载入器的源代码位于:frameworks/base/openl/libs/EGL/Loader.cpp。载入什么库取决于配置文件/system/lib/egl/egl.cfg,egl.cfg有转载 2013-06-06 19:07:46 · 642 阅读 · 0 评论 -
android ota update
http://blog.youkuaiyun.com/wantianpei/article/details/8896438转载 2013-06-06 18:03:08 · 500 阅读 · 0 评论 -
alsa声卡驱动分析总结
不小心参考文章:http://blog.youkuaiyun.com/droidphone/ http://blog.chinaunix.net/uid/22917448.html分析只列出部分重要代码,具体请参考linux3.0内核代码。Alsa架构整体来说十分复杂,但对于驱动移植来说我们仅仅只需要关心ASOC就足够了。在学习asoc之前我们先了解转载 2013-06-06 18:19:07 · 925 阅读 · 0 评论 -
Linux时间子系统之三:时间的维护者:timekeeper
本系列文章的前两节讨论了用于计时的时钟源:clocksource,以及内核内部时间的一些表示方法,但是对于真实的用户来说,我们感知的是真实世界的真实时间,也就是所谓的墙上时间,clocksource只能提供一个按给定频率不停递增的周期计数,如何把它和真实的墙上时间相关联?本节的内容正是要讨论这一点。1. 时间的种类内核管理着多种时间,它们分别是:RTC时间wall转载 2013-08-06 14:15:24 · 553 阅读 · 0 评论 -
Android源码下载——用git clone实现单个目录下载
对于Android开发的学习者来说,当学习和开发实践进行到了一定的阶段,就应该深入到Android系统的源代码中去了。通过对源代码的研究、学习,可以熟悉Android发布的基本应用模块如Launcher、Contact、Email等的实现原理和开发方式,还可以深入到framework框架层、核心库层、Linux Kernel层等底层模块。那么,怎么才能获取到Android的源代码呢?A转载 2014-04-30 00:01:56 · 436 阅读 · 0 评论 -
Android 4.4 全套源码及子模块源码的下载方法
下面简要介绍下下载的步骤和遇到问题的解决办法。1、安装 Repoa) 建立Repo的安装目录、配置环境变量$ mkdir ~/bin$ PATH=~/bin:$PATHb) 获取Repo工具$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo 问题:上面转载 2014-04-30 00:07:58 · 583 阅读 · 0 评论 -
介绍 Android 的 Camera 框架
总体介绍 Android Camera 框架从整体上看是一个 client/service 的架构,有两个进程:一个是 client 进 程,可以看成是 AP 端,主要包括 JAVA 代码与一些 native c/c++代码;另一个是 service 进 程,属于服务端,是 native c/c++代码,主要负责和 linux kernel 中的 camera driver转载 2014-04-29 23:40:14 · 437 阅读 · 0 评论 -
camera debug 的注意事项。
1. 在初始化sensor 前,请保证sensor 各个电源的电压正确 2. 在初始化sensor 前,请确保reset ,standby 按照sensor 规定的上电时序控制,否则可能带来很多难以解释的问题 3. 往sensor 写I2C 命令前,请保证 MCLK 已经有信号输出,一般来说MCLK 应该在24MHz。 4. 如果初始化时,发现I2C 写命令fail转载 2014-05-26 11:32:16 · 986 阅读 · 0 评论 -
EGL接口介绍
EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。本章主要讲述 OpenGL ES 的 EGL API ,以及如何用它创建 Context 和绘制Surface 等,并对用于 OpenGL 的其他视窗 API 做了比较分析,比如 WGL 和 GLX 。本章中将涵盖如下几个方面: EGL 综述 EGL 主要构成(转载 2013-03-09 09:26:29 · 743 阅读 · 0 评论 -
Ubuntu装配JDK6和JDK5
在安装android on openwrt是出现错误:build/core/config.mk:271: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.需要安装JDK6!一 第一种方法:转载 2013-03-09 11:44:22 · 639 阅读 · 0 评论 -
用户空间内核空间ipc总结(sockopt,ioctl,mmap,netlink,proc,seq,file,copy_user)
多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持!本文就总结下常见的ipc,getsockopt/setsockopt mmap netlink/socket proc/seq copy_from_user/copy_to_user 文件。采用先讲解后测试代码的方转载 2013-01-16 20:32:57 · 753 阅读 · 0 评论 -
Android 启动流程: Init.c 阅读笔记 .
Androidkernel 启动后执行Init 初始化,代码在system/core/init 中。 - 创建/dev /proc /sys 目录,创建/dev/pts 目录( 伪终端) 和/dev/socket ,并分别mount- 创建空设备节点,创建kmsg 设备节点,初始化log - 解析init.rc - 读取保存在/proc/cmdline 中的kerne转载 2012-05-13 16:39:03 · 459 阅读 · 0 评论 -
注册内核选项
4.4 内核选项解析各个子系统的初始化是内核整个初始化过程必然要完成的基本任务,这些任务按照固定的模式来处理,可以归纳为两个部分:内核选项的解析以及子系统初始化函数的调用。本节讲解内核选项的注册及解析机制,下一节将会讲解各个子系统的初始化函数如何被调用。4.4.1 内核选项Linux允许用户传递内核配置选项给内核,内核在初始化过程中调用parse_args函数对这些选项进行解析,转载 2012-05-13 15:44:28 · 904 阅读 · 0 评论 -
Linux kernel内核中的atoi,itoa等函数 .
【整理】Linux内核中的atoi,itoa等函数对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数,但是对于Linux内核来说,无法使用那些C库中的函数。对此Linux内核里有了相应的实现:对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;对于i转载 2012-05-13 15:32:17 · 3463 阅读 · 0 评论 -
在内核中创建文件 filp_open/sys_open .
之前以为在内核中不能创建文件,其实不是这样子的,只要文件系统跑起来之后就可以像在用户空间一样操作文件. 用户空间 内核open() sys_open(), filp_open()close() sys_close(), filp_close()read()转载 2012-06-05 13:44:19 · 473 阅读 · 0 评论 -
android ics 启动模式
Android系统中具备6个模式,分别为一般启动模式(normal mode)、安全模式(safe mode)、恢复模式(recovery mode)、引导模式(bootloader mode)、fastboot模式和诊断模式(diagnostic mode)。1. 一般启动模式(normal mode):它的功能是正常启动手机,方法为关机状态下按电源键启动。2. 安全模式(saf转载 2012-06-12 19:27:25 · 735 阅读 · 0 评论 -
查阅linux kernel api
http://www.gnugeneration.com/books/linux/2.6.20/kernel-api/re259.html原创 2012-06-13 21:07:34 · 308 阅读 · 0 评论 -
V4l2 Capture Sequence
V4l2 Capture Sequence v4l2 操作实际上就是 open() 设备, close() 设备,以及中间过程的 ioctl() 操作。对于 ioctl 的调用,要注意对 errno 的判断,如果调用被其他信号中断,即 errno 等于 EINTR 的时候,要重新调用。Video capture device 的实际功能就是采集视频信号,并将数字化的图像保存在转载 2012-07-30 10:14:21 · 595 阅读 · 0 评论 -
UNIX SIGTERM等信号意义
SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE文件 跟踪自陷SIGBUS 建立CORE文件 总线错误SIGSEGV 建立CORE文件转载 2012-09-07 10:23:15 · 444 阅读 · 0 评论 -
高通平台android kernel 开机logo显示和传统linux一样
由于高通8k平台lk下只有2s多点 故直接在kernel显示logo,这篇文章转载过来制作linux logo,其实这个当时学习就会,只不过忘记了。在这里重提一下ubuntu下的GIMP图片工具真的很不错!!!曾经在lk下把mipi panel给驱动显示起来了,但是使用了高通官方给的连续显示logo的方法并不给力,在出lk到kernel注册fb之前,会闪烁一样,也就是关了再显示了。由于late转载 2012-10-28 11:24:17 · 1426 阅读 · 0 评论 -
android lcd调试 高通平台lcd调试深入分析总结(mipi和rgb接口)
一:点亮lcd inkernel其实点亮lcd很简单必须保证以后几个步骤正确:1:确认Lcd信息所在文件被编译进去,并且lcd 和board name里面注册一质,倘若这部正确,那么log里面应该有对应分辨率的一段framebuffer同时调到相对应的power_on函数。对于lcdc panel对应文件在lcdc_xx.c,对于mipi panel对应文件在mipi_xx.c(下序列操作转载 2012-10-28 11:25:03 · 10864 阅读 · 0 评论 -
修改和制作Android开机Logo(最终版)
以下在Telechips tcc8900上,用Android 2.3的源码编译通过1.bootloader图片修改 bootable\bootloader\lk\platform\tcc_shared\include\lcd\logo.h替换就行了 logo.h的制作:准备一张图片,然后用Img2Lcd工具把图片转成C语言数组注意:在使用Img2Lcd工具转换的图片转载 2012-10-28 11:25:47 · 779 阅读 · 0 评论 -
Linux内核为不同驱动的加载顺序对应不同的优先级
此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始化as352x_afe_init。此处,内核编译完之后,在生成的system.map中可以看到,enc28j60_init在as352x_afe_init之前,所以,无法去读芯片ID。所以我们的目标是,将as352x_a转载 2012-11-06 19:04:36 · 920 阅读 · 0 评论 -
FrameBuffer的原理
FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过 Framebuffer的读写直接对显存进行操作。用户可以将F转载 2012-12-07 17:51:10 · 333 阅读 · 0 评论 -
Android深入浅出之Binder机制
一 说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来分析Binder的使用:l ServiceManager,这是Android OS的整个服务的管理程序l转载 2014-05-26 16:50:39 · 438 阅读 · 0 评论