
嵌入式系统
文章平均质量分 58
jsn_ze
这个作者很懒,什么都没留下…
展开
-
android的binder机制
(一) 概述 android的binder机制提供一种进程间通信的方法,使不同一个进程可以以类似远程过程调用的形式调用另一个进程所提供的功能。binder机制在Java环境和C/C++环境都有提供。 android的代码中,与C/C++的binder包括一些类型和接口的定义和实现,相关的代码在下面这几个文件中: frameworks\ba转载 2017-05-11 20:26:21 · 342 阅读 · 0 评论 -
indent是linux下一个能力极强的代码整理软件
本文转自:http://blog.youkuaiyun.com/unbutun/archive/2009/08/15/4450465.aspxindent是linux下一个能力极强的代码整理软件,使用他,可以轻松的写出代码风格十分精良的代码。但是indent的参数太多,使用起来不是很容易,怎么办呢?查看/usr/src/linux-headers-/scripts/Linden转载 2016-12-27 12:38:13 · 438 阅读 · 0 评论 -
source insight
1.Options->Preferences->Display, 去掉勾选 "Trim long path names with ellipses",这样路径中的省略号就没有了,显示出完整的路径2.ALT+T 修改字体颜色3.配置类sublime的配色方案原创 2016-12-19 10:39:54 · 212 阅读 · 0 评论 -
JPEG文件格式简单分析
摘要:这篇文章大体上介绍了JPEG文件的结构信息以及它的压缩算法和编码方式。使读者能够对JPEG文件格式有大体上的了解。为读者进一步进行学习JPEG文件压缩做好准备 关键字:十六进制,段格式,编码 一、 JPEG文件格式概述:图像和动画的存储方式是一个很重要的问题。幸好我们有了数据压缩,有了JPEG等多种压缩存储图像的文件格式,我们今天才能够拿转载 2016-12-16 11:39:41 · 603 阅读 · 0 评论 -
实例解析linux内核I2C体系结构(二)
四、在内核里写i2c设备驱动的两种方式 前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和 “Probe方式(new style)”。(1) Adapter方式(LEGAC转载 2016-02-29 17:22:27 · 306 阅读 · 0 评论 -
实例解析linux内核I2C体系结构(一)
一、概述 谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有: ● 思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。第一种方法问题(对应第二种方法的好转载 2016-02-29 17:21:00 · 694 阅读 · 0 评论 -
交叉编译 PPPoE 和 PPP
1. 下载 ppp-2.4.5和 rp-pppoe-3.112. 编译ppp ./configure vim Makefile 修改如下:--------------------------------------------------------------------------------------------------------------------原创 2016-02-29 10:49:12 · 663 阅读 · 0 评论 -
email-3.1.3 交叉编译
1】代码网上找找2】编译过程: 2.1 交叉编译openssl-0.9.8k 2.2 ./configure --prefix=(...)/output ,本来这里填上CC=arm-linux-gcc 什么的就可以了,但是这个包就是不 行,所有有下面的手工修改Makefile的工作。 2.3 vim ./dlib/Makefile -原创 2016-02-29 10:44:36 · 608 阅读 · 0 评论 -
IIC协议
看IIC协议先:两条线可以挂多个设备。IIC设备(稍微有点智能的)里有个固化的地址。只有在两条线上传输的值等于我(IIC设备)的地址时,我才作出响应。开始信号:处理器让SCL时钟保持高电平,然后让SDA数据信号由高变低就表示一个开始信号。同时IIC总线上的设备检测到这个开始信号它就知道处理器要发送数据了。停止信号:处理器让SCL时钟保持高电平,然后让SD转载 2016-02-29 10:42:36 · 442 阅读 · 0 评论 -
使用gdb和gdbserver
使用gdb和gdbserver (一) 首先下载gdb的源代码包,可以从http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载,我下载的是gdb-7.6.tar.gz(二) 编译gdb: 红色字体的是gdb本机的install目录,要统一#tar jxvf转载 2016-02-28 14:48:04 · 323 阅读 · 0 评论 -
msm8974 camera driver添加新摄像头kernel hal修改
http://blog.youkuaiyun.com/u013531497/article/details/18737111添加一款新摄像头流程1添加sensor kernel driver, 主要实现上电、rst、pwd、mclk等power setting,sensor prob & sensor i2c driver prob 和 v4l2_subdev 注册\kernel\drive转载 2016-12-28 10:49:37 · 301 阅读 · 0 评论 -
Qualcomm Camera
1. Clue :Qualcomm HAL -> mm-camera-interface -> kernelkernel mm-camera(qcamserv&ctrl)2. Threads : Qcamsvr thread / mctl thread / HAL thread3. HAL : CameraHardwareInterfaceC转载 2016-12-28 11:10:52 · 312 阅读 · 0 评论 -
Qualcomm平台camera调试移植入门
http://www.cnphp6.com/archives/589601 camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循Android的框架:即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略; 在kernel中实现sensor的底层驱动。但是,对于最核心的sensor端的底层设置、ISP效果相关等代码则是单独进行了抽转载 2016-12-29 13:13:37 · 519 阅读 · 0 评论 -
dlopen dlsym dlclose
dlopen、dlsym和dlclose的使用和举例 之前用过这三个函数一直没时间整理一下。今天抽时间整理一下。1、函数简介dlopen基本定义功能:打开一个动态链接库 包含头文件: #include 函数定义: void * dlopen( const char * pathname, int mode ); 函数描述:转载 2017-03-12 19:01:49 · 339 阅读 · 0 评论 -
c++reference
http://www.cplusplus.com/reference/原创 2017-03-11 16:59:35 · 367 阅读 · 0 评论 -
JPEG文件格式 JFIF & Exif
JPEG是Joint Photographic Experts Group 的缩写,正是这个专家组制定了JPEG标准以及其他静态图片编解码标准。Joint(联合)是指ISO TC97 WG8(计算机与信息处理技术委员会 第8工作组)和CCITT SGVIII两个工作组的联合. 这个专家组在1992年颁布了第一个JPEG标准, ITU在1992年命名为ITU-T Recommendation T.8转载 2017-03-09 16:28:38 · 1872 阅读 · 0 评论 -
vim可以很方便地编辑二进制文件
V查看编辑二进制文件vim可以很方便地编辑二进制文件,个人认为它比emacs的二进制编辑方式更好用。vim中二进制文件的编辑是先通过外部程序xxd来把文件dump成其二进制的文本形式,然后就可以按通常的编辑方式对文件进行编辑,编辑完成后再用xxd 转化为原来的形式即可。可分如下几步进行:(1) 首先以二进制方式编辑这个文件: vim -b datafile(2)转载 2017-03-09 15:07:12 · 270 阅读 · 0 评论 -
printf scanf
格式转换说明符printf() / scanf() 表一 转换说明符及作为结果的打印输出转换说明输 出%a浮点数、十六进制数字和p-记数法 (C99)%A浮点数、十六进制数字和P-记数法 (C99)%c一个字符转载 2017-03-09 11:09:38 · 287 阅读 · 0 评论 -
linux系统I/O复用技术之三:epoll()
epollepoll是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会随socket数量的线形递增而呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。标准的linux-2.4.20内核不支持epoll,需要打patch。本文主要从linux-2.4.32和linux-2.6.10两个内核版转载 2017-01-28 11:51:53 · 286 阅读 · 0 评论 -
LINUX系统I/O复用技术之二:poll()
poll或select为大部分Unix/Linux程序员所熟悉,这俩个东西原理类似,性能上也不存在明显差异,但select对所监控的文件描述符数量有限制,所以这里选用poll做说明。1. 头文件# include 2. 参数说明int poll ( struct pollfd * fds, unsigned int nfds, int timeout);和s转载 2017-01-28 11:50:09 · 330 阅读 · 0 评论 -
linux系统I/O复用技术之一:select()
1. 头文件#include#include#include 2. 参数说明int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);先说明两个结构体:第一,struct fd_set可以理解为一个集合,这个转载 2017-01-28 11:43:29 · 350 阅读 · 0 评论 -
uboot分区与系统内核中MTD分区的关系
uboot 与系统内核中MTD分区的关系:分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等。1:在内核MTD中可以定义分区A~B,C~D。。。。。。并予以绝对的地址赋值给每个分区。我们可以来看看在内核中是怎样来对MTD进行分区的:arch/arm/plat-s3c24xx/common-smdk.cstati原创 2016-12-20 18:37:53 · 253 阅读 · 0 评论 -
如何做cramfs只读文件系统的在线更新
一、额外话 jffs2的文件系统可以支持像PC一样的直接文件读写,使用方便,但是有压缩率低运行速度慢,flash资源浪费等一些问题。所以在一些flash比较小的嵌入式系统中,还是用cramfs或squashFS等,但问题是这些是只读的文件系统,不支持用户读写。那么可以一个区是cramfs 一个区是jffs2。 再bootarg 中添加一个分区,在这里加 mtdpar原创 2016-03-23 16:23:29 · 543 阅读 · 0 评论 -
alsa声卡驱动分析总结 (三)
Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理,例如音量控制,功率转载 2016-02-26 17:48:16 · 399 阅读 · 0 评论 -
alsa声卡驱动分析总结 (二)
alsa声卡驱动分析总结 来自:http://blog.chinaunix.net/uid-20672559-id-3515392.html现在我们开始分析ASOC:ASoC被分为Machine、Platform和Codec三大部分。其中的Machine驱动负责Platform和Codec之间的耦合和设备或板子特定的代码。看起来挺复杂,其实需要我们做的事情并不多,大部分转载 2016-02-26 17:44:32 · 586 阅读 · 0 评论 -
arm-linux-ld命令
我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来;其次,这些.o文件存在相互调用的关系;再者,我们最后生成的bin文件是要在硬件中运行的,每一部分放在什么地址都要有仔细的说明。我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验: 首先,要确定我们的程序用没有用到标准的c库,或者一些转载 2016-02-19 08:43:17 · 343 阅读 · 0 评论 -
Makefile中常用的函数
常用函数调用语法:$( )或${}时函数名,是函数的参数。参数间以逗号隔开,而函数名和参数间以空格隔开。字符串处理函数1、字符串替换函数subst格式:$(subst ,,)功能:把字符串中的字符串替换成返回:函数返回被替换过后的字符串。2、模式字符串替换函数patsubst格式:$(patsubst,,)功能:查找中的单词是否符合模式,如果原创 2016-02-18 18:03:23 · 433 阅读 · 0 评论 -
ARM MMU工作原理剖析
上图是描述符的结构 Section base address:段基地址(相当于页框号首地址) AP: 访问控制位Access Permission Domain: 访问控制寄存器的索引。Domain与AP配合使用,对访问权限进行检查 C:当C被置1时为write-through (WT)模式 B: 当B被置1时为write-back (WB)模式(转载 2016-02-18 14:35:02 · 299 阅读 · 0 评论 -
ARM MMU工作原理剖析
ARM MMU工作原理剖析2016-01-08 15:18:34 来源:eefocus 关键字:ARM MMU 工作原理一、MMU的产生 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需转载 2016-02-18 13:36:30 · 418 阅读 · 0 评论 -
GPG入门教程
一、什么是GPG要了解什么是GPG,就要先了解PGP。1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。GPG有许多用途,本文主要介绍文件加密原创 2016-03-16 14:10:55 · 339 阅读 · 0 评论 -
大端和小端及如何判断
一、大端与小端、MSB与LSB 在嵌入式开发中,大端(Big-endian)和小端(Little-endian)是一个很重要的概念。假如现有一32位int型数0x12345678,那么其MSB(Most Significant Byte,最高有效字节)为0x12,其LSB (Least Significant Byte,最低有效字节)为0x78,在CPU内存中有两种存放方式:(假设从地址转载 2016-02-05 10:32:58 · 303 阅读 · 0 评论 -
Dnw下载工具还是Linux下的好(For smart210)
一直在Windows下开发,某些bug总是使我不能全心全意的信任Windows,从开发嵌入式开始,一直就想把开发环境转移到Linux环境下,特别是下载程序的时候,不过确实有Linux的开发环境,就拿下载程序来说,Linux下的minicom和dnw真的是很好用,同时也可以学习源代码。下面教你如何下载、安装、使用dnw。1. dnw由两部分构成:USB驱动和下载工具,USB驱动便是sec转载 2016-03-15 21:54:02 · 447 阅读 · 0 评论 -
oRTP源码分析
oRTP源码分析前言本文主要是想在阅读oRTP协议栈时,为了以后的回忆,做些笔录。一、AVProfile 模块1.1 Pt的总结:引用:http://en.wikipedia.org/wiki/RTP_audio_video_profileRTP/AVP audio and video payload types原创 2016-03-02 15:35:31 · 2763 阅读 · 0 评论 -
alsa声卡驱动分析总结(一)
alsa声卡驱动分析总结分析只列出部分重要代码,具体请参考linux3.0内核代码。Alsa架构整体来说十分复杂,但对于驱动移植来说我们仅仅只需要关心ASOC就足够了。在学习asoc之前我们先了解一些专业术语:ASoC currently supportsthe three main Digital Audio Interfaces (DAI) found onSoC转载 2016-02-26 16:50:06 · 440 阅读 · 0 评论 -
.config、kconfig和Makefile的关系
当我们编写完一个驱动后,我们要把它以模块形式编译或者直接编译进内核时,需要修改相关文件,其中最重要的便是kconfig ,makefile。主要是分析一下三者之间的关系,然后就其语法简要的谈一下。 当我们在内核源码目录下执行make (或者make menuconfig等命令)命令时,实际上是根据makefile 来进行编译的。 在mini2440开发板上编写了一个按键控转载 2016-02-19 13:33:23 · 320 阅读 · 0 评论 -
Makefile与Kconfig和.config使用
Makefile与Kconfig和.config使用(2012-10-19 15:16:22)转载▼ 内核源码树的目录下都有两个文档 Kconfig(2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单转载 2016-02-19 13:52:25 · 912 阅读 · 0 评论 -
Linux Makefile与Kconfig文件详解
本文章介绍了makefile跟kconfig文件,包括编译过程与makefile编码规则。 编译过程: 我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下界面: 这个界面是怎么生成的呢?跟我们经常说的内核配置与与编译又有什么关系呢?下面我们借此来讲解一下linux内核的配置机制及其编译过程。一、配置系统的转载 2016-02-19 15:36:12 · 373 阅读 · 0 评论 -
DDR3L和LPDDR3区别
DDR3L和LPDDR3区别DDR3L全称“DDR3 Low Voltage”(低电压版DDR3),将运行电压从标准版DDR3的1.5V进一步降低到了1.35V,并保持功能上的全面兼容,在同等性能和负载下相比标准版DDR3功耗可降低15%或者更多,而相比于1.8V DDR2更是可以节能40%。Low Power Double Data Rate SDRAM,是DDR S原创 2016-03-23 09:06:45 · 31689 阅读 · 1 评论 -
Mafile 常用函数调用函数
常用函数调用语法:$( )或${}时函数名,是函数的参数。参数间以逗号隔开,而函数名和参数间以空格隔开。字符串处理函数1、字符串替换函数subst格式:$(subst ,,)功能:把字符串中的字符串替换成返回:函数返回被替换过后的字符串。2、模式字符串替换函数patsubst格式:$(patsubs转载 2016-02-26 16:34:59 · 547 阅读 · 0 评论 -
根文件系统/etc下 inittab
根文件系统/etc下 inittab/etc 目录存放的是系统程序的主配置文件,因此需要哪些配置文件取决于要运行哪些系统程序。即使最小的系统也一定会运行1号用户进程init,所以我们至少要手 工编写init的主配置文件inittab。busybox的inittab文件的语法、语义与传统的SYSV的inittab有所不同。inittab 文件中每个条目用来定义一个需要init启动原创 2016-03-21 13:23:35 · 751 阅读 · 0 评论