嵌入式开发--蒹葭的专栏

Care and Diligence Bring Luck.(谨慎和勤奋才能抓住机遇!)

2009年07月04日

转载 转一篇介绍开发嵌入式经验的文章,写得不错,比较中肯,适合一看。


如何从零开始开发一款嵌入式产品(20年的嵌入式经验)


来源:www.armjishu.com
作者:jesse
转载请注明出处

      首先,如果你有幸看到这篇文章,千万不要试图在2个小时内阅读完,就算你2个小时阅读完,我相信你也不会理解里面讲解的精华之处,我相信,你应该将此文章,慢慢品尝,这绝对是一篇需要品尝2~3天,再结合自己过往的经验,加上自己的思考,我相信会对你不仅仅是技术能力,甚至包括整体的思维方式都会有一个非常大的提高。

      我写这篇文章的目的,是用本人20年的嵌入式经验呈现给大家一副完整的产品,项目开发蓝图,用本人多年经的历总结了一些教训无私的分享给各位,希望各位今后能站在本人的肩膀之上,少走弯路,多为公司,为个人多做贡献,那我的愿望就达到了,也同时希望能看到大家反馈和回复,留个脚印,留下你的见解和智慧,为后人乘凉打点基础,先在这谢谢各位了。

那么由此开始我们充满知识的旅程吧,最重要的一点,就是在一个产品或项目的开发过程中,阅读全文>

发表于 @ 2009年07月04日 20:31:00|评论(loading...)|举报|收藏

2009年06月28日

转载 Makefile与Shell的问题


大概只要知道Makefile的人,都知道Makefile可以调用Shell脚本。但是在实际使用时,并不那么简单,一些模棱两可的地方可能会让你抓狂。你若不信,可以先看几个例子,想象一下这些这些例子会打印什么内容,记下你想象的结果,然后在计算机上运行这些例子,对照看一下。

示例一:

if [ "$(BUILD)" = "debug" ]; then  echo "build debug"; else echo "build release"; fi
all:
    echo "done"

示例二:

all:
    @CC=arm-linux-gcc
    @echo $(CC)

示例三:

CC=arm-linux-gcc
all:
    @echo $(CC)

示例四:

SUBDIR=src example
al阅读全文>

发表于 @ 2009年06月28日 15:43:00|评论(loading...)|举报|收藏

2009年06月21日

原创 嵌入式GUI设计第一阶段回顾


从立项到现在已经有1,2个月了。

第一个月主要处理自己的事,基本以调研为主。原先要用xynth 这个GUI的,但是发现它虽然占用资源小,启动快。但是功能比较弱,文档不全,支持也十分不好。在对资源十分讲究,而GUI界面要求不是很高的情况下可以用用。我们这个项目,采用ARM9 2410作为处理器,RAM有256M,关键客户要求人机界面美观大方。所以最后还是选用QT作为我们的GUI设计软件。

第二个月就是用QT来设计了。目前,QT最新版是4.5.1。相比较前一版本4.4.3,在运行速度上有明显改善。
本人实测结果和官方文档描述的基本一致,性能上基本能改善一倍多。QT还可以进一步优化,做到按需定制,的确比GTK更适合嵌入式。当然,对qt本身的优化就是configure配置 和qconfig了。自己的应用程序也要优化。这里大有文章可做。

第一阶段回顾,只能说QT才刚刚入门。QT的许多功能还没用上。QT的确很强大,更重要的是,现在的QT被诺基亚收购后,已经是完全开源,完全免费使用的了。哈哈,广大嵌入式老板阅读全文>

发表于 @ 2009年06月21日 09:12:00|评论(loading...)|举报|收藏

2009年06月19日

原创 全角字符unicode码对应表

Uni. GB   Uni. GB   Uni. GB   Uni. GB   Uni. GB   00A4 A1E8 ¤ 00A7 A1EC § 00A8 A1A7 ¨ 00B0 A1E3 ° 00B1 A1C0 ± 00B7 A1A4 · 00D7 A1C1 × 00E0 A8A4 à 00E1 A8A2 á 00E8 A8A8 è 00E9 A8A6 é 00EA A8BA ê 00EC A8AC ì 00ED A8AA í 00F2 A8B0 ò 00F3 A8AE ó 00F7 A1C2 ÷ 00F9 A8B4 ù 00FA A8B2 ú 00FC A8B9 ü 0101 A8A1 ā 0113 A8A5 ē 011B A8A7 ě 012B A8A9 ī 014D A8AD ō 016B A8B1 ū 01CE A8A3 ǎ 01D0 A8AB ǐ 01D2 A8AF ǒ 01D4 A8B3 ǔ 01D6 A8B5 ǖ 01D阅读全文>

发表于 @ 2009年06月19日 10:37:00|评论(loading...)|举报|收藏

2009年05月29日

原创 FONTDIR的简介


一个典型的FONTDIR文件的内容如下所示:
fixed fixed_120_50.qpf QPF n 50 120
helvetica helvetica_80_50.qpf QPF n 50 80
helvetica helvetica_120_50.qpf QPF n 50 120 u
helvetica helvetica_120_75.qpf QPF n 75 120 u
helvetica helvetica_140_75.qpf QPF n 75 140
helvetica helvetica_180_75.qpf QPF n 75 180
    文件中每行都标识一个特定的字库,每个段的含义是:第一列为name,第二列为file,第三列为renderer,相当于字型格式,所以有BDF,TTT,QPF等选择。第四列n表示iitalic,表示是否为斜体字。第五列表示weight,其中50表示Normal,75表示Bold。第六列表示size,例如:120表示12pt。第七列为flags,有下面阅读全文>

