快乐虾
http://blog.csdn.net/lights_joy/
本文适用于
ADSP-BF561
Visual DSP++ 5.0(update 6)
Bfin-uclinux-2009r1.6
欢迎转载,但请保留作者信息
现在我们需要验证VDSP对已经运行的程序会产生什么影响。选用比较简单的uboot进行试验。
为了试验的方便,选用已经移植到vdsp环境下的u-boot-trunk-svn-1982,这个不是最新发行的版本,而是一个中间版本。
之所以选择移植好的uboot,是因为我们的目的是验证vdsp对已经运行的程序产生的影响,故此选用在vdsp下编译的版本,以求将其它因素的影响降到最低。
第二个原因是因为uboot移植简单。
第三个原因是因为我们要把uboot做为flash烧写工具使用。
………..
开工。
1、在vdsp下加载uboot,使用vdsp的Memory -> Fill将生成的uboot.ldr文件插入到0x1000000这个地址。
2、运行uboot,切换到超级终端,这个时候应该可以看到这样的启动信息并可以接受输入:
使用下面的命令:
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的烧写工作。
下面我们关掉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>
为了验证vdsp对运行程序的影响,我们需要修改几个配置,使得vdsp尽可能不自作主张。
1、Target -> Options
对于两个核均需要修改。
2、Settings -> Preference
打开vdsp,通过仿真器连接到开发板,此时开发板上的uboot仍然在运行。注意,vdsp启动完成后不加载任何程序,观察vdsp:
注意几个地方:
1、pc被设置为0xffa00000。在这个地址处可以明显看到uboot的basiccrt的代码,也就是说vdsp并不改变sram的东西。
2、此时显然是没有符号信息的。
3、RETS、RETI等几个寄存器的值似乎都是有效地址。
Vdsp提供了一个功能,允许我们不加载程序,只加载符号表等调试信息,通过File -> Load symbols,我们加载uboot.p0.dxe和uboot.p1.dxe中的符号信息:
嘿嘿,似乎万事俱备,只等调试了。
我们看看RETI指向的位置0xffa0007c:
RETI这个寄存器用以保存中断结束时的返回地址。回想uboot的运行过程,它上电开始时处于RESET状态,而后它通过改变RETI并raise 0xf进入中断15的状态,然后一直持续此状态。这个地址就是0xffa0007c。
RETI这个寄存器没有改变说明使用vdsp连接到开发板时并没有改变DSP的中断状态!!此时DSP仍然处于中断15的状态。
RETS这个寄存器用以保存函数的返回地址,看看它指向哪里:
非常符合我们的期待,它指向的代码表明uboot正在进行一个死循环等待用户输入。
可以看到,在VDSP第一次连接到开发板时更改了PC的值,但是它并没有保存连接之前的PC指针,因此我们无法在原来的位置上继续运行。
第一次尝试失败。
让VDSP与uclinux共舞(1):开篇(2009-10-30)
关于uClinux-2.6(bf561) for VDSP的移植(2008/3/11)