让vdsp与uclinux共舞(2):vdsp的影响

快乐虾

http://blog.csdn.net/lights_joy/

[email protected]

 

本文适用于

ADSP-BF561

Visual DSP++ 5.0(update 6)

Bfin-uclinux-2009r1.6

 

欢迎转载,但请保留作者信息

 

现在我们需要验证VDSP对已经运行的程序会产生什么影响。选用比较简单的uboot进行试验。

1.1.1   烧写uboot

为了试验的方便,选用已经移植到vdsp环境下的u-boot-trunk-svn-1982,这个不是最新发行的版本,而是一个中间版本。

之所以选择移植好的uboot,是因为我们的目的是验证vdsp对已经运行的程序产生的影响,故此选用在vdsp下编译的版本,以求将其它因素的影响降到最低。

第二个原因是因为uboot移植简单。

第三个原因是因为我们要把uboot做为flash烧写工具使用。

………..

开工。

1、在vdsp下加载uboot,使用vdspMemory -> Fill将生成的uboot.ldr文件插入到0x1000000这个地址。

2、运行uboot,切换到超级终端,这个时候应该可以看到这样的启动信息并可以接受输入:

让vdsp与uclinux共舞(2):vdsp的影响_第1张图片

 

使用下面的命令:

bfin>protect off all

Un-Protect Flash Bank # 1

bfin>erase all

Erase Flash Bank # 1

................................................................................

....................................................... done

bfin>cp.b 1000000 20000000 22ee8

Copy to Flash... done

bfin>cmp.b 1000000 20000000 22ee8

Total of 143080 bytes were the same

bfin>

就这样完成了uboot的烧写工作。

1.1.2   运行flash里的uboot

下面我们关掉vdsp,对开发板断电再上电,此时应该自动引导刚刚写入的uboot

uboot-svn-1982 (2009-08-11 - 12:00:00)

 

CPU:   ADSP bf561-0.5 (Detected Rev: 0.5) (parallel flash boot)

Board: ADI BF561 EZ-Kit Lite board

       Support: http://blackfin.uclinux.org/

Clock: VCO: 500 MHz, Core: 500 MHz, System: 100 MHz

RAM:   64 MB

Flash:  8 MB

*** Warning - bad CRC, using default environment

 

In:    serial

Out:   serial

Err:   serial

Net:   MAC:   00:0c:f1:34:92:80

Hit any key to stop autoboot:  0

bfin>

1.1.3   配置vdsp

为了验证vdsp对运行程序的影响,我们需要修改几个配置,使得vdsp尽可能不自作主张。

1Target -> Options

对于两个核均需要修改。

 

2Settings -> Preference

 

 让vdsp与uclinux共舞(2):vdsp的影响_第2张图片

1.1.4   连接开发板

打开vdsp,通过仿真器连接到开发板,此时开发板上的uboot仍然在运行。注意,vdsp启动完成后不加载任何程序,观察vdsp

 

注意几个地方:

1pc被设置为0xffa00000。在这个地址处可以明显看到ubootbasiccrt的代码,也就是说vdsp并不改变sram的东西。

2、此时显然是没有符号信息的。

3RETSRETI等几个寄存器的值似乎都是有效地址。

1.1.5   加载符号信息

Vdsp提供了一个功能,允许我们不加载程序,只加载符号表等调试信息,通过File -> Load symbols,我们加载uboot.p0.dxeuboot.p1.dxe中的符号信息:

 

嘿嘿,似乎万事俱备,只等调试了。

1.1.6   RETI

我们看看RETI指向的位置0xffa0007c

 

让vdsp与uclinux共舞(2):vdsp的影响_第3张图片

RETI这个寄存器用以保存中断结束时的返回地址。回想uboot的运行过程,它上电开始时处于RESET状态,而后它通过改变RETIraise 0xf进入中断15的状态,然后一直持续此状态。这个地址就是0xffa0007c

RETI这个寄存器没有改变说明使用vdsp连接到开发板时并没有改变DSP的中断状态!!此时DSP仍然处于中断15的状态。

1.1.7   RETS

RETS这个寄存器用以保存函数的返回地址,看看它指向哪里:

 

让vdsp与uclinux共舞(2):vdsp的影响_第4张图片

非常符合我们的期待,它指向的代码表明uboot正在进行一个死循环等待用户输入。

1.1.8   失败

可以看到,在VDSP第一次连接到开发板时更改了PC的值,但是它并没有保存连接之前的PC指针,因此我们无法在原来的位置上继续运行。

第一次尝试失败。

 

 

 

2       参考资料

VDSPuclinux共舞(1):开篇(2009-10-30)

关于uClinux-2.6(bf561) for VDSP的移植2008/3/11

 

 

 

 

你可能感兴趣的:(让vdsp与uclinux共舞(2):vdsp的影响)