MTK - renjwjx的BLOG http://renjwjx.52rd.net/ - 复制 - 收藏
博 文
linux的线程同步机制 (2009-1-16 11:07)
  互斥锁 尽管在Posix Thread中同样可以使用IPC的信号量机制来实现互斥锁mutex功能,但显然semphore的功能过于强大了,在Posix Thread中定义了另外一套专门用于线程同步的mutex函数。 1. 创建和销毁 有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; 在LinuxThreads实现中,pthread_mutex_t是一个结构,而PTHREAD_MUTEX_INITIALIZER则是一个结构常量。 动态方式是采用pthread_mutex_init()函数来初始化互斥锁,API定义如下: int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr) 其中mutexattr用于指定互斥锁属性(见下),如果为NULL则使用缺省属性。 pthread_mutex_destroy()用于注销一个互斥锁,API定义如下: int pthread_mutex_destroy(pthread_mutex_t *mutex) 销毁一个互斥锁即意味着释放它所占用的资源,且要求锁当前处于开放状态。由于在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的pthread_mutex_destroy()除了检查锁状态以外(锁定状态则返回EBUSY)没有其他动作。 2. 互斥锁属性 互斥锁的属性在创建锁的时候指定,在LinuxThreads实现中仅有一个锁类型属性,不同的锁类型在试图对一个已经被锁定的互斥锁加锁时表现不同。当前(glibc2.2.3,linuxthreads0.9)有四个值可供选择: PTHREAD_MUTEX_TIMED_NP,这是缺省值,也就是普通锁。当一个线程加锁以后,其余请求锁的线程...
线程终止方式 一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。 回页首 线程终止时的清理 不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利的释放掉自己所占用的资源,特别是锁资源,就是一个必须考虑解决的问题。 最经常出现的情形是资源独占锁的使用:线程为了访问临界资源而为其加上锁,但在访问过程中被外界取消,如果线程处于响应取消状态,且采用异步方式响应,或者在打开独占锁以前的运行路径上存在取消点,则该临界资源将永远处于锁定状态得不到释放。外界取消操作是不可预见的,因此的确需要一个机制来简化用于资源释放的编程。 在POSIX线程API中提供了一个pthread_cleanup_push()/pthread_cleanup_pop()函数对用于自动释放资源--从pthread_cleanup_push()的调用点到pthread_cleanup_pop()之间的程序段中的终止动作(包括调用pthread_exit()和取消点终止)都将执行pthread_cleanup_push()所指定的清理函数。API定义如下: void pthread_cleanup_push(void (*routine) (void *), void *arg) void pthread_cleanup_pop(int execute) pthread_cleanup_push()/pthread_cleanup_pop()采用先入后出的栈结构管理,void rout...
前几天一直在搞Ubuntu 8.04下安装了MiniGUI 2.0.4,总结了最简单. 注意安装过程要保持网络连接!中间要下载lib 如果是用的vmware的虚拟机的话,请上网查找相关网络设置。 1.在WWW.MINIGUI.COM 下载 minigui-procs-dev_2.0.4Ubuntu7.10_i386.deb。  顺便下载其它两个示例包。 samples-1.6.10.tar.gz mg-samples-1.6.10.tar.gz 然后双击DEB包安装完后!   2.在终端上运行qvfb,会提示没有安装qt, 按照所给的提示安装完后就可以启动qvfb了。 sudo apt-get install qt3-dev-tools-embedded   2.在默认的安装下,MINIGUI是支持JPEG的,可是C库缺少这个,曾经为装这个库文件花了挺长时间,其实最简单的,打开新立得管理软件 sudo apt-get install libjpeg-dev . 然后设置如下 export gal_engine=qvfbexport defaultmode=640x480-16bppexport ial_engine=qvfb   3. 默认的安装上ubuntu上是没有libpopt的,所以我们要安装它。 sudo apt-get install libpopt-dev 网上的很多教程都没提到这个,导致我摸索了好多天才搞定。   4.解压之前下载的其中一个示例包,比如mg-samples-1.6.10 进去目录 在终端输入 ./configure 再输入make 编译完以后, 先运行 qvfb & 再运行 cd src ./button 则关于button的button的例子就运行出来了。 如果有权限问题,请去设置configure的运行权限。
几种格式字库的简介 (2008-12-23 16:33)
 几种格式字库的简介    QT支持四种格式的字库(TTF,BDF,PFA/PFB,QPF)(见参考文献[3]),但在产品中,如果直接使用,TTF或PFA/PFB。即让应用程序在显示的时候再计算点阵,最终的效果并不理想,会发现有些字大,有些字小,而且需要占用非常多的FLASH和内存,速度也有点慢,所以我在此不想过多的介绍PFA/PFB。如果直接使用BDF,速度非常慢,而且需要占用比较多的FLASH和内存;使用QPF,速度和占用其它资源是最小的,因此我们最终的产品中采用QPF格式。下面我简单介绍,TTF,BDF和QPF字体的结构,这样就比较容易理解后面的转换过程。1.1  TTF字体   TTF(TrueType Font)是Apple公司和Microsoft公司共同推出的字体文件格式,随着Windows的流行,已经变成最常用的一种字体文件表示方式。TTF字体已经成功用在Windows中文版生成汉字字库,此字体采用二次B样条曲线来描述字符轮廓,对字符轮廓的上的点,按顺时针方向从小到大编号,填充部分在其右边。TTF文件结构分成三个部分:文件名(12Bytes),描述表目录(每个16Bytes),描述表数据。    对于每一个字,都有一个假想的矩形框,正常情况字是不会超出这个矩形框的,中文属于象形字,不象英文,大小不一致,比如:英文中的f就可能会超出矩形框。微软把矩形的高度称为EM,实际字符的高度称为BODY.矩形框最原始的坐标系是矩形的中心为原点,但为了实际字体在打印和显示的使用过程中的方便,通常将坐标原点放在左下角,或中下。    通常,在实际打印过程中,TTF字体是用像...
