arm-linux

http://armboard.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

摘要: 相信每位想从事嵌入式开发人员的心中都会有一个梦,梦想自己成为这个领域的大牛,或是成为linux驱动开发的高手,或是成为内核开发的大级。我始终相信,只要心中有梦想,并付出辛劳和汗水,每个人都能达到心中所想。但这段路非常曲折崎岖,如果没有个好的领路人,久了会发现在这领域中自己在当中摸爬滚打,但却收效甚微,同时信心也倍受打击。工欲善其事,必先利其器!嵌入式开发的入门者所必需的,是手头上有开发板,有相应的资料,最好有相应的视频教程,必要时还需要有人的指导。这些可能参加一些培训机构可以做得到,但其价钱呢?确实不是一般家庭的人能支付得起的,动辄上万!这样的成本和付出到底有没必要得看个人咯,我当年就支付不起 阅读全文
posted @ 2012-12-14 22:19 arm-linux 阅读(5284) 评论(0) 推荐(1) 编辑

2012年3月14日

摘要: 作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM公司授权ATC讲师。 关于自旋锁用法介绍的文章,已经有很多,但有些细节的地方点的还不够透。我这里就把我个人认为大家容易有疑问的地方拿出来讨论一下。 一、自旋锁(spinlock)简介 自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占式内核中需要的锁定服务。 二、信号量简介 这里也介绍下信号量的概念,因为它的用法和自旋锁有相似的地方。Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处. 阅读全文
posted @ 2012-03-14 16:20 arm-linux 阅读(1069) 评论(0) 推荐(1) 编辑

摘要: 本章已介绍了很多符号给并发的管理. 最重要的这些在此总结:#include <asm/semaphore.h> //定义信号量和其上操作的包含文件.信号量的定义和初始化(1)静态定义及初始化DECLARE_MUTEX(name);DECLARE_MUTEX_LOCKED(name); (2)动态定义及初始化struct semaphore semvoid init_MUTEX(struct semaphore *sem);void init_MUTEX_LOCKED(struct semaphore *sem);信号量的获取和释放void down(struct semaphore 阅读全文
posted @ 2012-03-14 15:38 arm-linux 阅读(693) 评论(0) 推荐(0) 编辑

2012年3月9日

摘要: 本章介绍了下面符号和头文件. struct file_operations 和 struct file 中的成员的列表这里不重复了.#include <linux/types.h>dev_t dev_t 是用来在内核里代表设备号的类型.int MAJOR(dev_t dev);int MINOR(dev_t dev);从设备编号中抽取主次编号的宏.dev_t MKDEV(unsigned int major, unsigned int minor);从主次编号来建立 dev_t 数据项的宏定义.#include <linux/fs.h>"文件系统"头 阅读全文
posted @ 2012-03-09 11:41 arm-linux 阅读(480) 评论(0) 推荐(0) 编辑

摘要: 模块参数 驱动需要知道的几个参数因不同的系统而不同. 从使用的设备号( 如我们在下一章见到的 )到驱动应当任何操作的几个方面. 例如, SCSI 适配器的驱动常常有选项控制标记命令队列的使用, IDE 驱动允许用户控制 DMA 操作. 如果你的驱动控制老的硬件, 还需要被明确告知哪里去找硬件的 I/O 端口或者 I/O 内存地址. 内核通过在加载驱动的模块时指定可变参数的值, 支持这些要求. 这些参数的值可由 insmod 或者 modprobe 在加载时指定; 后者也可以从它的配置文件(/etc/modprobe.conf)读取参数的值. 这些命令在命令行里接受几类规格的值. 作为演示这种能 阅读全文
posted @ 2012-03-09 11:25 arm-linux 阅读(472) 评论(0) 推荐(0) 编辑

2012年3月1日

摘要: 45 struct fb_info *registered_fb[FB_MAX] __read_mostly;这个是全局的变量,通过这个全局变量,在系统内可以随时获取需要的fb_info,具体的获取方法是通过比对 registered_fb[i]->fix.id来确定需要的fb_info, 示例代码如下 for (i = 0; i < num_registered_fb; i++) { char *idstr = registered_fb[i]->fix.id; if (strcmp(idstr, "DISP3 FG") == 0) { fbi = re 阅读全文
posted @ 2012-03-01 14:53 arm-linux 阅读(5472) 评论(0) 推荐(0) 编辑

2012年2月29日

摘要: 高通MSM8260/8660 高通的处理器可能是市面上最为常见的了,首先我们就来看一下高通的双核处理器。 现如今手机上使用的高通MSM8260和MSM8660这两款处理器除去支持的网络制式不一样和各机型默认的主频有所差异之外并没有其他区别,所以我们挑选了两款比较有代表性的机型-HTC G18和小米M1来进行跑分。小米(左)和G18(右)超级兔子跑分 高通MSM8260/8660内置有两个应用处理器内核,原始主频均为1.5GHz,512KB 二级缓存(Cortex A9使用1MB L2 Cache),45纳米工艺,支持LPDDR2 1066的内存,采用高通基于ARM v7指令集而自行开发的Sco 阅读全文
posted @ 2012-02-29 14:24 arm-linux 阅读(2695) 评论(1) 推荐(1) 编辑

摘要: 作者: 李先静 xianjimli@gmail.com 日期: 2010-01-14 本文介绍了 Android 的 framebuffer 的整体架构,图文并茂,比较清晰。文章转自 http://www.limodev.cn/blog简介FrameBuffer 在Android中并不像在其它GUI那样直观,抽象的层次比较多,加上GUI的更新是通过OpenGLES来做的。所以让人很难搞清GUI更新的整个流程,最近要准备一个讲稿,所以花了一些去研究,这里做点笔记供大家参考,源代码是基于高通平台的,这些代码在网上都可以下载。FrameBuffer 的相关组件如下图所示:SurfaceFlinger 阅读全文
posted @ 2012-02-29 11:20 arm-linux 阅读(5425) 评论(0) 推荐(1) 编辑

摘要: 这周抽空研究了一下SurfaceFlinger,发现真正复杂的并不是SurfaceFlinger本身,而是android的display显示系统,网上关于这部分的介绍有不少,本不打算写的,但是发现还是记录一下研究代码的过程比较好,一是能够帮助自己理清思路,另一个原因就是以后当这块内容忘记的时候,能快速的通过这个记录捡起来。 一. android显示系统的建立 我们看SurfaceFlinger的定义就知道,它其实是一个Thread, 因此SurfaceFlinger的初始化工作就理所当然的放在了SurfaceFlinger线程中,详见readyToRun()@SurfaceFlinger.cp 阅读全文
posted @ 2012-02-29 10:54 arm-linux 阅读(16407) 评论(0) 推荐(3) 编辑

2012年2月27日

摘要: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx经过上面几节的铺垫,终于要来重点了,由于内核的进程调度和中断(中断还没讲,不过这里会大概的说说),它们都会进入内核共用内核的资源。所以,只要一不留神,自己进程的资源就会在不经意的情况下被别的进程修改了。这节将介绍并讨论如何解决。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、什么是并发所谓的并发,就 阅读全文
posted @ 2012-02-27 10:17 arm-linux 阅读(1066) 评论(1) 推荐(1) 编辑