U-boot-1.1.6-2008R1到vdsp5(bf561)的移植记录(14):使用VDSP库

 
  
既然是使用VDSP来进行编译,那么我们当然希望使用VDSP库提供的众多便利。要做到这一点,需要修改头文件和u-boot_basiccrt.s。
1             添加头文件的引用
为了在所有的C文件中都可以使用VDSP的库函数,我们需要在一个合适的地方加上
#include <ccblkfn.h>
从u-boot的实现可以很容易看出,include/config.h是一个好地方,所以我们就在其上增加以下几行:
#ifndef __ASSEMBLY__
#include <ccblkfn.h>
 
#define getenv         u_boot_getenv
#endif
之所以加上getenv的定义是因为它和u-boot中使用的函数重名了,但是二都实现的功能完全不同。
当然,在加上ccblkfn.h之后,会造成大量的警告,如:
"../../include/asm/mach-bf561/../mach-common/ADSP-EDN-DUAL-CORE-extended_def.h", line 187: cc0047: {D} warning:
          incompatible redefinition of macro "DMA2_TC_CNT" (declared at line
          332 of "C:/Program Files/Analog Devices/VisualDSP
          5.0/Blackfin/include/defBF561.h")
 #define DMA2_TC_CNT                    0xFFC01B10 /* Traffic Control Current Counts */
但实际上 mach-common下的头文件是从VDSP中移植而来的,而且寄存器的地址应该是完全相同的,所以我们完全可以忽略这些警告。
2             库的初始化
在VDSP库中,有些东西需要进行初始化,可以参考u-boot_basiccrt.s中的做法,在start.s中添加对几个初始化函数的调用。
 
/
// blackfin-multi-core
       // Initialise the multi-core data tables.
       CALL.X __mc_data_initialise;
.extern __mc_data_initialise;
.type __mc_data_initialise,STT_FUNC;
 
/
// device-initialization
       // initialise the devices known about for stdio.
       CALL.X _init_devtab;
.extern _init_devtab;
.type _init_devtab,STT_FUNC;
 
/
// cplusplus
       CALL.X ___ctorloop; // run global scope C++ constructors
.extern ___ctorloop;
.type ___ctorloop,STT_FUNC;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值