RTSC wizard 的使用

本文详细介绍了如何使用TI的RTSCWizard和CodecWizard在DSP开发过程中生成Codec和Server包,包括设置XDCPATH、使用CodecWizard创建包、配置参数、生成Link.xdt文件以及打包过程等步骤。

http://blog.youkuaiyun.com/newton123456/article/details/5882785

关于TI RTSC wizard 介绍请查看TI 官方网站上的RTSC Codec Package Wizard FAQ 介绍,还有一个是Server 的,先介绍codec wizard 的使用。

首先设置XDCPATH 变量 ,用到xdc 时会从这些目录找到对应工具与package.

exportXDCPATH="/home/newton/dvsdk_3_00_02_44/ceutils_1.06/packages;/home/newton/dvsdk_3_00_02_44/codec_engine_2_24/packages;/home/newton/dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples;/home/newton/dvsdk_3_00_02_44/xdais_6_24/packages;/home/newton/dvsdk_3_00_02_44/bios_5_33_06/packages;/home/newton/dvsdk_3_00_02_44/dsplink_1_61_03/packages;/home/newton/dvsdk_3_00_02_44/biosutils_1_01_00/packages;/home/newton/dvsdk_3_00_02_44/framework_components_2_24/packages;/home/newton/workspace/RTSC/fkrtsc_wizard"


有些可能是多余的,但是多了总比少了好,呵呵。

开始工作了, xs ti.sdo.codecutils.genpackage -g ,运行向导,如果提示 package not found 肯定是前面的XDCPATH 设置有问题。

Step 1: 如图 1 所示



Package Name 是包名,完成之后会在 repository, 也就是最后一项的路径下面产生wenxin/omap3530/codecs/viddec_copy 目录, viddec_copy  base directory,repository 就称为库名吧。

Module: 模块名,会生成 VIDDEC_COPY.xdc

Version: 版本号

Codec Class: 编解器类型,跟 XDCPATH 有关 ( 这里新版本 DVSDK 最好设置为 video2.IVIDEC2)

Instruction Set Architecture: 设置指令集类型,我想用在 Omap3530 上,就选 v5T 了。

Create ce content: 是否产生 CE 子目录, TI 是这样解释的: If this box is checked, the wizard will generate Codec Engine specific content, which includes a ce directory with

four files(package.bld, package.xdc, MODULE.xs, and MODULE.xdc). If unchecked, the wizard will only generate

the base package content.

所以我选上了 


Step2: 如图 2 所示


watermark: 决定是产生 production 还是 evaluation 。如果要产生 evaluation ,则为 true, 并且双击 Library,添加 evalution library 


Step3: 如图 3 所示


添加必要文件和文件夹,我是按照那个 ceutils 里面的那个例子来的,添加了两个文件和两个文件夹。


Step4: 如图 4 所示


是一些工具目录,前两项默认就可以了, nm6x 设置 dvsdk_3_00_02_44/cg6_0/bin/nm6x

它会查询前面那个库的一些属性。

Step5: 如图 5 所示:


这里需要进行一些配置,我注意到如果前面的第四步没有设置 nm6x, 则这一步不会自动出现 ialgFxns VIDDECCOPY_TI_IALG. 并且这里的设置会出现在 ce 目录下的 VIDDEC_COPY.xdc 文件里。


Step6: 如图 6 所示


这一步的作用是产生 link.xdt, 我没发法编辑,最后手动修改了。


这是最后产生的文件:


剩下的最后一步是打包了,新建一个 config.bld 

var remarks = " " +


"-pden " + // enumerate remarks


"-pds=681 " + // call cannot be inlined


"-pds=452 " + // long long type is not standard


"-pds=195 " + // zero used for undefined preprocessing id (setjmp.h)


"";


var C64P = xdc.useModule('ti.targets.C64P');


C64P.platform = "ti.platforms.evmDM6446";


C64P.ccOpts.prefix += " --no_compress --mem_model:data=far --disable:sploop " + remarks;


C64P.rootDir = "/home/newton/dvsdk_3_00_02_44/cg6_0";

/*


* ======== Linux host target ========


*/


var Linux86 = xdc.useModule('gnu.targets.Linux86');


Linux86.lnkOpts.suffix = "-lpthread " + Linux86.lnkOpts.suffix;


Linux86.rootDir = "/usr";


Linux86.ccOpts.prefix += " -Wall";


Linux86.includeOpts += " -isystem /usr/lib/gcc/i486-linux-gnu/4.3.3/include ";


var MVArm9 = xdc.useModule('gnu.targets.arm.GCArmv5T');


MVArm9.ccOpts.prefix += " "


+ "-Wall "


+ "-fno-strict-aliasing "


;


MVArm9.platform = "ti.platforms.evm3530";


MVArm9.LONGNAME = "bin/arm-none-linux-gnueabi-gcc";


MVArm9.rootDir = "/home/newton/toolchain/arm-2008q1";


MVArm9.lnkOpts.suffix = MVArm9.lnkOpts.suffix.replace("-lstdc++", "");


MVArm9.lnkOpts.suffix = "-lpthread " + MVArm9.lnkOpts.suffix;


/* add search path for DaVinci lsp driver header files */


MVArm9.includeOpts = "-isystem /home/newton/workdir/opt/linux-2.6.28-omap/include " + MVArm9.includeOpts;


/*


* ======== Pkg.attrs.profile ========


*/


Pkg.attrs.profile = "release";


/*


* ======== Pkg.libTemplate ========


* Set default library version template to be used by all packages


*/


