一. 定点和浮点:
定点数指小数点在数中的位置是固定不变的
浮点数中小数点的位置是不固定的,用阶码和尾数来表示
二.cmd文件
用于链接器对段的处理:
1. 将一个或多个COFF目标文件(.obj)中的各种段作为链接器的输入段,经链接后在一个可执行的COFF模块(.out)中建立各个输出段
2. 为各个输出段选定存储器地址
编写:
①用伪指令MEMORY指定存储器
MEMORY
{
PAGE0: name0[(attr)]: origin=constant,length=constant
PAGE1: name1[(attr0)]: origin=constant,length=constant
}
说明:1.有两个页PAGE0(存放程序)、PAGE1(存放数据)
2.name0为自己定义的名字
3.attr为属性(R W X I),一般省略
②用伪指令SECTORS分配到存储空间
SECTORS
{
name:[property,property,…]
name:[property,property,…]
…
}
说明:1.name为段名
3. property为属性(load run )
三. MOV与AMOV区别
MOV只能对16bit数进行赋值
AMOV可以对扩展的数据进行赋值
例如:要访问400020H地址单元内容,可以这样通过间接寻址方式:
AMOV #400020H,XAR0 ;XAR0为23bit
MOV *AR0,AR1
四.GEL文件
GEL为General Extend Language缩写(通用扩展语言),用来扩展CCS的功能
五.2011年10月28日做了个mini5402实验,代码如下:
.mmregs
.def _c_int00
.def _timer0
Couter .set 500
;on_off .usect ".on_off",1 ;为变量预留一个空间,用于存放判断灯的亮灭
.text
_c_int00: STM #50C7H,CLKMD
STM #00a0h, PMST
STM #Couter,AR1
; STM #on_off,AR2
STM #0H,IMR
STM #0010H,TCR
STM #186AH,PRD
STM #0C2fh,TCR
STM #0008h,IFR
ORM #0008h,*(IMR)
;ST #1,*AR2
RSBX INTM
loop: nop
b loop
_timer0: PSHM ST0
BANZ NEXT,*AR1-
STM #Couter,AR1
BITF *AR2,#1
BC led_on,TC
led_off: SSBX XF
ST #1,*AR2 ;AR2默认值为0000h,0000h为IMR的地址,也就是IMR=0001H,修改了IMR的值,TINT0已经被屏蔽,不会中断,但程序运行正常,Why?
B NEXT
led_on: RSBX XF
ST #0,*AR2
NEXT:
POPM ST0
RETE
.end
六.乘法
.mmregs
.def _c_int00
.data
mux: .int -2,4
.text
_c_int00: STM #50C7H,CLKMD
; STM #4240H,SWWSR ;没有用到外部存储器就所以可以不用设置
STM #00a0h, PMST
; STM #0802h, BSCR
STM #0H,IMR
RSBX INTM
STM #1300H,AR2
STM #1301H,AR4
MPY *AR2-,*AR4+0%,B ;执行后B=FFFFFFFFF8 是这么算的将-2的补码0xFFFE复原去掉符号位和0x0004相乘,得0x0008,这个数的补码放入B
loop:
NOP
B loop
delay: ;延时大概为1ms,1/101MHZ*(256*40960)
STM #100H,BRC
RPTB end_ret-1
RPT #0A000h
NOP
end_ret: ret
.end
七.2011年11月18日晚发现了个问题,到次日早晨才解决:
编译错误:
--------------------------- c and asm.pjt - Debug ---------------------------
[yuyan.asm] "E:CCStudio_v3.3C5500cgtoolsincl55" -g -fr"D:/Documents/CCS/55x test/c and asm/Debug" -d"_DEBUG" -@"Debug.lkf" "yuyan.asm"
[yuyan.c] "E:CCStudio_v3.3C5500cgtoolsincl55" -g -fr"D:/Documents/CCS/55x test/c and asm/Debug" -d"_DEBUG" -@"Debug.lkf" "yuyan.c"
"yuyan.c", line 9: warning: variable "s4" was set but never used
//从上面两句可以看出先编译的.asm文件
[Linking...] "E:CCStudio_v3.3C5500cgtoolsincl55" -@"Debug.lkf"
>> warning: creating output section vectors without SECTIONS specification
undefined first referenced
symbol in file
--------- ----------------
_mac1 D:\Documents\CCS\55x test\c and asm\Debug\yuyan.obj
_mac2 D:\Documents\CCS\55x test\c and asm\Debug\yuyan.obj
_mac3 D:\Documents\CCS\55x test\c and asm\Debug\yuyan.obj
>> error: symbol referencing errors - './Debug/c and asm.out' not built
>> Compilation failure
Build Complete,
2 Errors, 2 Warnings, 0 Remarks.
八.CSL(片级支持库)
CSL (Chip Support Library)
在TI公司的CCS开发环境中,提供了DSP片级支持库CSL,多数CSL模块都对应函数,宏,类,和表示符号组成。
简单方便的完成对DSP器件片上外设配置和控制的编程工作,从而简化了DSP片上外设开发工作,缩短开发周期,并且可以达成标准化控制的编程工作。
简而言之,用它的话TI公司的所有TMS320系列的DSP都不需要对寄存器级的直接操作,非常有用的一项技术
九.error: illegal relocation type 050002 found in section .debug_info, file
昨天用css3.3编译程序出现以上错误。
是库的问题,把rts55.lib换为css2.2的就可以了。