TMS320C54x C编译器的使用

本文介绍了TI公司的TMS320C54x DSP的C编译器使用,强调了C语言在复杂算法开发中的优势和移植过程中的注意事项,包括库函数的使用和字长问题。此外,探讨了段的分配,特别是针对C编译器生成的目标码段的理解,以及C与汇编语言的混合使用,包括调用汇编子程序和嵌入汇编的策略。最后,简述了Code Composer Studio (CCS)的安装和使用步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TMS320C54x C编译器的使用

1. 前言

    TMS320C54x TI公司针对通信应用推出的中高档16位定点DSP系列器件。该系列器件功能强大、灵活,较之TMS320C2xx ,具有以下突出优点:

     1)速度更快:40100MIPS

     2)指令集更为丰富;

     3)更多的寻址方式选择; 

4)两个40位的累加器;

5)硬件堆栈指针;

6)支持块重复和环型缓冲区管理。

    TMS320C54x 的应用一般较为复杂,因此,完全采用汇编语言进行编程将是一件很困难、也很低效的事情。而C语言以其灵活性、易移植性,已成为单片机开发的一种趋势,对于更为复杂的DSP应用来说,更是如此。

    TI公司为TMS320C54x提供了功能强大的C编译器,支持优化功能。下面就对使用TMS320C54x C编译器中的一些体会介绍给读者。作者在实践中使用的TMS320C54x C编译器的版本为1.10版,以下的讨论都基于该版本。

 

2. C语言的移植

    在进行复杂算法开发时,一般的做法是先在PC上用高级语言(如C语言)进行仿真,然后再移植到DSP平台中。考虑到效率问题,可进一步进行手工汇编的调整。编译器的工作方式大致可分为两类:一类直接由高级语言产生目标代码;另一类则是先生成中间的汇编代码,再汇编成目标代码。TI公司提供的C编译器属于后者。这样,用户可方便地根据中间的汇编代码进行手工调整和改写。

    在进行C语言移植时,涉及到两个问题:一是库函数的使用,二是字长问题。TITMS320C54x C编译器提供符合ANSI C的函数库。至于字长,要取决于硬件机器字长和操作系统,但一般来说,在不同的系统中,short型为16位,long型为32位,而int型却有所不同。如,在VC环境中,int型为32位,而对于TMS320C54x C编译器来说,int型则为16位。因此,在将C源程序由仿真环境向TMS320C54x平台移植时,应根据各变量的取值范围,尽可能地将int型归类为short型或long型。

3. 段的分配

    虽然,C语言是一种相对高效的高级语言,并且TI

驱动器 D 中的卷是 LINUX 卷的序列号是 4471-561B D:\桌面\mips交叉编译环境 的目录 2009-10-22 20:27 <DIR> . 2009-10-22 20:27 <DIR> .. 2009-10-22 20:09 27,425,338 gcc-3.4.3.tar.bz2 2009-10-22 20:08 7,421,782 binutils-2.10.91.0.2.tar.bz2 2009-10-22 20:08 242,445 glibc-linuxthreads-2.5.tar.bz2 2009-10-22 20:10 20,544,628 glibc-2.5.tar.gz 2009-10-22 20:20 1,720 elf-machine-rela-mips.dpatch 2009-10-22 20:26 4,727 建立基于linux的MIPS交叉编译环境 .txt 6 个文件 55,640,640 字节 2 个目录 6,793,084,928 可用字节 三、构建过程 1、准备环境 目标平台: mipsel-linux(即little endian,x86也是little endian的,不懂的话自己到网上查资料吧) 安装目录: /usr/local/crossdev 源代码安装目录: /usr/local/src 注:没有的目录请自行建立。 2、准备MIPS环境的头文件 我们是在i386下编译的,但要使用MIPS的头文件定义才能正确编译MIPS的交叉编译工具。这些头文件都在kernel源程序中。 cd /usr/local/src/ tar xzvf linux-2.4.2.tar.gz cd linux/ make ARCH=mips menuconfig 在"CPU selection"中, 选中"(R3000) CPU type",也可以选你实际的MIPS平台的CPU类型 在"General setup"中, 选中"Generate little endian code" make dep mkdir -p /usr/local/crossdev/mipsel-linux/include cp -r /usr/local/src/linux/include/asm-mips /usr/local/crossdev/mipsel-linux/include/asm cp -r /usr/local/src/linux/include/linux /usr/local/crossdev/mipsel-linux/include/ 3、编译binutils cd /usr/local/src/ tar xzvf binutils-2.11.90.0.31.tar.gz cd binutils-2.11.90.0.31/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev make make install export PATH=/usr/local/crossdev/bin:$PATH 4、编译自举的(bootstrap)gcc 因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后就可以再编译一个完成的gcc了。 cd /usr/local/src/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c --with-newlib --disable-shared make make install 注:以上编译安装的工具已经可以直接编译MIPS的kernel(make zImage)了。 5、编译glibc 现在可以使用刚才建立的binutils和gcc来编译MIPS的glibc了。 cd /usr/local/src/ tar xzvf glibc-2.2.3.tar.gz cd glibc-2.2.3/ tar xzvf ../glibc-linuxthreads-2.2.3.tar.gz patch -p1 < ../glibc-2.2.3-mips-base-addr-got.diff CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --prefix=/usr/local/crossdev/mipsel-linux --enable-add-ons=linuxthreads make make install 6、重新编译完整的gcc cd /usr/local/src/ rm -rf gcc-3.0.2/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c,c++ make make install 以上就构建好了一套自己的MIPS交叉编译环境,目录在/usr/local/crossdev下,你可以把它打包拷贝到其它i386的Linux系统下也能使用。 要使用其来交叉编译时请先加上PATH环境变量:export PATH=/usr/local/crossdev/bin:$PATH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值