学习笔记

2014/3/19

札记1WSGR(摘录)

为实现TMS320F206与慢速外部逻辑和存储器的接口,等待状态是十分必要的。当CPU对慢速存储器或端口进行读写时,通过增加等待状态,可延长CPU等待外部存储器或外部I/O端口的时间以便更好地响应。为此,CPU为每个待状态提供了1个额外的周期。为避免总线冲突,所有向外部地址的写操作均需要至少2个周期。
在程序的调试过程中,我们常用设置断点的方法判断局部功能模块能否实现。若发现程序在尚未到达断点时就随机地停止运行,或仿真窗口出现“Time out waiting for device”红色告警字样的,可优先考虑调整待状态发生器控制寄存器(WSGR)的设置。
许多初学者在学习例程时发现其中的WSGR值均设为0000h(零等待状态),就误以为在任何情况下都可行,这是很不可取的。笔者在初次调试大型程序时,曾因为这个问题耗时多日后来试着将WSGR值由0000h改为0002h就顺利解决了(将片外低端程序空间的读/写等状态数设为2)。

 

札记2:ARAU

辅助寄存器单元ARAU提供强大的间接寻址功能,主要功能是在中央算数逻辑单元(CALU)操作的同时执行辅助寄存器(AR0~AR7)中的算术运算。

 

札记3:240x汇编指令

LAR:将指定数据单元的内容或立即数加载到指定的辅助寄存器

MAR:按指定要求修改辅助寄存器和ARP的值

LACL:将数据存储器的内容或一个0扩展的8位常数加载到累加器ACC的低16位,高16位填0

SACL:将累加器的值左移0~7位后将低16位复制到指定的输出寄存器

SACH:将累加器的值左移0~7位后将高16位复制到指定的输出寄存器

SPLK:将16的立即数送至任何存储单元

LDP:给页面指针DP赋值

ZAC:将ACC置为0

RPT:将指定存储器或8位立即数赋给重复计数器RPTC,将紧随RPT的那条指令执行指定的次数,RPTC+1次

LACC:将指定数据单元内容或16位立即数移位后加载到ACC

 

札记4:辅助寄存器(ARP和AR0 ~ AR7)

每打开一个函数,都会在堆栈中新建一个局部帧,AR0作为帧指针。

C编译器采用下面两个寄存器来管理堆栈

AR1——是堆栈指针(SP)。它指向堆栈的顶部。
AR0——帧指针(FP)。指向当前帧的开始。

定点C环境中保留了三个寄存器:AR0、AR1、AR2, 它们的作用如下:
AR0——帧指针
AR1——堆栈指针
AR2——局部变量指针(用于计算局部变量的地址)
函数进入和返回时,ARP必须为1,也就是说当前的辅助寄存器为AR1。函数执行时可以是其它值。AR0和AR1可以在函数执行过程中修改,但它们必须恢复。
AR2、AR3、AR4和AR5可以自由使用,也就是说,在函数执行过程中可以修改,也不必恢复。AR6和AR7用作寄存器变量。如果在函数中被修改,必须加以保护和恢复。

 

2014/3/20

 

札记1:

CMPR:将当前的辅助寄存器值与AR0比较,0、1、2、3分别为=、<、>、!=,将比较结果保存在TC,若比较结果为真,则TC置位,为假时TC为0

‚BCND:条件转移,condition 项可取值共有14种,其中ACC的内容、进位位、溢出位C、测试位TC、BIO引脚电平状态都可作为转移条件

 

2014/3/30

札记1:用.sec指令指定存储的段的时候,形如.sec “FFTtf”,那么在CMD文件中给段FFTtf分配空间的时候,应与“…”中的内容一致,不加.就都不加,加都加,否则会报错。用pragma声明时也一样。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值