从第一 步跨进杭电,就表示了研究生的开始,我发过誓我不能才那么弱小,我要和以前不一样。研究生的学习让我觉得是一种充实感,让我觉得我对得起我自己,不是混时间,所以读研的开始的良好的。
研究生的生活其实很单一,就是待实验室学习,你可以做老师安排的,如果老师没安排的话你可以学习自己的。研究生也要上课,不过和大学不一样的是,上课只是为了修学分,因为连上课的老师也是这么觉得的。基本上我都不怎么会去上课的,因为实在是无聊的不行,老是想睡觉,老师讲课和念书差不多....不过这些老师也是牛人啊,只有4个同学上课他也能讲的很有味道...膜拜啊....哈哈哈....
还是说正事吧,开始读书以后基本上都是很忙的,很多新的发现也来不及写出来分享。
导师给我的任务是先把arm开发板的弄熟悉,这个板子其实暑假的时候老师就给我了,我基本上也没有怎么去玩这个,因为我以为只有台式机才能做开发的,哈哈,来了学校我发现我错了,其实只有一根网线,基本就ok了。真是蛋疼啊.....
导师说让我先在板子上实现关于图片的显示,我我觉得这个难度其实挺大的...毕竟以前都是有现成的API,所以关于底层的实现基本上是不清楚,给我的时候我觉得这个难度让我有点不知道怎么办。不过搞arm的好像就我一个人在我们实验室。本以为师兄他们也是搞arm的,可是他们竟然是搞FPGA,到现在我也不知道那是做什么的,哈哈,做他们那个的是真正搞硬件的,他们竟然连C语言都不会,哎...没人可问啊...那就问问Google吧。
首先进入我眼的是QT的移植,这样就可以调用现成API了,不过说要很到的空间,这个我有点慌张的,因为到现在我都不知道那个板子有多少的空间来放东西,反正我感觉是很小的,最近发现他的空间真的很小,大概是5m的空间,不过幸好他还是支持SDcard和U盘,不过这个那个时候也没想,觉得QT移植谁知道会发生什么错误呢。。。。那个时候就直接放弃了这个想法
第二个就是关于framebuffer编程了,我觉得这就体现了LINUX的优越之处了,把什么都看作文件,都可以出操作文件的手段来操作硬件....
关于framebuffer这个编程我也不想多说什么,其实蛮简单的,基本很固定的操作。还有就是关于jpeg库移植,网上有很多关于这个方面的教程,而且这个库的编译与移植问题也不是很大,再说它的使用也是很简单的。
这个程序我花了一天写完的,又花了两天想把他写的更加好看,能重复利用,因为真的要考虑以后忘里面填写的其他功能....所以花时间想写的好一点,不过基本还是很丑陋,因为在我一个一个模块写的过程,发现最后连接起来的时候n多error,让我很郁闷,而且这些问题真的是我没有遇见过的..所以最后还是放弃了大部分的重构。
不过上个星期老师说让我实现视频的播放,这个功能我也觉得难度很大啊,哎...我也没有什么想法,所以一直拖着....不过也不是什么事情都没有做,花了两天的时间看了自己的书藉,分别是<C专家编程>和国人的一本<系统程序员成长计划>,我觉得这两本书偏向的方面不一样,看<C专家编程>会让你懂得更多,但是真的如果说对你的编程能力有多少提高,我觉得没有,毕竟这个是要靠多写锻炼出来的,但是这本书真的很经典,因为他让你在写程序的时候了然于空的感觉...
而国人的那本书我觉得就是一本可以锻炼你编程水平的书,有的人写程序很多年,可是水平依然很水,比如我....惭愧啊....哈哈...它像一本让你成为高手的书籍,你使用它就必须要按他去做,不过看的太快,看一点就把他给你的任务完成,然后在往下看...他先教你方法,然后再让你去学习思考,反正我觉得这个书对于我来说真的很合适啊...
两天看书,后面的时间我就把我上次写的framebuffer 代码重新重构了一下,这个词我还是昨天才知道,叫做重构,好像的意思是对别人的代码进行重新封装之类的。做过重构以后让我更加的了解了重构的难的...我还是自己的code,如果是别人的code让就是一件很让人郁闷的事情了。
下面就贴一下我的code,有什么要改进的要说哦....(额...代码竟然在虚拟机中....郁闷....开了一下虚拟机,卡了我10min啊)
framebuffer.h<这部分主要是包含了对framebuffer文件的处理>
#ifndef FREAMBUFFER_H #define FRAMEBUFFER_H struct _Fb0; typedef struct _Fb0 Fb0; Fb0* Fb0_create(); int Fb0_open(Fb0 *thiz); int Fb0_destory(Fb0 *thiz); int Fb0_get_info(Fb0 *thiz); int Fb0_mmap(Fb0 *thiz); int Fb0_unmmap(Fb0 *thiz); int Fb0_display(Fb0 *thiz,unsigned char *pdata); #endif
framebuffer.c#include <stdio.h> #include <linux/fb.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/mman.h> #include <stdlib.h> #include <sys/types.h> #include <errno.h> //#include "test.h