嵌入式Linux
文章平均质量分 83
dfysy
这个作者很懒,什么都没留下…
展开
-
嵌入式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 · 1951 阅读 · 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 · 6515 阅读 · 3 评论 -
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 · 9311 阅读 · 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 · 9750 阅读 · 5 评论 -
[转载]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 · 1726 阅读 · 0 评论 -
清爽的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 · 2645 阅读 · 0 评论 -
为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 · 1034 阅读 · 0 评论 -
为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 · 1574 阅读 · 1 评论 -
为EVB添加Frame Buffer驱动(三):让驱动更兼容
上次说到,小企鹅终于可以显示了,但是现在这个世道,现在这个中国,山寨横行,没有最便宜的,只有更便宜的,今天用ILI9320的人,或许就是昨天用S6D0110,或许还是明天用和谐8347的人,不好意思是HX8347,这个可恶的输入法。因此,俺们的驱动就不能只支持ILI9320,不然客户就用别人的芯片去了。当然,客户也可以直接改cbp-fb.c或者cbp-fb.h, 可是客户是很忙的,说不定今天晚上还要去兜风呢!而且客户也不想知道,我们ASIC老大们也不想让他知道俺们的DMA和其他模块是怎么玩的,所以原创 2010-09-10 19:24:00 · 1354 阅读 · 0 评论 -
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 · 6102 阅读 · 0 评论 -
编写自己的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 · 9062 阅读 · 1 评论