发表于 @ 2009年05月29日 13:21:00|评论(loading...)|举报|收藏

2009年05月26日

转载 信号(signals)和槽(slots)


信号(signals)和槽(slots)
信号和信号槽被用于对象(object)之间的通信。信号和槽机制是QT的重要特征并且也许是QT与其他框架最不相同的部分。
前言
在GUI程序设计中,通常我们希望当对一个窗口部件(widget)进行改变时能告知另一个对此改变感兴趣的窗口部件。更一般的,我们希望任何一类的对象(object)都能和其他对象进行通信。例如,如果用户单击一个关闭按钮,我们可能就希望窗口的 close() 函数被调用。
早期的工具包用回调(backcalls)的方式实现上面所提到的对象间的通信。回调是指一个函数的指针,因此如果你希望一个处理函数通知你一些事情,你可以传递另一个函数(回调函数)指针给这个处理函数。这个处理函数就会在适当的时候调用回调函数。回调有两个重要的缺陷:首先,它们不是类型安全的。我们无法确定处理函数是用正确的参数调用这个回调函数。其次,回调与处理函数紧密的联系在一起以致处理函数必须知道调用哪个回调。
消息和槽
在QT中,我们使用一种可替代回调的技术:信号和槽机制。当一个特别的事件产生阅读全文>

发表于 @ 2009年05月26日 12:15:00|评论(loading...)|举报|收藏

2009年04月23日

原创 嵌入式Linux系统中的GUI系统的研究与移植


引言
嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用需求。总体来讲,嵌入式GUI具备以下特点:
*体积小;
*运行时耗用系统资源小;
*上层接口与硬件无关,高度可移植;
*高可靠性;
*在某些应用场合应具备实时性。
1 基于嵌入式Linux的GUI系统底层实现基础
一个能够移植到多种硬件平台上的嵌入式GUI系统,应用至少抽象出两类设备:基于图形显示设备(如VGA卡)的图形抽象层GAL(Graphic Abstract Layer),基于输入设备(如键盘,触摸层等)的输入抽象层IAL(Input Abstract Layer)。GAL层完成系统对具体的显示硬件设备的操作,极大程度上隐蔽各种不同硬件的技术实现细节,为诮程序开发人员提供统一的图形编程接口。 IAL层则需要实现对于各类不同输入设阅读全文>

发表于 @ 2009年04月23日 17:47:00|评论(loading...)|举报|收藏

2009年04月22日

转载 怎样写 Linux LCD 驱动程序

怎样写 Linux LCD 驱动程序 作者: 刘鹏 日期: 2008-12-27 本文分析了frame buffer 设备驱动的主要数据结构,在此基础上介绍了LCD驱动程序的开发。 基本原理通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来; 驱动程序分配系统内存作为显存;实现 file_operations 结构中的接口,为应用程序服务;实现 fb_ops 结构中的接口,控制和操作 LDC 控制器; 驱动程序将显存的起始地址和长度传给 LCD 控制器的寄存器 (一般由 fb_set_var 完成) , LDC 控制器会自动的将显存中的数据显示在 LCD 屏上。 写 framebuffer 驱动程序要做什么简单的讲,framebuffer 驱动的功能就是分配一块内存作显存,然后对 LCD 控制器的寄存器作一些设置。 具体来说: 填充一个 fbinfo 结构 用 reigster_framebuffer (fbinfo*) 将 fbinfo 结构注册到内核 对于 fbinfo 结构,最主要的是它的 阅读全文>

发表于 @ 2009年04月22日 16:04:00|评论(loading...)|举报|收藏

2009年04月11日

原创 准备移植xynth到arm板上了。

xynth是一个轻量级的开源GUI,有很炫的效果。详细如下:Xynth Windowing System What is?Xynth is a portable embedded windowing system, client/server interface between display hardware (mouse, keyboard, video displays) and the desktop environment that works on many hardware, including embedded devices (handhelds, set-top boxes, etc.). FeaturesTCP/IP (allows client/server connection on different hosts) UDS (Unix Domain Sockets) pipe() based socket api implementation. usefull for embedded devices. (there is阅读全文>

发表于 @ 2009年04月11日 19:54:00|评论(loading...)|举报|收藏

2009年02月02日

转载 嵌入式linux GUI--DirectFB + GTK至尊秘笈


                                                                                                                    www.directfb.com.cn
                                                                                                                     kendych@sina.com.cn
版权申明: 本文档一切权利归本人(kendych@sina.com.cn)所有,用于商业用途徐征得本人同意,如无法联系到本人,须征得www.directfb.com.cn所有者同意;用于非商业用途的,无需任何许可,但请尊重本人的署名权,并注明出处www.directfb.com.cn及附加本申明。
关键词: 嵌入式 GUI arm linux DirectFB GTK tslib
1 前言阅读全文>

发表于 @ 2009年02月02日 16:10:00|评论(loading...)|举报|收藏

Csdn Blog version 3.1a
Copyright © 蒹葭