DSP/BIOS的启动过程与编译过程

DSP/BIOS的启动顺序

当DSP/BIOS的应用程序启动时,一般遵循下面的步骤:

1) 初始化DSP:DSP/BIOS程序从C/C++环境入口c_int00开始运行。对于C6000平台,在c_int00开始处,系统栈指针(B15)和全局页指针(B14)被分别设置在堆栈断的末尾和.bss断的开始。控制寄存器AMR、IER、CSR等被初始化;

2) 初始化.bss:当堆栈被设置完成后,初始化任务被调用,利用.cinit的记录对.bss断的变量进行初始化;

3) 调用BIOS_init初始化用到的各个模块:BIOS_init调用MOD_init对配置用到的各个模块进行初始化,包括HWI_init、HST_init、IDL_init等;

4) 处理.pinit:.pinit表包含一些指向初始化函数的指针,对C++程序,全局对象类的创建也在此时完成;

5) 调用用户程序的main函数:用户main函数可以是C/C++函数或者汇编语言函数,对于汇编函数,使用_main的函数名。由于此时的硬件、软件中断还没有被使能,所以在用户主函数的初始化中需要注意,可以使能单独的中断屏蔽位,但是不能调用类似HWI_enable的接口来使能全局中断;

6) 调用BIOS_start启动DSP/BIOS:BIOS_start在用户main函数退出后被调用,它负责使能使用的各个模块并调用MOD_startup启动每个模块。包括CLK_startup、PIP_startup、SWI_startup、HWI_startup等。当TSK管理模块在配置中被使用时,TSK_startup被执行,并且BIOS_start将不会结束返回;

7) 执行idle循环:有两种方式进入idle循环。当TSK管理模块使能时,任务调度器运行的TSK_idle任务调用IDL_loop在其它任务空闲时进入idle循环;当TSK模块未被使用时,BIOS_start调用将返回,并执行IDL_loop进入永久的idle循环,此时硬件和软件中断可以抢占idle循环得到执行。由于idle循环中管理和主机的通信,因此主机和目标机之间的数据交互可以进行了。

编译选项设置

CCS环境下,可以为工程文件(.pjt)指定编译选项,也可以为具体的每一个文件指定编译选项。

编译选项可以通过工程文件或者某个具体的.c文件单击鼠标右键,然后在弹出窗口中选这“Build Options”,或者点击菜单栏ProjectàBuild Options,弹出如下图窗口:

                                DSP/BIOS的启动过程与编译过程



 

编译选项分为:Basic,Advanced,Feedback,Files,Assembly,Parser,Preprocessor,,Diagnositcs共八类。每一类又细分为若干选项设置。

单击右下角的Help,可以获得每个具体选项的含义。下表中列出与编译调试密切相关的编译选项。表中未说明的选项使用默认选项即可。

 

配置

说明

Basic->Target Version

C64x+(-mv6400+)

选择所使用的DSP芯片类型。

Basic-> Generate Debug Info

Full Symbolic Debug (-g)

为了方便调试,通常选择包含全部符号信息

Basic->Opt Speed vs Size

speed Most Critical (no -ms)

优化选项,在编译调试阶段不设置。

Basic->Opt Level

None

Basic->Program Level Opt

None

Advanced->Endianness

1) Big Endian (-me)

2) Little Endian

选择产生的目标代码的格式。

Preprocessor->Include SearchPath(-i)

指明头文件的存放位置

Preprocessor->Define Symbols (-d)

举例:_DEBUG

宏开关定义,如:_DEBUG,即定义了该宏等于1。

Preprocessor->Undefine Symbols(-U)

不定义预先设置的宏,可覆盖之前的定义。即如果在Define Symbols 选项中定义了的宏,在此处如果又定义一次,则该宏值为“0”。

Preprocessor->Preprocessing

None

Standard C/C++ preprocessing functions.

 

在链接选项页中,可设置输出文件和内存映射文件的路径以及需要包含的库文件,如下图所示:

                DSP/BIOS的启动过程与编译过程

 

Serach PathLibraries中,可将芯片支持库(CSL)的路径和使用的库文件设置好,这样就不需要在工程中添加库文件了。由于CCS v3.2默认没有带支持TCI6482的CSL v3.x的库,可将最新的CSL拷贝到CCS目录下,建议统一路径名称,以免不同机器建立的工程不能兼容。通常库文件中末尾带e的为Big Endian库,不带e的为Little Endian库,需要根据Complier选项中的选择分别选用。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值