背景:网上已经有很多关于利用libjpeg显示图片的文章了,因此本文的技术含量不算高。本文是使用libjpeg的v8版本,在开发板的LCD上显示jpg格式图片,关于libjpeg,可到其官方网站下载源码,源码附有许多文档,包括详细的例子(example.c)。
与图片相关的几个库的编译
背景: 我的开发板自带的编译器是经过开发商修改的,原来已经带有了libjpeg、libpng库了。现在想换个新的版本。最近想研究jpeg文件,想在开发板的屏幕上显示出来,于是在网上找了点资料,不过绝大资料都是6b这个版本的,而这个版本是1998年发布的,至今仍在使用。截至本文发表时,最新版本是8c,2011年1月发布的。同时,也顺便将png、gif两个库一起编译了。我是个喜欢折腾的人,自从大三买了开发板,简单地写了个点灯的裸机程序后,就入手移植系统了,后来以移植u-boot,原因很简单,不想用人家已经做好的东西,自己弄的东西,对原理性,了解会稍微深入一些。——这些事情是仁者见仁,智者见智了。
VS2003创建动态库的一点笔记
背景:与工作有关的,具体的细节就不说了(这跟某些人说“由于工作性质,我的单位名称不方便透露”等是一样的)。大意是写一个基于socket的程序,可运行于Windows,也要运行于Linux,所谓的“跨平台”。使用C++,但只使用到其中的deque、string及fstream这些东西,其它的还是停留在C层面。
使用Tslib在触摸屏上显示汉字
终于到了在触摸屏上显示汉字了,真正写代码、测试的时间是1天,在此之前的一切准备、学习花费约2周到3周时间。而为了获取触摸屏上显示的图像,花费约2天。由于网络驱动已经接近于放弃状态,NFS用不了,只好用U盘来回复制(即使没有耐心也必须有耐心了)。明明在内核中选择了支持NTFS格式的读写,但却不能将开发板上的文件复制到U盘,而用另一个FAT32格式的另一牌子的U盘,开发板死活认不出来,网上的资料说要修改代码,我又懒得去改。无奈之下,只好格式化那个NTFS的U盘,结果,这篇文章拖到现在才发表。
点阵字体显示系列补记2:关于24点阵汉字显示程序及其修改版本
自从写完16点阵后,由于没啥事做,就继续看看24点阵是如何显示的。这种规格的点阵是使用UCDOS(虽然下载了,但用不了)中的汉字字库。又千辛万苦找到ASCII码的24点阵,再修改前面的程序,生成24点阵ASCII码的数组。测试完后,用一天时间,在触摸屏搞出了汉字显示,不过对比了Tslib库的代码,发觉自己写的简直是一塌糊涂,于是继续修改代码。不过,由于不知道如何优化代码及组织代码结构,修改后的成果仅仅是生成的可执行文件大小比原来的版本少240个字节(使用size命令查看得到的结果)。这也算是一个进步吧,网络上关于专门针对某种平台、某种情景的代码优化资料比较少,靠以前和平时一点一点积累,实属不易。
点阵字体显示系列补记:将字库文件转换成数组形式
昨天写完几篇文章后觉得意犹未尽,我想想了,既然字库文件是二进制文件,完全可以转化为十六进制,存储在数组中,这样在寻找字符时就不用操作文件了,直接在内存中获取。
点阵字体显示系列之三:使用ncurses显示汉字
ncurses这个库,最早听说应该是当年刚接触Linux的时候,当时,我们宿舍就一个人在鼓捣Linux,他是我们后来的班长,如今在ZLG混,也不知混得怎么样了。我也不知道哪条神经线路出现故障了,竟然傻乎乎去学Linux,到后来,一发不可收拾,从此走上了一条不归路。到毕业前,我曾经说过了研究ncurses库的,还写了文章,文章说要在毕业时将ncurses掌握到什么程度。可惜,人算不如天算,计划跟不上变化,天有不测之风云,后来就不了了之了。
点阵字体显示系列之二:汉字显示
免责声明:本文是作者在研究过程中的一篇文章,本着互联网共享、自由(free,应该不是“免费”)之精神发布于此。作者才疏学浅,孤陋寡闻,能力有限,对文中出现的术语及概念的描述多有不当之处,由于本文并非学术报告及论文,不对这些概念性东西进行深入调研,如需权威性解释,请自行查阅相关文献。文中错误的地方,欢迎在文后留言,趁作者还有激情研究之时,大家一直探讨,共同学习,天天向上。
点阵字体显示系列之一:ASCII码字库的显示
起因:早在阅读tslib源代码时就注意到里面有font_8x8.c和font_8x16.c两个文件(后来才得知,它们来自Linux内核,具体目录是./drivers/video/console),它们包含了在屏幕上显示所需的所有字符(当然,是可打印字符),由此也看了一下tslib显示字符的代码。对将来在触摸屏上显示汉字有所帮助,——这是后话,暂且按下不提。
s3c2410多通道adc驱动及测试程序(使用write控制多通道)
免责声明:本文所涉及的驱动是在SeonKon Choi于2003年编写的适合2.4版本内核的ADC驱动基础上结合网络能找得到的代码片段经过自己的修改并实践通过的。测试过程中的ADC并不涉及其它驱动(比如与ADC有很密切关系的触摸屏驱动)。本文作者本着GNU共享精神发表此文并附录源代码——其实公布源代码是必须的,因为代码使用GPL(而如何行文则是作者的自由)。至于如何使用文中知识点及代码,无论正确与否,概与文章作者无关,风险自担。不过,趁文章作者还有激情研究驱动之时,欢迎一起讨论,大家共同学习,天天向上。
s3c2410多通道adc驱动及测试程序
网上流行很多基于2410的ADC驱动及测试程序。本文所使用的是开发板光盘中自带的经过修改后的adc驱动。笔者在这个基础上再作一点修改。由于那个文件已经删除了版权信息(但还是能找到这些代码与网上流行的驱动的一些联系),这里也不知道如何添加了,可以肯定的是,它使用了GPL,这里公开源代码,也算是GPL了。
一个简单字符型设备驱动及其测试
驱动对一些人来说很难,而对一些人来说很容易。窃以为,理解简单设备驱动模型不难,深入理解并与Linux内核设计联系到一起需要花费时间。对于移植者来说,如何将自己自定义的模块天衣无缝放到内核中,是比较重要的——不过,有许多现在的“模板”可供参考,总算不用白手起家。
李迟2011年4月知识积累
我从来不觉得写代码只是写代码的事,也不是整天拿数据结构和算法来研究,拿C、C++大头书来看。我对自己的要求是:坚持融会贯通,坚持多层次联系,坚持学习,坚持积累。
非代码知识主要关于linux日常使用的。
多目录多源文件的驱动Makefile模板
很多人知道我搞嵌入式,都说我很有前途,对此我表示感谢,希望自己真的会有个好前途。虽然现在还不能说“四举无成 十年不调”,但一直无所作为,惭愧得很。我总徘徊在驱动的门外,迟迟不能掌握驱动的编写。一来没有个集中的时间学驱动——自毕业后,已经变得很懒了;二来现实也不允许我一直搞驱动。但是我一直努力将所学的各种知识联系在一起,以提高自己的水平。
Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析
本文是作者对tslib库的ts_test.c文件进行分析的随笔,其实tslib的几个测试程序结构差不多,譬如ts_print.c和ts_print_raw.c等。