博客简介

经过慎重考虑,我决定对博客进行重新整理。

其实,现在博客的内容并不多,完全没有破釜沉舟的必要。只是,我这段时间一直在思考一个问题:我的博客究竟应该如何呈现我想表达的东西?毕竟写博客的人千千万,如果写的内容和别人没区别,就似乎就没有存在的必要了。
但是呢,转念一想,或许是我把问题想得过于复杂了——最有意义的东西,不就是在学习、理解、重构中的思想的火花吗?只要能把思考中涌现的闪光点捕捉下来,这就是一篇值得一读的文章。
不论如何,我们的探索不会停止。

研究方向

将自己的工作称之为研究似乎有些太过抬举自己了。不过刚写过毕业论文,就按照这个调调来吧。

一直以来,我都对硬件感兴趣,从Arduino、STM32到树莓派、FPGA都有所涉猎。不过呢,由于一直以来都是“好读书而不求甚解”,加上没有笔记的习惯(在思考问题上总是比较随性),待我回过头来,才发现自己花的时间并没有转换成足够的价值。痛定思痛之后,我觉得给自己的“研究”定个合理的方向,并且记录自己的研究过程,这样才有意义。
根据我的兴趣,我暂时将研究方向定为以下几类:

  • 数据传输协议:从USB 3.1到PCI-E 3.0,从10/100M以太网到蓝牙5.0,各种各样的接口和协议构成了传输数据的网络。对于协议的研究有助于理解系统之间的交互。
  • SoC系统架构:目前,除了低端8位单片机还有8051还在苟延残喘,现在的消费市场几乎都是ARM的Cortex架构的天下。可以说,SoC系统架构的通用性使得各种新产品不断涌现且与老产品兼容,这大大降低了开发人员的工作量。但是,我们对于系统架构的研究却常常被忽视。事实上,要将整个架构运行起来绝非易事,因此对系统架构的研究有助于我们用更加宽广的视角来看待系统开发。
  • 操作系统与驱动:操作系统是一个完整的结构,而驱动是操作系统的重要组成部分。我们常为操作系统的原理而感到头疼,因为像Linux这样的操作系统的复杂程度远超想象。但Linux并不是操作系统的全部,对于单片机这样的硬件,同样有适合它的操作系统可供使用。我们可以选择从这些简单的操作系统入手,一步步建立我们对操作系统的认知。

研究重点

我一向认为,需求决定了研究与思考的侧重点。只有结合合理的需求,才能明确我们的工作,以最小的代价得到最好的结果。
我也算是写过毕业论文的人了,也清楚独立而有创意的工作最能引发读者的兴趣。因此,我打算将我的研究分为以下几个方面:

  • 基本原理的理解和概括:对于一个完整的课题来说,原理是最为基础但是又必不可少的部分。原先的标准可能长达数百上千页,但核心思路总能被我们概括并通过适当方式被传播和学习。因此,在理解了基本原理后,用自己的方式进行概括是很有必要的,这能让我们总结出有价值的东西。
  • 开发和重构:一项技术往往是和具体的产品相结合的。通过开发,我们能将各种各样的技术组合为一个有意义的应用。当然,开发并不是一蹴而就的,随着思考的深入,我们需要不断对代码进行重构,这也是开发过程中最为耗费心智的阶段。这种“保持自省”的态度是我应该在博客中贯彻的精神。
  • 技术细节的探究:对于一项技术来说,它的出现往往和某一情境相关,并且对于解决实际问题总是大有帮助。技术细节是在基本原理的基础上思考的结晶,因此对于技术细节的探究不仅有助于拓宽知识面,还能够“重构”我们的思考方向。对于良好的设计来说,技术细节或许会被隐藏,不需要我们进行深入研究,但总有一些细节有“回味”的必要。

研究流程

在我刚开始接触硬件开发的时候,研究的流程无非就是“别人用啥我用啥”、“别人写啥我做啥”。但是,现在我更倾向于先熟悉某个领域的主流研究方向,然后再从易到难进行学习。具体到软硬件,就是:

  • 对于硬件,一个问题往往有着无数种解决方案,而各种解决方案对应的层次互不相同。一个封装得更加完整的解决方案在开发时往往更加容易,但通常以牺牲灵活性为代价。我的观点是我们应当使用“剥洋葱”的方式进行研究,从外到内逐渐深入,这样的思路会更加清晰。
  • 对于软件,则还要考虑所谓的“依赖关系”。软件往往比硬件拥有更多的“依赖项”(这通常是因为硬件模块主张独立设计,而软件需要统筹所有的软硬件),因此必须在具备足够的前置知识之后才能研究具体的应用。关于“依赖项”的研究将根据实际情况穿插在研究的各个进度。
  • 最后就是软硬件结合的项目了。对于硬件IP核的设计来说,一个简单易用的API往往比复杂高效的硬件对开发者的帮助更大,而这种功底绝非短时间可以练成,需要研究或者经历类似项目的训练才能有所收获。

总结

曾经我也是个懒得动笔的家伙,但是自从选择了设计这条路,就没有停止思考的理由了。

希望我的博客能为大家带来一点帮助,谢谢大家。

版本修订

  • 2017/09/11:初稿