我们以前讲DSP的开发:就硬件而言即将需要用到的片内外设引出来而已,把片外的外设连接到总线上而已;而做硬件,我个人认为都无所谓是否DSP工程师,因为DSP也好、ARM也好、X86也好,考验工程师的都是指定的板子硬件线路连接正确性,能不能在指定面积上布完,电路会否出现局部过热,电磁兼容性好否,高速接口线长线宽是否合理等,而这一切不会因是否DSP而有任何的不同。
个人认就DSP而言,软件的开发,才是真正的DSP开发。而就软件而言,即设置好SwitchFabric以便能够选中指定的外设,然后读取指定外设上的数据,将这此处理好的数据再写到其它指定的外设上而已。从这一点上讲,开发DSP本身并非高高在上的神话。大部分所谓的DSP高手,其实严格来讲应该说是数学高手,逻辑高手,他们小小的一点手段,就可以让算法效率提高很多。真正的高手,只有实在在算法没什么可以抠的,才会使用汇编。
看文档的顺序,Datasheet->System Reference Guide->专项手册。 这也是看TI文档的基本套路。
个人认为,学TI的OMAP也好,学Samsung的arm也好,学MIPS也好。最好的上手的方法就是忘了他是什么。(对于应用开发人员用操作系统下的驱动开发人员适用)
只要有操作系统, 不管他是什么处理器,其本质都只是处理器的核 + 一堆外设
那么对于做应用的人来说,没有任何本质的区别。
对于做驱动的人来说,只是在不同的器件上pinmux设置等东西有所不同。但本质都是为某一个操作系统写驱动。
真正需要去理解硬件内核的架构的人是做编译器的人,大部分工作需要量写汇编代码的人。
对于像OMAPL这样的主流另类,其中之一的DSP或硬件加速器本质上也都是一个外设,只不过可能这个外设本身是可编程的。
这样的外设,通常原厂已经做好一些应用,你只需要根据其编程接口调用即可。如TI提供的Codec。
如果需要运行自己的一些算法,通常原厂也会提供一些通信工程框架。如TI的C6Run及DSPLink
如果需要完全受控,直接写他的memory让启动即可,怎么通信你说了算。
对于开发的认识,软件工程师和硬件工程师会有不同的看法。硬件工程师乐于用直接控制硬件的方式来实现系统的功能,如控制相关寄存器的值。这样做的好处是节省系统资源,运行速度快,但需要对各种硬件的寄存器有相当的了解。缺点是遇到大型系统构建时会有些力不从心。软件工程师更乐于基于操作系统进行开发,通过系统调用的方式控制硬件。好处是可以尽量少的接触底层硬件,专心软件的设计。缺点是如果遇到驱动不完善或者有BUG的情况下,就会有些束手无策。精通软硬件是每个嵌入式工程师的最高追求,不过由于专业不同就会有所偏好,找到一个适合自身的开发模式还是十分必要的。
之前说了不少闲话,现在我们言归正题。
OMAP-L138是一个双核的芯片,无论是ARM核还是DSP核,都有相当数量的寄存器需要配置,如果从头开始逐一定义和设置,需要消耗大量的时间,但这又是不得不做的事。庆幸的是TI的第三方已经为我们写好芯片的寄存器定义,并把初始化和功能实现通过C函数的方式集成起来,这样我们只需要调用相关的函数,就可以实现对指定外设初始化工作和使用。
这些文件的集合体被称作BSL(Board Support Library)。它大大减少了开发初期的工作量,注释也全面,容易理解。
ASIC(Application Specific Intergrated Circuits)即专用集成电路,是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。目前用CPLD(复杂可编程逻辑器件)和FPGA(现场可编程逻辑阵列)来进行ASIC设计是最为流行的方式之一,它们的共性是都具有用户现场可编程特性,都支持边界扫描技术,但两者在集成度、速度以及编程方式上具有各自的特点。ASIC的特点是面向特定用户的需求,品种多、批量少,要求设计和生产周期短,它作为集成电路技术与特定用户的整机或系统技术紧密结合的产物,与通用集成电路相比具有体积更小、重量更轻、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。