大同收容教育所:从软件角度看,如何从DM642迁移到DM648

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 10:16:05

  

1. DM642和DM648应用开发时对底层硬件的管理

1.1 DM642

    DM642开发时,一般我们使用Ti提供的芯片支持库CSL来对DSP的底层硬件进行初始化和控制,CSL以API形式为应用程序提供接口,CSL的使用不需要DSP/BIOS支持。在CSL之上的是更低级的RSCL,RCSL对DSP的寄存器做了系统的定义,但是我们很少有能力使用RCSL来对DM642的硬件进行操作,这样做太复杂。一般人不可能会,即使会,写出来的程序可读性也很差。

    在应用层,我们有时使用minidriver来管理硬件,minidriver建立在DSP/BIOS基础上,使用IOM。但Ti并没有提供所有硬件的完整驱动,仅有一些例子来帮助我们理解IOM的结构和要求。

    DM642的IOM驱动使用DSP/BIOS的GIO或SIO API来实现高层的I/O传输,例如:调用GIO_submit可以初始化和控制整个处理,然后调用用户实现的回调函数。其实这就是在为过渡到下个平台作准备。

1.2 DM648

    到了DM648时,Ti并不提供CSL了,取而代之的是PSP(Platform Suport Packege), PSP中包含了底层的RCSL(其实就是一对头文件,包含了DM648的所有寄存器的定义),很显然,你不可能使用RCSL来控制硬件,你唯一的选择就是PSP了,所以我们必须了解掌握PSP。

    安装DVSDK后,就会得到完备的PSP,所有PSP均提供了源码,你可以修改重新Build以满足我们的要求。

2。上层DM642应用程序的迁移

    迁移上层DM642程序到新的DVSDK的过程并不复杂。如果是使用IOM兼容的驱动,那么应当使用GIO或SIO API重新Build。转换这个代码为使用PSP IOM驱动是直接的:确定已存在的GIO、SIO的调用参数是否需要改变,确定驱动在运行时如何初始化和控制。通常在应用程序中提供一个初始化参数的结构体来初始化设备。

    还要考虑一些问题:DM648使用的是DSP/BIOS 5.x,其配制使用的是文本配置文件(TCF)而非老的DM642应用使用的CDB文件(在DSP/BIOS 4.90下),CCS3.3会自动将CDB文件转换为TCF文件,

    另一个潜在的问题是:在新旧驱动之间的函数不匹配,例如老的驱动可能使用SIO API,而新的使用GIO。更糟糕情况是,PSP不支持老驱动的某个工作模式,这些问题必须视具体问题具体对待,最坏是要求你修改PSP以适合你的需要。

    最后,还有可能,DM642的老驱动使用非IOM兼容的驱动,甚至使用非标准的API,这是,需要将其转化为GIO或SIO API。

    小结如下:

    (1)设置TCF/TCI,为PSP驱动初始化外设。

    (2)验证已存在的DM642应用使用GIO还是SIO API

            (a)某些PSP驱动可能支持GIO或SIO或两个都支持,使期望的API被驱动支持。

            (b)如果已存在的应用不使用GIO或SIO,应该转换将其转换为其中之一。

    (3)验证操作模式(也即操作参数)是否被PSP驱动支持

    (4)使用PSP驱动期望的参数修改已存在的GIO、SIO调用。

3。底层DM642应用程序的迁移

    由于新的DVSDK没有了CSL,所以在底层就没法有个清晰的迁移,有两个办法:一是使用RSCL重写一个CSL,这可能很难且写出来后的CSL程序也不易读,但也有优点就是能够充分把硬件能力发挥到极致。另一个方法就是直接过渡到PSP驱动上,这可能是个现实的办法。

4。在DM648上使用EDMA3