Linux管道函数使用

背景:项目有个功能是查看版本号(像什么内核版本号、驱动版本号,等等),是通过管道来实现的,网上也有这方面的介绍,就不多说了。 在一次测试过程中,发现不断查看版本号竟然会导致系统复位(比如查看20次、40次、100次),这个bug发现晚的原因是没有谁那么无聊连续查看100次版本号,当然,发现也是碰巧在几次查看之后系统就挂了。后来发现是因为某个地方卡住导致某个线程超时而复位。后来跟踪到了这个管道函数中来。解决的方法是使用读取文件的方法来获取系统版本号(如内核版本)。不过真正原因还没有找到,可能出在popen这类函数中。

阅读全文>>

SVN、GIT生成版本号

李迟按:代码管理较多的是使用svn、git这类的版本管理工具,版本号是一个重要的东西,自然地,如何让我们显式地看到版本号是十分重要的。一般地,会通过某种手段让当前代码的版本号声明为宏定义字符串,或打印在串口上,或传输到上位机显示。这里介绍了svn和git的版本号生成方式。

阅读全文>>

复杂多目录的Makefile模板及示例

大约一年多以前,还在移植u-boot,当时参考了u-boot的Makefile,做了一个多目录的Makefile模板。如今,一年过去了,本篇文章还是折腾Makefile模板,本人的水平由此可见一斑。当时的模板没有考虑很多东西,比如将源代码文件及目标文件分离。此次再写一个相对复杂的Makefile模板,自此之后,估计不想再折腾了。

阅读全文>>

代码随笔——点阵汉字在LCD上的显示

注:本文约在半年到一年前写的。 其实我以前从没想过写Framebuffer的代码,网上流传较多的是LCD的移植(主要改参数),之后没下文了。不过,曾经兴致冲冲地想搞Qtopia移植,在这过程中碰到过一个叫Tslib的东西。后来Qtopia没搞成功,倒研究起Tslib来了——对它的底层原理还没看明白,对于一些代码技巧及代码结构组织还是研究了一点。这个过程,与前几个月研究u-boot,一年前研究rtp以及曾经研究过的enc28j60等等代码很是相似。我这个有个毛病,喜欢研究些小东西,一些有意思的东西。比如说,人家移植u-boot,就是移植到开发板上,出结果就行了,而我,会去看看那些内存地址啊,看看里面的代码啊什么的。——不务正业,从这里可见一斑。

阅读全文>>

我的2011

2011年注定是不平凡的一年。2010年,我从大学毕业后,成为一名社会青年;2012年,是传说中的“世界终结年”。作为一名以写代码为生的外来务工人员,在工作上、学习上、生活上,都有很多东西需要总结。

阅读全文>>

模拟时钟在LCD上的显示

我很早就想做一个模拟时钟了,网上也有很多C语言写的模拟时钟的代码,不过是基于TC的。后来我找到一个使用easy X lib写的模拟时钟,于是就将它移植到我的开发板屏幕上。前面已经完成了LCD的画点、画线、画圆等等基本函数了。与参考的代码不同的是刷新屏幕问题,我是考虑了一些时间才想到的。

阅读全文>>

将图片嵌入程序文件的一点研究

背景:重读《程序员的自我修养——链接、装载与库》,里面第3章主要讲目标文件。同时讲到如何将一些二进制文件作为目标文件的一个段(详细的请参考此书)。像图片、音乐文件其实也是二进制文件(作为初级程序的我,还没有达到将一切看成二进制的境界)。本文就以此展开了一些研究,顺便复习一下binutils工具以及gdb的使用。

阅读全文>>