Pkg.libTemplate = "ti/sdo/ce/utils/libvers.xdt";


/*


* ======== Build.targets ========


* list of targets (ISAs + compilers) to build for


*/


Build.targets = [


C64P,


MVArm9


];


var paths = [];


paths["EXEC_DIR"]="/home/user/workdir/filesys/opt/workshop";



这个是参照 workshop 里面的 config.bld 修改的,设置了 targets,platform,rootDir

最后执行 XDCBUILDCFG=../../../../config.bld xdc release -PR . 注意 -PR 与- PD 的区别,- PR会递归打包,比如本例子中的 ce 里面也会打包,如果是- PD 只是在那个路径下打包和所依赖的包。 Xdc –help可以看下帮助,另外注意最后一个 '.' 不要忘了,表示要打包的路径, '.' 代表当前路径。


至此 Codec 的步骤已经全部完成了,接着是第二个步骤, RTSC wizard server

输入命令 xs ti.sdo.codecutils.genserver -g


Codec Package Name: 这里是 codec 包名,就设置为之前创建的 codec package name, 如果忘了,可以在package.xdc 中找到

Modeule Name: 模块名,会自动填充第一项 '.' 后面的内容,变成大写

platform: 我用的 Devkit8000 就选 ti.platforms.evm3530 

Server Package Name: 这里是 server 包名,会根据第一项 codec package name 自动更改的

Repository: 这里是生成 server 的位置了,跟 codec 作用一样。


Ok 了,最后打包: XDCBUILDCFG  ../../../../config.bld xdc release -PD . 最后会生成 .X64P 文件,这就是我们最终想要得到的 DSP 可运行的可执行程序。


终于大功告成了,还有些 Warnning 可能是 link.xdt 没有设置,机子没法联网, 装一些包什么的特麻烦,下了一大堆东西还是没装上。

./ofd6x -xg --xml_indent=0 --obj_display=none,header,optheader --dwarf_display=none,dinfo /home/newton/workspace/RTSC/viddec_copy_unpackaged/lib/viddec_copy_eval.a64P | perl ../ofd/call_graph.pl


Can't locate XML/Simple.pm in @INC (@INC contains: /home/newton/dvsdk_3_00_02_44/cg_xml_v2_12_00/ofd /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /home/newton/dvsdk_3_00_02_44/cg_xml_v2_12_00/ofd/XML_TI_OFD.pm line 519.



最后总结一些可能遇到的问题:

1.Undefined symbol VIDDECCOPY_TI_IALG

这个是链接错误,查看 will link with 看是否有那个 codec 里面的 lib 文件,如果没有修改一下 package.xs 里面的 getlibs() 函数

2.Undefined symbol VIDDEC_SKEL

基本上就是应该选择 viddeo2_VIDDEC2 的原因了,新版本的 DVSDK 导致的吧。也可能是 MOD.xdc 里面没加什么inherit??


在 Code Composer Studio (CCS) 5.3 中创建 RTSC(Real-Time Software Components)项目,需要遵循特定的步骤以确保生成的项目包含必要的配置文件和正确的构建设置。以下是详细的创建流程: ### 创建 RTSC 项目的步骤 1. **启动 CCS 5.3 并打开工作空间** 启动 Code Composer Studio 5.3,并选择一个合适的工作空间目录。 2. **新建 CCS 项目** - 点击菜单栏中的 `File` > `New` > `CCS Project`。 - 在弹出的窗口中输入项目名称,选择目标设备(例如 TMS320C6748 或其他支持的 DSP 器件)。 - 在“Project Type”部分选择 `RTSC Application`。 - 确保编译工具链为所选设备匹配的版本(如 TI v2000 工具链)。 - 点击 `Finish` 完成项目创建。 3. **自动生成 RTSC 配置文件** 当选择 `RTSC Application` 类型后,CCS 会自动创建以下关键文件: - `package.bld`:定义如何构建软件包的脚本文件。 - `package.xdc`:描述模块、配置参数以及依赖关系的元数据文件。 - `configPkg` 文件夹:该目录下包含由 XDCtools 自动生成的头文件和链接器命令文件(如 `.cfg` 和 `.c` 文件)[^1]。 4. **检查项目结构与构建配置** - 确保项目根目录下的 `.cfg` 文件未被排除在构建之外。 - 如果没有看到 `.cfg` 文件,右键点击项目,选择 `Build Configurations` > `Set Active` > `Release` 或 `Debug` 来触发配置文件生成。 - 检查项目属性 (`Right-click project > Properties`) 中的 `XDCtools` 设置是否正确,尤其是 `Target` 和 `RTOS` 的配置。 5. **编写 RTSC 模块代码** - 在 `src` 文件夹中添加或修改主程序文件(如 `main.c`)。 - 使用 `xdc` 脚本语言定义模块和服务组件,或者通过图形化界面(如 Configuration Tool)调整 `.cfg` 文件中的系统配置。 6. **构建项目** - 点击工具栏上的 `Build` 按钮或使用快捷键 `Ctrl+B` 构建项目。 - 如果出现错误提示如 “This project does not contain a buildable RTSC Configuration (.cfg) file”,请确认 `.cfg` 文件存在且未被隐藏或从构建中排除 [^1]。 ### 示例代码片段 ```c #include <xdc/std.h> #include <xdc/runtime/System.h> #include "package/internal/MyModule.h" Int main() { MyModule_Module_startup(); System_printf("Hello from RTSC!\n"); System_flush(); return 0; } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值