如何学习一款DSP?了解DSP,重点是了解它的核心能力是什么?它有哪些外设?它的外设都有提供哪些工作模式?系统工程师可以结合它的核心能力及外设提供什么样的功能来支持上层应用的实现。对,这也是我们拿到一个项目后,对DSP进行选型的关键。
回想之前我重点总是放在学习如果使用DSP的某个模块,如何通过操作寄存器来使这个模块正常工作。现在看来,这些内容未免太细枝末节了,失掉了关注系统和总体的机会。但是反过来想,一个工程师不能对每一个模块都了如指掌,那又拿什么来做总体设计?这是矛盾的,辩证的。我时常设想,如果是搞电子和计算机理论出身的,是否可以直接从上到下来看待系统的问题,从而不需要了解细节就可以完成系统设计工作?
我从毕业就一直在一个很小的研发团队工作至今,最开始队伍里应该是有那么一两个大牛的,随着公司的变迁,后来这个“大牛”的角 {MOD}不得不由我来扮演。到现在,我想这也仅仅是“扮演”罢了!很遗憾,最初那两年经验太少,不能从真正的大牛身上多吸取到些精髓;很遗憾,接着的两年在DSP上面的研究基本靠单打独斗(其间偶得指导,但其实双方多是不得要领),项目单一,进步如蜗牛,始终不开窍;这两年有点积累,才算是有那么点豁然开朗。其实,这应该是个螺旋上升的过程。所以,看来我是做不到完全是自顶向下的设计,但我可以摸着石头过河,通过加深下细节的理解来不断完善下层的设计。也许,随着以后经验的积累,可以做得到理想的脱离编程细节的设计。
朝着这个目标迈进,现在可以做些什么,让脚步更快着,步伐更大些?我觉得应该是想办法直接了解DSP每个模块最基本的工作方式。有没有这样的书,有没有有经验的人,最次只能是从阅读DSP文档开始,自己一点一滴进行总结和抽象。
接触DSP已有7年,至今才有一些自己的心得。从一开始根本不关注DSP是什么,只在uClinux编写应用程序;接着要关注通讯接口,用DMA加快通讯效率;然后为了了解别人应用程序的工作逻辑开始反汇编,再反成C代码;再到为了了解DSP的每一个功能模块,逐一阅读文档;再到自己拿到一款DSP,从文档开始去实现自己的应用;(我下一阶段应该会怎么做?……)。值得高兴,有点遗憾!高兴的是这段时间的努力并没有白费,遗憾的是这么多年才出点成果。
本人“软件工程”专业出身,上大学时有“嵌入式方向”,而我选的是更着重于上层逻辑的“电子商务”方向。大四实习之前,怎么都没有想过自己将会从事“嵌入式”相关的开发工作,这样的想法在毕业后一两年都还挺顽固。而现在嵌入式已经成为我工作的即成事实,除非我转行,它仍然会是我以后的主要工作。这就是现实和理想的距离!
偶有想法,未完待续……