BDF 字体文件格式 (2008-12-23 16:18)
BDF 字体文件格式 提交者: Addylee 日期: 10/31 7:50 阅读: 59 摘要:BDF是Adobe制定的点阵字体文件,也是XWindow系统中使用的字体文件,我在学校过程中发现,网上资料比较少,中文资料基本没有,因此我在阅读相关英文资料的基础上,根据自己的理解写了这篇总结与大家交流,错误和不完善的地方,期待各位斧正。 标题 字体文件整体信息 字体文件属性信息 字体信息 BDF是XWindow系统中使用的字体文件,全称是Glypn BitmapDistribution Format (BDF)。BDF是Adobe制定的,他是点阵字体的文本描述。因此可以直接使用文本编辑器直接浏览。BDF的文档见http://partners.adobe.com/public/deve ... en/font/5005.BDF_Spec.pdf 字体文件整体信息 下面是文泉驿(http://wenq.org/)点阵宋体的对应的BDF文件片段:STARTFONT 2.1 FONT -wenquanyi-wenquanyi bitmap song-medium-r-normal--16-160-75-75-P-80-iso10646-1 SIZE 16 75 75 FONTBOUNDINGBOX 17 18 -1 -4 STARTFONT 2.1 表示这是BDF规范的版本号,目前的版本号为2.2,2.1是XWindow System使用的字体版本号。 FONT 说明了这个文件的基本信息。这里为 -wenquanyi-wenquanyi bitmap song-medium-r-normal--16-160-75-75-P-80- SIZE 指定了每一个字的大小。格式为 SIZE PointSize Xres Yres. 其中PointSize表示每一个点的大小(单位是什么呢?),Xres, Yres分别表示X和Y方向的分辨率,单位是DPI(表示每平方英寸多少个点,值越大单位面积的点越多,对应的分辨率越高。)。 FONTBOUNDI...
基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(四)使用 GDI 函数 魏永明 (ymwei@minigui.org)自由撰稿人2001 年 8 月 引言 图形设备上下文 矩形操作和区域操作 基本绘图函数 位图操作函数 逻辑字体操作函数 小结 作者介绍本文讲述 MiniGUI 中 GDI 函数及其使用。主要包括:设备上下文的概念、获取和释放;矩形操作和区域操作;基本绘图函数;位图操作函数;逻辑字体操作函数等。 1 引言 GUI 系统的一个重要组成部分就是 GDI,即图形设备接口(Graphics Device Interface)。通过 GDI,GUI 程序就可以在计算机屏幕上,或者其他的显示设备上进行图形输出,包括基本绘图和文本输出。本文将详细描述 MiniGUI 中的 GDI 函数,并举例说明重要函数的用法。其中包括:DC 的概念、获取和释放;矩形操作和剪切域操作;基本绘图函数;位图操作函数;逻辑字体操作函数等。 2 图形设备上下文 在 MiniGUI 中,采用了在 Windows 和 X Window 中普遍采用的图形设备概念。每个图形设备定义了计算机显示屏幕上的一个矩形输出区域。在调用图形输出函数时,均要求指定经初始化的图形设备上下文(Device Context,DC),也称作"设备环境"。从程序员的角度看,一个经过初始化的图形设备上下文确定了其后进行图形输出的一些基本属性,并一直保持这些属性,直到被改变为止。这些属性包括:输出的线条颜色、填充颜色、字体颜色、字体形状等等。而从 GUI 系统角度来讲,一个图形设备上下文所代表的含义就要复杂得多,它起码应该包含如下内容: 该设备上下文本...
基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(三)对话框和控件编程 魏永明 (ymwei@minigui.org)自由撰稿人2001 年 7 月 1 引言 2 控件和控件类 3 控件子类化 4 对话框和对话框模板 5 MSG_INITDIALOG 消息 6 模态对话框和非模态对话框 7 小结 作者介绍本文讲述 MiniGUI 中的对话框和控件编程。首先讲解 MiniGUI 中的控件类和控件实例的关系,并举例说明控件子类化的概念及应用;其次讲解 MiniGUI 对话框的编程技术,包括对话框模板的定义和对话框回调函数的编程;最后解释模态对话框和非模态对话框之间的区别。 1 引言 对话框编程是一个快速构建用户界面的技术。通常,我们编写简单的图形用户界面时,可以通过调用 CreateWindow 函数直接创建所有需要的子窗口,即控件。但在图形用户界面比较复杂的情况下,每建立一个控件就调用一次 CreateWindow 函数,并传递许多复杂参数的方法很不可取。主要原因之一,就是程序代码和用来建立控件的数据混在一起,不利于维护。为此,一般的 GUI 系统都会提供一种机制,利用这种机制,通过指定一个模板,GUI 系统就可以根据此模板建立相应的主窗口和控件。MiniGUI 也提供这种方法,通过建立对话框模板,就可以建立模态或者非模态的对话框。 本文首先讲解组成对话框的基础,即控件的基本概念,然后讲解对话模板的定义,并说明模态和非模态对话框之间的区别以及编程技术。 2 控件和控件类 许多人对控件(或者部件,widget)的概念已经相当熟悉了。控件可以理解为主窗口中的子窗口。这些子窗口的...
基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二)理解消息循环和窗口过程 魏永明 (ymwei@minigui.org)自由撰稿人2001 年 7 月 引言 消息和消息循环 几个重要的消息处理函数 MiniGUI-Threads 和 MiniGUI-Lite 在消息处理上的不同 窗口的建立和销毁 几个重要消息 Hello, World 小结 关于作者在利用 MiniGUI 开发应用程序之前,首先要理解的两个概念就是消息循环和窗口过程。消息循环是事件驱动的 GUI 编程之基础。而窗口则是图形用户界面的最基本交互元素。本文描述了 MiniGUI 中与消息相关的几个重要函数,也描述了 MiniGUI-Threads 和 MiniGUI-Lite 在消息循环实现上的几个不同。本文还讲述了在 MiniGUI 中的窗口建立和销毁过程,并解释了窗口过程的概念以及对一些重要消息的处理。 引言 我们知道,流行的 GUI 编程都有一个重要的概念与之相关,即"事件驱动编程"。事件驱动的含义就是,程序的流程不再是只有一个入口和若干个出口的串行执行线路;相反,程序会一直处于一个循环状态,在这个循环当中,程序从外部输入设备获取某些事件,比如用户的按键或者鼠标的移动,然后根据这些事件作出某种的响应,并完成一定的功能,这个循环直到程序接受到某个消息为止。"事件驱动"的底层设施,就是常说的"消息队列"和"消息循环"。本文将具体描述 MiniGUI 中用来处理消息的几个重要函数,并描述 MiniGUI-Threads 和 MiniGUI-Lite 在消息循环实现上的一些不同。 窗口是 MiniGUI 当中最基本的 GUI 元素,一旦窗口建立之后,窗口就会从消息队列当...
mtk各个芯片的不同 (2008-8-14 17:12)
为了让大家更多的了解MTK平台,我在这里概括说一下MTK各芯片的情况。希望对你有帮助。MT6205、MT6217、MT6218、MT6219、MT6226、MT6227、MT6228均为基带芯片,所以芯片均采用ARM7的核。MT6305、MT6305B为电源管理芯片。MT6129为RF芯片RF3146(7×7mm)、RF3146D(双频)、RF3166(6×6mm)为RFMD的PAMT6205为最早的方案,只有GSM的基本功能,不支持GPRS、WAP、MP3等功能。(2003年MP)MT6218为在MT6205基础上增加GPRS、WAP、MP3功能。MT6217为MT6218的cost down方案,与MT6128 PIN TO PIN,只是软件不同而已,另外MT6217支持16bit数据。(2004年MP)MT6219为MT6218上增加内置AIT的1.3M camera处理IC,增加MP4功能。8bit数据。(2005年MP)MT6226 为MT6219 cost down产品,内置0.3M camera处理IC,支持GPRS、WAP、MP3、MP4等,内部配置比MT6219优化及改善,比如配蓝牙是可用很便宜的芯片CSR的BC03模块 USD3即可支持数据传输(如听立体声MP3等)功能。MT6226M为MT6226高配置设计,内置的是1.3M camera处理IC。(2006年MP)[52RD.com]MT6227与MT6226功能基本一样,PIN TO PIN,只是内置的是2.0M camera处理IC。(2006年MP)MT6228比MT6227增加TV OUT功能,内置3.0M camera处理IC,支持支持GPRS、WAP、MP3、MP4。(2006年MP)从MT6226 后软件均可支持网络摄像头功能,也就是说你的机子可以用于QQ视频。[52RD.com]MT6226A是MTK的26平台早期的产品,现在已经切换到成 熟的MT6226B,主要区别在于声音处理AMR解码方面改善,MT6226M则是将内置摄像处理IC提高到130万象素,MT6226C是可以...
1
博 主
进入renjwjx的首页
博客名称:MTK
日志总数:9
评论数量:26
访问次数:28081
建立时间:2008-8-14 17:12:00
导 航
公 告
本博客主要记录工作之中遇到的问题,或者是相关的一些技术文章!
评 论
链 接