- 博客(27)
- 资源 (10)
- 收藏
- 关注
原创 FPDLINK中I2C通信的巧妙设计以及I2C Stretch
FPDLINK是TI设置的高速查分传输总线,主要用于传输图像数据,比如camera和显示数据。而且该标准还在不断的演进,从最初的一对线传输720P@60fps图像,到目前可以传输1080P@60fps,后续的芯片还可以支持更高的图像分辨率。传输距离也很远,能达到20米左右,非常适合汽车应用。FPDLINK在传输的过程中有高速的前向通道,用于传输高速的图像数据和小部分的控制数据。也有速度相对较低
2017-01-11 19:43:57
9444
原创 Robot: 一个记录和回放Android input event(touch)的工具
这个工具的主要目的就是记录屏幕上的各种操作,然后多次回放,用于稳定性测试和一些需要多次重复才能复现的bug的重现。代码在以下位置: http://download.youkuaiyun.com/detail/dfysy/8479123之前,别人转发我一个记录/回放 event的程序,在KK以前都是可以用的,但是由于Android L enable了PIE(positionindepen
2015-03-06 19:08:05
1806
原创 Android Camera HAL V3 Vendor Tag及V1,V3参数转换
转眼一看,上一次发博文都快是三年之前了,惭愧。主要是三年前找的这份工作,虽然是世界500强的技术大牛公司,但是工作可一点都不高大上,非常的忙,一天不但要处理各种camera的bug,还要开发camera的各种feature和sensor驱动,还要和内部、外部的人斗智斗勇,你懂的。忙的三年了才有闲心来发表这片博文。牢骚已完,言归正传。在Android 5.0上,Google正式的将Camer
2015-01-17 16:58:38
10305
2
原创 Android下增加service和对应的AIDL
在Android中,应用访问service提供的接口都是通过AIDL(Android Interface Definition Language),可以理解为一种规范,甚至可以粗陋的理解为C语言里面的.h文件,如果你曾经是一名C语言开发者,而且只是使用的话。下面的例子是想增加获取cpu 频率的service及其对应的AIDL,其中并没有实际的读取频率和设置governor的操作,仅仅用于演示如何在
2012-03-10 21:17:42
2382
原创 Android Uevent 分析,从kernel到framework
Uevent是内核通知android有状态变化的一种方法,比如USB线插入、拔出,电池电量变化等等。其本质是内核发送(可以通过socket)一个字符串,应用层(android)接收并解释该字符串,获取相应信息。一、Kernel侧:UEVENT的发起在Kernel端,主要是通过函数int kobject_uevent_env(struct kobject *kobj, enum kobj
2012-03-07 22:58:30
24563
原创 一个多年的老隐患---ARM BL指令的分析
前两天在俺们的EVB上加了点东西,增加了一下的BL语句进行初始化: BL C2g_GsmStartZac LDR pc, =INT_Initialize ;goto main in RAM接着就出了一个奇怪的问题,使用RVDS,将PC置于代码烧录的其实地址0x40004,然后F5开跑,可以正常开跑。但是如果使用板子自带的boot进行启动,则跑不起来。使用RVDS从boot开始跟踪,发现原来boot跳到主程序的过程中,跳入的地址
2011-03-15 19:07:00
4898
原创 Android HAL实践(一):Mini6410开发板上的mokoid
网上有很多人将Android的HAL,都是基于jollen的实验代码的, 讲的都很好,但是缺少在板子上的实际操作。虽然这些实践步骤做过一次就很熟悉了,但是第一次还是挺麻烦的,要到处找资料,故特地在此将我在友善之臂板子上的实验步骤记录在这里,以供大家参考,少走弯路。在此不是为友善的板子打广告,他们也没给我钱,其实这板子的Android只有基本功能,不是很爽,不知后续固件是否有更新。废话说多了,下面开始吧:1)首先mokoid下载后解压到友善的Android-2.0目录下面。Android的编译一般都是通过搜索
2011-01-10 21:40:00
4921
原创 I2S波形记录
趁着示波器和软盘都还在俺这里,再测个I2S的波形1.基本概率A)I2S的三根线, R/L选择又叫LRCK或者WS的,用于选择左/右声道,R/L=0时左声道, R/L=1时为右声道。 R/L的频率就是声音数据的采样频率,如图中的8KB)声音数据DAT一般在CLK的上升沿进行采样,有些DAC也是可以调的。每个声道里面可以容纳的CLK数必须多于数据的位数,多出来的时钟和数据DAC会丢弃不用,比如16bit采样的声音数据当一个声道是32个CLK且left-justify的时候,后面十六个时钟的数据会被DAC丢掉,不
2010-12-29 17:02:00
10262
原创 OV7670 的SCCB (I2C)波形记录
前两天,客户的YACD511SBDBC与我们的芯片无法通信,根据分析是,hold time 的问题,顺便测了几个好使的OV7670的SCCB(其实就是I2C) 读写的波形(数字模式),反正也不能浪费了,在此以记之,供以后参考。1. 几个基本概念A) 在数据传输阶段,SDA的变化只能在SCK为低电平的时候,如果在SCK高电平的时候有SDA的变化,则可能表示的是I2C的Start或者StopB)Start:当SCK为高时,SDA从高跳变到低表示I2C总线的StartC)Stop:当SCK为高时,SDA
2010-12-28 17:20:00
9627
原创 用FPGA设计LCD 转 VGA
这个东西其实是在上一个冬天就做完了,而且似乎已经产业化了,当时是为一位朋友做的,这个朋友再卖给产业化的人,就像流于俗套的故事一样,这个朋友拿到了钱,可是与我无关。想想多年前一起吃喝拉撒的场景,叹了一口气抹去那些记忆,也只能算了。现在把这个设计写在博文博文中,一方面可以回忆回忆当时的设计思路,也希望可以为其他设计FPGA的兄弟姐妹们提供一点参考。这个板子其实就是在烂大街的S3C2410的板子上加一片FPGA EP2C5,SDRAM和ADV7123。由于2410有LCD控制器,在LCD接口的外面加一片Video
2010-12-22 21:14:00
6001
2
原创 编写自己的SD/MMC Host驱动(二):工作过程和大结局
上次说到,如果注册成功的话,Linux就会开始初始化SD/MMC了,SD/MMC的初始化都是通过drivers/mmc/core/core.c里面mmc_rescan来完成的:void mmc_rescan(struct work_struct *work){ ....... if (host->ops->get_cd && host->ops->get_cd(host) == 0) goto out; ...................
2010-11-16 19:40:00
9112
1
原创 编写自己的SD/MMC Host驱动(一):注册
网上已经有很多文章写了Linux SD/MMC的驱动的分析了,尤其是SAMSUNG系列的,估计用汗牛充栋来描写都不过分。俺只能说点我自己写的基于CBP的EVB板子的SD/MMC controller的驱动了,这个驱动没有采用DMA,虽然那是我最擅长的。使用的是pio模式,其实就是CPU读写了,但是竟然也没有使用tasklet,也就没有中断的上下半部的说法了,应该不是一个很好的习惯,虽然tasklet其实就是启动一个内核运行队列,去运行pio的读写等等,本质上没有大的区别,但没有使用就是没有使用,实事求是而已
2010-11-15 19:13:00
6555
1
原创 SD/MMC 中的scatterlist
今天下午闲下来了,想想还是给EVB增加一下SD/MMC的驱动吧。SD/MMC的官方文档很少,也没有啥书写到这个问题,听说华清远见的宋宝华老师的新一版《Linux驱动开发》会讲这个问题。不过Linux最大的优点就是开源,大家都可以研究,网上也有人写了2410、2440的相关分析文章了,大家都有转载,比如以下网址的一篇:http://blog.chinaunix.net/u3/106866/showart_2203940.html基本的大家都分析了,我分析的估计还每人清楚,毕竟那也是要花时间的,我就说说这里面的
2010-11-04 18:26:00
9349
1
原创 关于platform_device和platform_driver的匹配
说句老实话,我不是太喜欢现在Linux 2.6这套bus, platform, device,device driver 的模式。我觉得这种模式破坏了“Linux简单就是美”的哲学,原来那套驱动已经可以干很多事,而且也可以直接注册驱动文件等等,以前的驱动在现在的结构上也还可以使用,把它在注册到bus这棵树上又有什么用呢?虽然可以看到一点对于移植性和平台管理方面的有点,但是我认为现在这种驱动编程的风格越来越像Windows的风格,很不直观和简约。牢骚发完了,bus结构还得继续,说说platform_devic
2010-10-22 17:15:00
9802
2
转载 [转载]platform设备驱动全透析
platform设备驱动全透析07月 14th, 2010 by 宋宝华 原文地址:http://blog.donews.com/21cnbao/archive/2010/07/14/1581997.aspx1.1 platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每 注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接
2010-10-21 15:48:00
1760
原创 清爽的NOR Flash MTD和JFFS2
最近被其他事情耽搁了一下,已经好久没有玩EVB板了,这两天想起来,EVB上还有好多外设没有玩过呢,正好有点时间玩一下。先还是玩玩NOR FLASH的MTD吧,这个东西相对写的代码比较少,而且系统一下有了可以读写而且掉电不丢失的文件系统也是蛮让人欣喜的。首先当然是要修改Kconfig,由于增加的MAP Driver,所以要在drivers/mtd/maps下面改了:config MTD_CBP_NOR_FLASH tristate "CFI Flash device mapped on VTC CBP" de
2010-10-15 18:21:00
2680
原创 Android ADB over TCP/IP 及在Mini6410开发板上运行Helloworld
前两天自己花钱买了块友善之臂的Mini6410开发板,国庆假期已经过去6天了,已经休息得有点饱和了,还是拿出来玩玩吧!之前之所以买这个Mini6410,一方面是便宜,另外一方面是这个板子可以跑Android。之前只是在验货的时候跑过一次Android,也没有怎么玩,虽然接触Linux多年,但是对Java和Android还是一点不懂。这两天看了看《JAVA核心技术》和《Android Essential》,也算有了些了解,感觉在很多概念上和VC编程还是挺相似的。不过对于我这种做驱动的人来讲,还是把程序先跑到开
2010-10-06 21:21:00
4727
4
原创 闲暇就玩USB之: USB鼠标和键盘
其实这个问题很多人都玩过了,而且HID Spec上有标准例子,但是USB鼠标和键盘的确很有意思,而且俺还尝试了一点和别人不一样的东西,在此以记之。HID SPEC上讲的键盘和鼠标都是支持boot的,就是可以被Bios支持的,比如在开机的时候设置Bios的时候就可以用。因此那个Report Descriptor真的是相当的复杂啊,都63个字节了,就差一个字节就超过俺的EP0的Max Pack Size。其实介绍Report Descriptor的最好网络文章是《USB/HID设备报告描述符详解》,看用词像个台
2010-09-29 18:22:00
5269
2
原创 闲暇就玩USB之: HID I/O
其实我对USB还是很有感情的,第一个USB是2005年给航天智通的彩票机做一个客户显示系统,就是彩票机上那个给买彩票的人看的小显示器。之前他们用的是串口,后来很多机器串口少了,而且串口一般还要给POS机之类的其他终端使用,因此需要做这么一个模块。不过当时由于初次做USB, 而且还要写Linux和Windows下的驱动,当时觉得还是用自定义的设备,使用Bulk传输比较简单,最后在AN2131(Cypress)上做了这个项目,大概卖了一千多套,后来被人山寨了,前前后后也赚了点钱,也算是为清苦的研究生生活添加了一
2010-09-26 18:11:00
3257
原创 Android之HelloWorld
其实按理说俺目前的工作和可以预期的一段时间,都不太可能使用Android开发复杂的程序,在我的想象中,做Linux驱动,Android赖以运行的Linux后台上测试过了应该也就OK了,没有必要非要写一个Android的的程序来测试它。不过很多事情都发生在这个感叹词---“但是”,一方面,现在这个玩意儿很火,就像俺偶尔换台到江苏卫视也会看看《非常男女》都是咋玩的一样。其次,说不定哪天有用户从Android界面无法正确操作驱动,而驱动在Linux后台是正确的,我就有必要把用户的代码拿来瞅瞅,找出他的问题,满足满
2010-09-15 19:11:00
2314
1
原创 为EVB添加Frame Buffer驱动(三):让驱动更兼容
上次说到,小企鹅终于可以显示了,但是现在这个世道,现在这个中国,山寨横行,没有最便宜的,只有更便宜的,今天用ILI9320的人,或许就是昨天用S6D0110,或许还是明天用和谐8347的人,不好意思是HX8347,这个可恶的输入法。因此,俺们的驱动就不能只支持ILI9320,不然客户就用别人的芯片去了。当然,客户也可以直接改cbp-fb.c或者cbp-fb.h, 可是客户是很忙的,说不定今天晚上还要去兜风呢!而且客户也不想知道,我们ASIC老大们也不想让他知道俺们的DMA和其他模块是怎么玩的,所以
2010-09-10 19:24:00
1380
原创 为EVB添加Frame Buffer驱动(二),让Frame Buffer动起来
上一回写到Frame Buffer驱动如孙小空一样砰然出世,可是只是申请了一个Buffer和向系统注册成功了而已,仅仅是个雏形。为了让LCD可以周而复始的不停刷新,在那些有控制器的CPU里面是可以通过配置时钟来控制得,咱这Ultra Low Cost的系统就用Timer来代替好了,这样在系统系统繁忙的时候或许还能少刷几帧缓解系统压力,难道这就是所谓因祸得福?! 首先当然是要初始化液晶模组了,当然就是包括Reset,然后写入一大堆的LCD参数: cbp_reset_lcd();
2010-09-07 19:36:00
1056
原创 为EVB添加 Frame Buffer驱动(一):基本套路
一个嵌入式系统如果有了LCD显示,那肯定会添彩不少,正好俺们的EVB上是标配LCD的,所以可以给它添个Frame Buffer驱动。以前改过S3C2410的Frame Buffer驱动,代码过于冗长,而且S3C2410是是大户人家的东东,自己带LCD控制器,可以直接支持“玻璃“也可以支持模组(通过总线)的,关于玻璃和模组请看文章后面的备注。俺们设计芯片的原则不是Low Cost, 而是Ultra Low Cost,还美名其曰ULC。不过好歹也是个外企,虽然在51Job上叫外企(其它),我们还是有一个专门的
2010-09-06 19:12:00
1610
1
原创 小工具地址列表
1. BitAnalyzer功能:查看十六进制的每个bit的状态,对分析寄存器尤其有效。地址:http://cid-a0a942ebd8c6c3b5.office.live.com/self.aspx/.Documents/BitAnalyzer.rar对应博客:http://blog.youkuaiyun.com/dfysy/archive/2010/07/20/5750621.aspx2. MergeFiles功能:把多个文件合并至一个文件中的不同位置,通过config.cfg配置输入输出文件已经位置地址:http
2010-09-06 12:28:00
1150
原创 ARM Linux 的XIP还是挺好用的
一般来说,现在的ARM Linux嵌入式系统都是将Image拷贝到SDRAM中进行运行的标准方式,尤其是像S3C6410和S3C2410这些支持NAND Flash的处理器,一般硬件设计直接把NOR Flash都省了,更是必须在SDRAM中运行。 可是存在就是合理的,XIP作为一项古老的技术,还是有一定的用处的,比如可以减少开机等待时间,也可能可以增加电池寿命,当然这个都是有条件的,在Intel的《creating optimized XIP systems》elinux.org/u
2010-08-12 19:06:00
6191
原创 嵌入式Linux中使用动态和静态编译的有趣现象
<br /> 以前在Freescale 的i.MX和三星的2410板子上开发Linux的时候,内存容量都是32M,甚至128M的SDRAM,想怎么用就怎么用。在移植Busybox也是采取的动态链接的方式进行编译。<br /> 可是今天遇到问题了,而57的EVB的内存只有8MB,而且我的内核还不是XIP运行的,加上为了调试内核方便,采用的是O1的编译选项,大概有2.4M内核。<br /> 编译的busybox是224K,通过readelf知道其依赖动态库位libc.so.6, 为
2010-07-22 19:35:00
1973
1
原创 自己N年前写的一个查看十六进制的位的小程序
这个小程序还是蛮有意思的,为调试嵌入式的时候查看寄存器某一位或者几位的值提供便利,软件已经上载到优快云下载区,应该很快就可以下载了。一下是其使用方法,那个下载包里面有个一模一样的文档:1. 查看bitA) 在数据输入框里面输入十六进制数据,如”Fd123478”,下面对应的bit 位上会以红色底色显示为1 的bit,以蓝色底色显示为0 的bitB) 如果在选择位范围内输入位的范围,比如“4,8”查看第4 到第8 位,再点击“select”则会在下面的二进制里面显示选中的bit 位的组合的值,如“fd123
2010-07-20 19:18:00
1558
robot source code
2015-03-06
Android HAL实例的mokoid 源代码下载
2011-01-10
VC6编写的HID读写测试工具
2010-09-26
VB6编写的HID读写测试工具
2010-09-26
hid.lib setupapi.lib 等HID开发相关的库和头文件
2010-09-26
位查看小工具BitAnalysis
2010-07-20
Fundamentals of embedded audio.pdf
2009-08-26
C++.GUI.Programming.with.Qt.4
2008-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人