TMS320LF2406调试入门.docx
- 文档编号:24611658
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:18
- 大小:21.15KB
TMS320LF2406调试入门.docx
《TMS320LF2406调试入门.docx》由会员分享,可在线阅读,更多相关《TMS320LF2406调试入门.docx(18页珍藏版)》请在冰豆网上搜索。
TMS320LF2406调试入门
TMS320LF2406调试入门
王佰营徐丽红
经过两个星期的紧张调试,终于将TMS320LF2406的调试平台搭建好,为了方便初学的朋友,我将整个过程整理如下:
()
一、设计硬件和仿真器购置
初学者可用TMS320LF2407+外RAM构成最小系统,最好配上相关器件便于调试DSP一些功能:
I/O功能使用,ADC,SCI,SPI,CAN,PWM和SVPWM;当然,若这种配置,就不用看这篇文章了。
虽然这种配置很流行,具有外部总线,但是在商业级产品上却很少采用。
我们用的是以TMS320LF2406为核心的一个完整的小功率变频器系统,DSP外围只需加上开关电源,光耦,运放,X5043,65176,CAN驱动250和相关功率模块。
仿真器用的是合众达的USB接口的仿真器,以下实例皆以它为例说明。
二、安装软件
1需要的软件
1>:
ccs3.1-集成调试环节
2>:
USBDriversForCCS3.1.exe-USB接口仿真器驱动程序
3>:
Seedusb2.inf和Seedusb2.sys-USB驱动程序
4>:
USB20emurst.exe-连机测试程序
5>:
C2000-3.1-SA-to-UA-TI-FLASHA2X.exe-flash烧写插件程序
2.软件安装
1>ccs3.1的安装就象一般软件一样安装,但要注意两点:
1. 记住安装路径
2. 不必要全部安装,在安装时选自需选项安装,仅选与C2000相关的选项:
仅需710M,若全安装需1.7G磁盘空间.
2>安装仿真器驱动程序
安装时,选和ccs3.1一样的路径如:
C:
\CCStudio-V3.1\....;而不要按默认路径安装;否则,将不能正常驱动仿真器;因为无法找到:
C:
\CCStudio-V3.1\Drivers\Seedusb2.cfg
3>安装USB驱动程序
插上仿真器,这时就会跳出新硬件向导画面,不要Windows自动安装,选从列表或指定位置安装,点击“浏览”直接去包含有:
:
Seedusb2.inf和Seedusb2.sys文件的文件夹,安装即可.
4>将仿真器JTAG头插入目标板,上电,运行USB20emurst.exe:
点击Rest在下面就会出现:
“SEEDUSB2.0XDS510CARDISRESET,HARDWAREVERION1”
表明连机正常:
现在就可使用了。
5>点击桌面SetupCCStudiov3.1配置CPU和驱动文件;一下为要选择项以供参考:
F2406XDS510Emulator
在上述选项上点右键,选Properties进入;
Aut-Generateboarddatafilewithextraconfigur
C:
\CCStudio_v3.1\drivers\Seedusb2.cfg
I/OPort0X240
5>若要烧芯片还要安装C2000-3.1-flash.exe插件程序,直接安装即可.
三、搭建调试平台
1.调试平台构思:
由于LF2406不像LF2407那样可以在外部扩充程序RAM,调试相对比较困难;仅靠烧写芯片效率太低;
为了减少写片次数,提高工作效率,我们充分利用LF2406中的2K宝贵的SARAM资源:
将在有限的舞台上,将大的程序分成小块,分别调试,等调好了各个程序模块,再将它们组合成大系统整体调试。
2实现方法:
应当明白,
1>CCS3.1集成环境下
File-àLoodFrogram只能将程序加载RAM上运行;借助仿真器运行;
Tool-àOn-chipflashprogram只能将程序烧写到FLASHA上;不用仿真器自行运行;
2>LF2406中存储区的安排是固定的;
<1>程序存储器中
a.0000H~7FFFH为FLASH;
b.8000H~87FFH为SARAM; (PON=1)
c.0000H~003FH为中断矢量;
d.FF00H~FFFFH为DRAM; (CNF=1)
<2>数据存储器中:
a.0000H~005FH为D寄存器区;
b.0060H~007FH为DARAM的B2区;
c.0200H~02FFH为DARAM的B0区;(CNF=0)
d.0300H~03FFH为DARAM的B1区;
e.0800H~0FFFH为SARAM区; (PON=0)
f.7000H~7FFFH为寄存器区;
3>由上面的分析可知
FLASH区最大32K;接下来能用到程序上的只有2KSARAM,256字的DRAM的B0区一般不用。
因此,我们将程序代码分为两部分:
1>.基本固定部分-放入FLASH;尽量多放:
调试通过的部分就放入;
2>.频繁变化部分-放入SARAM;尽量少放;
为了便于相互连接,在每一部分的代码都要明确定位:
FLASH部分:
1>.中断向量表,这是固定的,用户不能随便定位:
常定义以为VECTORS段,地址:
0000H~003FH;
2>.外围模块中断向量表,用户可定位,常定义为PVECS段,地址:
44H~FFH;
3>.中断处理程序的公共代码-GISR,用户可自行定位,此处定义为PRGISR段,地址为:
200H~FFFH;
SARAM部分:
1>.主程序代码区,用户可自行定位,常定义为TEXT段,地址:
8000H~86FFH;
2>.二级中断处理程序代码区,因为不论是定时器中断,AD转换,或串行通讯等中断处理都用同一区域来分别调试的,因此命名为TEST-ISR,测试中断处理程序;定义为RAMISR段,地址为:
8700H~87FFH:
4.程序执行过程:
上电从FLASH的0000H跳至SARAM的8000H处开始运行主程序:
中断时,假定XINTI设置为高优先级中断:
中断外部触发àPIE向CPU申请àINTI内核中断触发à跳到FLASH的中断向量表INTI的0002Hà由0002H跳到FLASH的GISR-0200H的中断公共处理程序à得到FLASH的外围中断向量表中的地址:
PVECTORS+2XPIVRà由FLASH的外围表找到RAM中的8700H的TEST-ISR程序入口à完成中断任务处理à返回
四、注意事项
初学的朋友,特别是由单片机转型过来的DSP工程师应注意一下几个问题:
(我是受过教训了)
1、禁止内部看门狗,再调试;
2、注意外部看门狗捣乱,如烧写芯片时;
3、不要将指令或宏放在标号位置(第一列),指令和宏就当成标号了,指令也就不存在了,又不会报错,很难察觉,这一点和单片机大不相同;一定要注意;
4、DSP的位操作功能很差,要以端口为单位来操作;有用OR,AND或XOR指令;
5、DSP的许多重要位清零和单片机不同,并非写0而是写1;一定要注意;
6、当用发光管指示有无脉冲时,当脉冲频率太高或脉宽太窄时容易误判断:
认为是高电平或低电平,而无脉冲;要借助示波器判断。
刚开始最好将闪烁频率设置低一点。
7、烧写LF2406时,一定保证40h---43h为FFFFH(LF2406A);;CLKIN设置为有源晶振频率,PLL设置值保证与CLK的乘积不大于40MHz(LF2406A,30MHz--LF2406);不能正常写时,重新启动CCS3.1再写;
五、主要代码
1、硬件背景介绍
这儿的目的是构建调试平台,主要测试FLASH与SARAM间程序流通,中断的配合,程序很简单:
IOPE4口输出十多Hz的方波,去触发XINT1外部中断口16脚,中断处理程序通过IOPE3驱动放光管闪烁显示。
先将相对比较稳定变化不频繁的代码烧入LF2407,接下来在SARAM中通过LOADPROGRAM加载程序运行调试。
本程序有两个CMD文件,需要烧写芯片时选FLASH.CMD;需要加载程序时选用SARAM.CMD。
注意,许多变换是通过伪指令.if,.else,.endif完成。
20MHz有源晶振,CLKOUT为20MHz;比例系数为1。
在用SARAM调试程序时,实际上还要用FLASH部分的代码,两者相互配合完成调试,又符合DSP程序流程规范。
2、主要程序()
1>主程序-----------DSPINVER.ASM
.title"DSPINVER.ASM"
;DP_B2.set0;page0ofdataspace
ST0REG.usect".usect",1
ST1REG.usect".usect",1
AR0REG.usect".usect",1
AR1REG.usect".usect",1
AR2REG.usect".usect",1
AR3REG.usect".usect",1
AR4REG.usect".usect",1
AR5REG.usect".usect",1
AR6REG.usect".usect",1
AR7REG.usect".usect",1
TREG_TMP.usect".usect",1
PREG_TMP.usect".usect",1
;================================
FLASHP.set1
SARAMP.set0
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SLECTP.setSARAMP;FLASHP;烧写芯片选FLASHP;加载程序选SARAMP
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;================================
.def_c_int0
.ifSLECTP
;==========LOADFLASH
.copy"Vector.ASM"
;====================
.else
;==========LOADSARAM
.defPVECTORS
.sect".pvecs"
PVECTORS:
;====================
.endif
.include"F2407REGS.H";引用头部文件
;宏定义
;IOPE3---CPUgB-----O----------D3
;------------------------------------------------------
;D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0
;------------------------------------------------------
;1101100100001000
;------------------------------------------------------
CPUgB_F.macro;驱动LED闪动;
ldp#PEDATDIR>>7
laclPEDATDIR
xor#00008h
saclPEDATDIR
.endm
TEST_F.macro;产生方波信号驱动XINT1;
ldp#PEDATDIR>>7
laclPEDATDIR
xor#00010h
saclPEDATDIR
.endm
;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
.text
_c_int0:
nop;1000H/8000H
callInit_DSP
;※※※※※※※※※※※※※※※※※※※※※※
loop:
nop
TEST_F
nop
callDelay
bloop
;※※※※※※※※※※※※※※※※※※※※※
;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
.copy"Init_DSP.ASM"
;----------------------------------------------------------
;function:
Delay延时
;input:
ar4
;output:
---
;usege:
ar4, ar0
;----------------------------------------------------------
Delay:
larar4,#01h
nop
dy_lp:
larar0,#0ffffh
dy_lp0:
nop
mar*,ar0
banzdy_lp0
mar*,ar4
banzdy_lp
ret
;==========================================================
;中断处理区域
;==========================================================
;--------------------通用中断程序入口----------------------
.ifSLECTP
;==========LOADFLASH
.sect".prgisr"
GISR:
;0200h---FLASH
;-----保护现场程序开始----------------------
sst#0,ST0REG
sst#1,ST1REG
ldp#DP_B2
push
sarAR0,AR0REG
sarAR1,AR1REG
sarAR2,AR2REG
sarAR3,AR3REG
sarAR4,AR4REG
sarAR5,AR5REG
sarAR6,AR6REG
sarAR7,AR7REG
spm0
pac
saclPREG_TMP
mpy#1
pac
saclTREG_TMP
;-----保护现场程序结束----------------------
;-------------中断检查----------------------
ldp#PIVR>>7
laccPIVR,1
add#PVECTORS
bacc
;-----------------------假中断处理--------------------------
PHANTOM:
CLRCINTM
RET
.else
;==========LOADSARAM
nop
;====================
.endif
.ifSLECTP
;==========LOADFLASH
nop
;====================
.else
;==========LOADSARAM
.sect".ramisr"
TEST_ISR:
;8700h---SARAM
CPUgB_F
ldp#XINT1CR>>7
splk#8001h,XINT1CR
;-----恢复现场程序开始----------------------
ldp#DP_B2
larAR0,AR0REG
larAR1,AR1REG
larAR2,AR2REG
larAR3,AR3REG
larAR4,AR4REG
larAR5,AR5REG
larAR6,AR6REG
larAR7,AR7REG
spm0
ltPREG_TMP
mpy#1
ltTREG_TMP
pop
lst#1,ST1REG
lst#0,ST0REG
;-----恢复现场程序结束----------------------
clrcINTM
ret
;==========================================================
;====================
.endif
;EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
.end
2>Vector.ASM文件()
;-------------------定义主向量段--------------
;--------------------Vector.ASM
.sect".vectors";定义主向量段
RESETB8000h;_c_int0;地址0000H,复位,优先级1
INT1BGISR;200h;FLASH;地址0002H,INT1,优先级4
INT2BPHANTOM;地址0004H,INT2,优先级5
INT3BPHANTOM;地址0006H,INT3,优先级6
--------------------------------------------------------------------------------------
;----------------定义子向量段-------------------------
.sect".pvecs";---0044h;定义子向量段
PVECTORSBPHANTOM;偏移地址0000H
B8700h;TEST_ISR;PHANTOM;偏移地址0001H
BPHANTOM;偏移地址0002H
BPHANTOM;偏移地址0003H
BPHANTOM;偏移地址0004H
BPHANTOM;偏移地址0005H
BPHANTOM;偏移地址0006H
BPHANTOM;偏移地址0007H
BPHANTOM;偏移地址0008H
BPHANTOM;偏移地址0009H
----------------------------------------------------
3>FLASH.CMD文件()
/*---------FLASH.CMD----------*/
-stack40
/*-------------------------------------------------------------------------*/
/*LF2406FLASHSARAMDARAM*/
/*-------------------------------------------------------------------------*/
MEMORY
{
PAGE0:
VECS:
origin=0h,length=40h
PVECS:
origin=44h,length=100h
PRGISR:
origin=200h,length=0E00h
PROG:
origin=1000h,length=7eafh
PAGE1:
B2:
origin=0060h,length=20h
B01:
origin=0200h,length=80h
B02:
origin=0280h,length=80h
B11:
origin=0300h,length=80h
B12:
origin=0380h,length=80h
}
SECTIONS
{
.reset:
{}>VECSPAGE0
.vectors :
{}>VECSPAGE0
.pvecs:
{}>PVECSPAGE0
.prgisr:
{}>PRGISRPAGE0
.text:
{}>PROGPAGE0
.usect:
{}>B2PAGE1
.bss:
{}>B01PAGE1
.data:
{}>B02PAGE1
.data0:
{}>B11PAGE1
.stack:
{}>B12PAGE1
}
4>FLASH.CMD文件()
/*---------SARAM.CMD----------*/
-stack40
/*-------------------------------------------------------------------------*/
/*LF2406FLASHSARAMDARAM*/
/*----------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TMS320LF2406 调试 入门