自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

国产开源 GUI 引擎 AWTK

主要致力于基于linux的嵌入式系统的学习和研究,包括内核、驱动、GUI、MMI、软件设计方法和软件优化等方面.

  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 系统程序员成长计划-并发(五)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 无锁(lock-free)数据结构提到并行计算通常都会想到加锁,事实却并非如此,大多数并发是不需要加锁的。比如在不同电脑上运行的代码编辑器,两者并发运行不需要加锁。在一台电脑上同时运行的媒体播放放器和代码编辑器,两者并发运行不需要加锁(当然系统调用和进程调度是

2008-12-31 07:57:00 5820 6

原创 系统程序员成长计划-并发(四)(下)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 读写锁读写锁在加锁时,要区分是为了读而加锁还是为了写而加锁,所以和递归锁不同的是,它无法兼容Locker接口了。不过为了做到不依赖于特定平台,我们可以利用Locker的接口来抽象锁的实现。利用现有的锁来实现读写锁。读写锁的可变的部分已经被Locker隔离了,所以读写锁本身不需要做成接口

2008-12-30 07:25:00 4077 3

原创 系统程序员成长计划-并发(四)(上)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 读写锁在前面的实现中,像dlist_length这类的查询函数也要加锁,那样才能保证在查询过程中对象的状态不会被其它线程所改变。加锁阻止了其它线程修改对象,也阻止其它线程查询对象。如果大多数情况下,线程只是查询对象的状态而不修改它,这种设计不是一种高效的方法,

2008-12-29 07:46:00 3591

原创 用bfd显示ARM共享库的依赖关系

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 PC上可以用ldd显示共享库的依赖关系,但它不能显示交叉编译出来的共享库。要显示交叉编译的共享库,通常做的法是在目标板上用/lib/ld-linux.so.2–list来显示。那有点有麻烦,由于通常我们并不关心所依赖共享库的加载地址,所以自己写了小程序来实

2008-12-24 07:31:00 3842

原创 系统程序员成长计划-并发(三)(下)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 嵌套锁与装饰模式嵌套锁的实现算法加锁:  o如果没有任何线程加锁,就直接加锁,并且记录下当前线程的ID。  o如果是当前线程加过锁了,就不用加锁了,只是将加锁的计数增加一。  o如果其它线程加锁了,那就等待直到加锁成功,后继步骤与第一种情况相同。

2008-12-23 07:43:00 3940 3

原创 gdbserver调试共享库(终结版)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 我已经写过两篇关于gdbserver调试共享库的BLOG了:第一篇解决了调试共享库的难题,让调试共享库成为可能,但是使用起来很麻烦。第二篇做了点改进,通过一个脚本文件计算偏移量,使用起来稍微方便一点。几年过去了,gdbserver还是不支持调试共享库,我也受够

2008-12-22 07:26:00 5008

原创 系统程序员成长计划-并发(三)(上)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 嵌套锁与装饰模式在生产者-消费者的练习中,当由双向链表的实现者负责加锁时,一般都会遇到莫名其妙的死锁问题。有的读者可能已经查出来了原因是嵌套的加锁。比如在dlist_insert中调用了dlist_length,进入dlist_insert时已经加了一次锁,再

2008-12-19 07:54:00 3498

原创 系统程序员成长计划-并发(二)(下)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 面对这个需求,一些初学者可能有点蒙了。以前在学校的时候,对于课本后面的练习,我总是信心百倍,原因很简单,我确信这些练习不管它的出现方式有多么不同,但总是与前面学过的知识有关。记得《如何求解问题—现代启发式方法》中说过,正是这种练习的方式妨碍了我们解决问题的能力

2008-12-18 07:23:00 4749 2

原创 系统程序员成长计划-并发(二)(上)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 在生产者-消费者的练习中,大部分人选择了由调用者来加锁:作为生产者,往双向链表里插入数据时,先加锁,插入数据,然后解锁。作为消费者,从双向链表里取数据时,先加锁,删除数据,然后解锁。这是合理的,不过有点麻烦:每个调用者都要做这些动作,如果其中一个调用者忘记了解

2008-12-17 07:13:00 4670

原创 系统程序员成长计划-并发(一)(下)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 Linux下的多线程编程使用pthread(POSIXThread)函数库,使用时包含头文件pthread.h,链接共享库libpthread.so。这里顺便说一下gcc链接共享库的方式:-L用来指定共享库所在目录,系统库目录不用指定。-l用来指定要链接的

2008-12-16 07:45:00 5629

原创 系统程序员成长计划-并发(一)(上)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 这几年并发技术受到前所未有的关注:CPU进入多核时代,连手机芯片都使用三核的CPU(AP+BP+DSP集成到一颗芯片)了。天生具有并发能力的语言ErLang逐渐成为热点。网格和云计算开始进入实用阶段。还有一些新技术更是让我闻所未闻,初学者也不用被这些铺天盖地的

2008-12-15 07:47:00 6427 1

原创 系统程序员成长计划-写得又快又好的秘诀(六)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 Save your work“Ernst和Young所在的小组决定使用正规的开发理论—他们常用削减法,分阶段进行开发并具有中途交付能力。他们的步骤包括细致的分析和设计—正如本章描写的基本原则一样。而其他竞争者径直开始了编码,在开始几个小时里,Ernst和You

2008-12-12 07:22:00 6975

原创 系统程序员成长计划-写得又快又好的秘诀(五)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 自动测试手工测试比没有测试强一点,但是它存在的问题让它很难在实践中应用:手工输入数据的过程单调乏味,很难长期坚持。每次都要重新输入数据,浪费大量时间。测试用例不能累积,测试往往不完整。用人脑判断输出的正误,浪费人力也存在误差。要写得好测试自然不能省,要写得快就

2008-12-10 07:37:00 6261 2

原创 KJAVA虚拟机Hack笔记-用GTK+实现绘图操作

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 绘图操作是在mutableimage上进行的,也就是画在GdkPixmap上的,由于GdkPixmap没有画圆和椭圆的函数,我选择用cairo来实现。大部分函数的实现很直观,调用cairo相应的函数就行了,gxpport_draw_arc比较麻烦一点,因为

2008-12-09 07:24:00 2609

原创 系统程序员成长计划-写得又快又好的秘诀(四)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 避免常见错误在C语言中,内存错误是最为人诟病的。这些错误让项目延期或者被取消,引发无数的安全问题,甚至出现人命关天的灾难。抛开这些大道理不谈,它们确实浪费了我们大量时间,这些错误引发的是随机现象,即使有一些先进工具的帮助,为了找到重现的路径,花上几天时间也不足

2008-12-08 07:32:00 6642 2

原创 系统程序员成长计划-写得又快又好的秘诀(三)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 代码阅读法软件工程实践已经证明Code Review是提高代码质量最有效的手段之一,极限编程(XP)更是把CodeReview推向极致,形成著名的结对编程工作方式,两个程序员在一台电脑前面工作,一个人编写程序,另一个Review输入每一行代码,写程序人的专注

2008-12-05 07:42:00 5618

原创 KJAVA虚拟机Hack笔记-实现mutable image

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 mutableimage在这里的意思是说可以在上面进行绘制操作的图片,它有点像VC中的DC,可以在上面贴图或者画直线填充矩形等等。在GTK+中实现的话,自然就用GdkPixmap了,GdkPixmap从GdkDrawable继承过来的,提供了各种常用的绘图操作

2008-12-04 07:56:00 2341

原创 系统程序员成长计划-写得又快又好的秘诀(二)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 1.好与快的关系几年前和一个朋友聊天时,他抱怨他的上司说,要我写得好又要写快,那怎么可能呢?我当时一愣,反问到,写不好怎么可能写得快?他也一愣。传统观点认为在功能、成本(人*时间)和质量这个铁三角中,提高质量就意味投入更多成本或者减少一些功能。在功能不变的情况

2008-12-03 07:22:00 6753 2

原创 KJAVA虚拟机Hack笔记-实现immutableimage

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 immutable image在这里的意思是说不能在上面进行绘制操作的图片,比如画直线和填充矩形等等。immutable image实际上就是图片在内存里面的表示,有点像VC中的Bitmap,用GTK+中实现的话,当然首选GdkPixbuf了。里面最重要的函数要数

2008-12-02 07:54:00 2298

原创 系统程序员成长计划-写得又快又好的秘诀(一)

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 “快”是指开发效率高,“好”是指软件质量高。呵呵,写得又快又好的人就是高手了。记得这是林锐博士下的定义,读他那篇著名的《C/C++高质量编程》时,我还是个初学者,印象特别深。我现在仍然赞同他的观点,不过这里标题改为成为高手的秘诀,感觉就有点像标题党了,所以还是

2008-12-01 07:27:00 5342

GUI引擎评价指标.pdf

github 上的开源 GUI 引擎至少有数十个,如何去评估它们的优劣,如何选择你需要的 GUI 引擎?这个是艰巨的任务,每个人的需求不一样,GUI 开发者的意图也不同,很难找到统一的标准去选出最好的 GUI。QT 是最强大的,没有之一,但也不一定适合你。在 [这篇文章](https://www.zhihu.com/question/283787183/answer/433510666) 有句话:“商业引擎看起来功能很齐全,但是实际使用起来你就知道有多少坑。” 这句话挺有意思,它即适合游戏引擎,也适合 GUI 引擎。demo 看起来很好,技术看起来很先进,用起来才知道有多少坑!所以事先做一个完整的评估是很有必要的。

2021-03-16

awtk_on_stm32h743iitx_port.pdf

本文档介绍除了AWTK实现基本功能的移植外,还提供了如下功能: * 集成实时操作系统 (RTOS)(腾讯的 TinyOS) * 集成 FATFS 文件系统,访问 SD 卡的数据。 * 实现从文件系统加载应用程序的资源。 * 使用 Sqlite 存储数据。 * 支持 google 拼音输入法。

2020-06-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除