大一开始的时候,荣任班长一年半(年级辅导员想让我干四年,多以拖了半年),09年3月份向班主任申请改选班委,从此,不担任任何学生官职务,慢慢也推掉社团部长职务。当时规划好了,先适应大学生活,清闲下来,我马上开始学习了,知道自己在大学生涯的这段岁月想干点什么先,那个劲头十足呵呵。。。。。从此开始我的技术之路。
作为一个在校的学生,我在课程老师的眼里绝对的不是好学生,我逃课所以点名自然不到了,不交作业如果要交也就是预防被取消考试资格所以龙飞凤舞的一次抄完成多次作业,是抄!。可我要告诉大家,其实我的课程成绩还算可以,如果我喜欢的,即使一次课都不上,每门考个80、90来分从来不是问题。飘柔,就是这么自信!比如,模电,数电,单片机,微机原理及接口技术这些硬件课程,软件课程的C及C++,不过郁闷的是,当时我自学单片机的时候刚好是数据机构与算法考试,没什么特别的兴趣在上面,后来可想而知,没挂但分数不高,也就是悬崖边上了。这门变态的课程是双语教学,说到双语教程,其实就是教材是英语,老师一句英语都没说的那种方式的教学,说白了,就是本课程,学院或者说咱们这个专业不是很重视。我记得,模电课,老师是姓董的,一个学期点几次名我都不到,有次上课,我刚好买了本单片机的书,抱到课堂去啃,老师下来,捧起来看看,没说什么,问我参加比赛啊,我回答恩,然后她就没说什么了。当时我兴奋可想而知,这跟她是个年轻的女老师,我是个男孩子无关,因为,我从她眼神里读到的是鼓励。哥们,历历在目啊!真谢谢这样的好老师。所以这门课,等老师都上完课了说准备考试,我才开始拿书来翻,就琢磨了二极管,考虑电子流,一通三极管也通了。88分,这是结果,老师意思性的扣掉一分。到大三,因为觉得我还没能真正懂得单片机,就选修了一门大四开的PIC单片机原理,后来这个老师建议我申请项目了,这是后话了。其实,有些老师对我非常好的,不管我上不上他/她的课程。呵呵,心里其实真要谢谢这些老师。
自己就是这样一个强烈依赖兴趣学习的家伙,或者应该说我更喜欢学以致用罢了。如果学来不用,或者没能和这些知识亲切起来,我是不甘心的,肯定有好玩的,我相信。暑假开始后,我开始了ARM的学习。知道了一些概念,但就是不理解。买了块ARM7的板子,看体系结构,看ucossII,my god!一头雾水,Google,还是一头雾水。对于我这种电子工程学,操作系统的选修课是大四还是怎么的才有一门,真想抱怨一下学校的课程安排了。算了,自己从来就是不靠老师学习以授课的方式学习的人,不过我喜欢不懂请教这倒是事实。咬咬牙,越是不懂越有意思,自学!从此,真正接触嵌入式的概念了。
09年10月,通过面试,成为学校嵌入式系统训练基地常驻成员。在学校嵌入式系统训练基地学习已经差不多一年了。很多同学朋友都知道我在搞这个,只是不知道是怎样的知识层面罢了。其实,我也不懂,本来就是菜鸟的,ARM+Linux,这是我的方向,没有几年下来,应该都算菜鸟吧,我觉得。又买了一块开发板——FL2440,ARM9具有MMU,能跑linux,这是我换掉ARM7的原因。划清远见的书开始一本一本的看,图书馆的这类书不多,所以被我还了又借,还了又借。
10年3月到7月下旬,这期间花费时间去参加2010年Intel杯嵌入式邀请赛。我们学校可以派出两个队,在上海交大测评,都没获奖。很遗憾。这期间,酸甜苦辣都有,指导老师很年轻,从没指导过比赛,我们只能从他那拿到比赛的各种开支,仅次而已。这是失利的最重要原因,当然还有其他的客观因素,回来,老师叫我参加广西区电子设计大赛,容易获奖,我拒绝了。因为我不是很看重那种只为一张获奖证书去学习的生活方式,区大赛都是一些模电数电的知识,我并不是鄙视这种比赛,而是,我的关注点暂时不在这,继续我的ARM+linux之路吧,即使我一张获奖证书都没有。打了那么写字,有点表露个人心迹的意思,sorry,久不写东西,难免唠叨哈哈。
其实,我依然觉得自己是有梦想的人,能够勤奋且坚持,无论处于怎样的困境,都never give up!好了,下面简单聊聊嵌入式开发。
“嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。”——这是我看书摘录别人的一段话,大家都懂就行了。不再累赘概述。
嵌入式需要什么课程的学习呢?写一下自己的观点,管它对不对呢,不对也不用交罚款,又不是交通违章,更不是犯法是吧。我本来就菜鸟,一步步总结是需要的。
(一)微处理器结构与应用。这个其实,在校学生很多都会接触到的。我当时一直问自己什么是控制器,什么是处理器呵呵。切实不懂嘛。嵌入式开发是软硬件结合的技术,硬件方面是必须要懂一点的,有了硬件的支持,灵活的软件才能跑起来,不是吗?这方面的课程要有比较扎实的基础。我当时琢磨单片机,ARM处理器机构,还有X86(学校的课程开的,叫《微机原理与接口技术A》),马克思的哲学思想不是叫我们用孤立的观点看待问题吗?是的。我相信他是真理,所以,好好综合的对比了一下,发现处理器就是处理器,为什么这样说呢?包公判案总是要证据的。总结了一下,第一、都是电子电路。数电也好模电也好,什么芯片控制器都好,还不是就是靠信号(低电)去触发各种各样的门,实现了各种个样的功能。第二、各种处理器都是给我们知道有什么功能特性,只是功能不同增减而已。看见了,又是功能。或者改变存储系统的大小啊什么。结合一下数电的概念,触发你就理解信号怎么干活了。第三、硬件理解了,控制牛B的还得看软件,那软件怎么烧进去呢?搞明白这几个差不多可以学到一定程度了,给你硬件规格说明书,你必须能看懂其中的内存分布和端口使用等最基本的说明。好了,结合自己的处理器课程,汇编程序学习去总结吧。
(二)嵌入式的软件。软件分为系统软件和应用软件,这都知道吧。关键一点:结合软件在内存的分布,比如什么代码段,数据段,堆栈段啊,如何有这种段,你要对编译原理了解一些,编译器是怎么处理代码的;懂得起运行过程,代码总是要跑起来才有用嘛,要不怎么灵活,怎么实现功能?代码和CUP在系统开始起来就没分开过。以上是我的理解,记住:一般人,我不告诉他。当然了,一千个读者就有一千个哈姆雷特。也许不对的哦。可是语言这东西,加上双刃剑的哲学,要判断对与不对,哪有那么容易?不瞎扯了,正题继续。操作系统一般有学Vxworks,ucoss,ulinux,Linux和wince。自己选吧,没有好于不要,我觉得,你学好了出类拔萃,都好。我个人学开源的linux。
想自己写软件,基础是必须的,汇编,C和C++,当然还有Java,C#等等,萝卜青菜各有所爱,我主要想好好理解汇编,C,C++,而且兴趣不是开发大型的应用软件,那些有软件学院的人呢。学习C有几本书是必须看的,老谭的,大家都知道,还有就是《C专家编程》、《C和指针》、《C陷阱》,《C陷阱》还没翻过,趁没毕业,找个时间看看先,还有就是《C语言核心技术》,这是一本我觉很适合我的。对了,学习软件,工具软件非常重要,也就是集成开发环境,这一点,我们C和C++老师都没好好介绍,后来发现上当了。应该好好弄懂至少大概了解。不要只知道按实现指导书上的步骤,点击那些按钮,然后按钮怎么干活一窍不通。这个对你代码最终怎样跑的机制,你就丈二和尚摸不着头脑了(如果你不考虑当然无所谓了)。
今晚就到这了,继续我的《linux的那些事儿之我是USB》、《USB应用开发技术大全》、《linux内核设计与实现》、《ARM嵌入式系统开发:软件设计与优化》、《LDD 3》、《嵌入式linux驱动程序开发详解》,嘿嘿,这些我认为比较适合我的书.