请解释一下DSP中的SUBC命令

请解释一下DSP中的SUBC命令,第1张

命令提示符大全

winver---------检查Windows版本

wmimgmtmsc----打开windows管理体系结构(WMI)

wupdmgr--------windows更新程序

wscript--------windows脚本宿主设置

write----------写字板

winmsd---------系统信息

wiaacmgr-------扫描仪和照相机向导

winchat--------XP自带局域网聊天

memexe--------显示内存使用情况

Msconfigexe---系统配置实用程序

mplayer2-------简易widnows media player

mspaint--------画图板

mstsc----------远程桌面连接

mplayer2-------媒体播放机

magnify--------放大镜实用程序

mmc------------打开控制台

mobsync--------同步命令

dxdiag---------检查DirectX信息

drwtsn32------ 系统医生

devmgmtmsc--- 设备管理器

dfrgmsc-------磁盘碎片整理程序

diskmgmtmsc---磁盘管理实用程序

dcomcnfg-------打开系统组件服务

ddeshare-------打开DDE共享设置

dvdplay--------DVD播放器

net stop messenger-----停止信使服务

net start messenger----开始信使服务

notepad--------打开记事本

nslookup-------网络管理的工具向导

ntbackup-------系统备份和还原

narrator-------屏幕“讲述人”

ntmsmgrmsc----移动存储管理器

ntmsoprqmsc---移动存储管理员 *** 作请求

netstat -an----(TC)命令检查接口

syncapp--------创建一个公文包

sysedit--------系统配置编辑器

sigverif-------文件签名验证程序

sndrec32-------录音机

shrpubw--------创建共享文件夹

secpolmsc-----本地安全策略

syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码

servicesmsc---本地服务设置

Sndvol32-------音量控制程序

sfcexe--------系统文件检查器

sfc /scannow---windows文件保护

tsshutdn-------60秒倒计时关机命令

tourstart------xp简介(安装完成后出现的漫游xp程序)

taskmgr--------任务管理器

eventvwr-------事件查看器

eudcedit-------造字程序

explorer-------打开资源管理器

packager-------对象包装程序

perfmonmsc----计算机性能监测程序

progman--------程序管理器

regeditexe----注册表

rsopmsc-------组策略结果集

regedt32-------注册表编辑器

rononce -p ----15秒关机

regsvr32 /u dll----停止dll文件运行

regsvr32 /u zipfldrdll------取消ZIP支持

cmdexe--------CMD命令提示符

chkdskexe-----Chkdsk磁盘检查

certmgrmsc----证书管理实用程序

calc-----------启动计算器

charmap--------启动字符映射表

cliconfg-------SQL SERVER 客户端网络实用程序

Clipbrd--------剪贴板查看器

conf-----------启动netmeeting

compmgmtmsc---计算机管理

cleanmgr-------垃圾整理

ciadvmsc------索引服务程序

osk------------打开屏幕键盘

odbcad32-------ODBC数据源管理器

oobe/msoobe /a----检查XP是否激活

lusrmgrmsc----本机用户和组

logoff---------注销命令

iexpress-------木马捆绑工具,系统自带

Nslookup-------IP地址侦测器

fsmgmtmsc-----共享文件夹管理器

utilman--------辅助工具管理器

gpeditmsc-----组策略

一、填空(每空1分,共30分)

1 TI公司的定点DSP产品主要有 TMS320C2000 系列、TMS320C5000系列和 TMS320C6000 系列。

2 ’C54x DSP中传送执行指令所需的地址需要用到 PAB 、CAB、DAB和 EAB 4条地址总线。

3 DSP的内部存储器类型可分为随机存取存储器(RAM)和只读存储器(ROM)。其中RAM又可以分为两种类型:单寻址RAM(SARAM)和双寻址RAM(DARAM)。

4 ’C54x DSP的内部总存储空间为192K字,分成3个可选择的存储空间:64K字的程序存储空间 、64K字的数据存储空间和64K字的 I/O空间 。

5 从功能结构上,’C54X DSP的CPU可以划分成 运算部件 和 控制部件 两大部分。

6 ’C54x DSP的寻址方式有七种,分别为立即寻址、绝对寻址、累加器寻址、直接寻址、 间接寻址 、存储器映象寄存器寻址、堆栈寻址。

7 在’C54x DSP寻址和指令系统中,Xmem和Ymem表示 16位双寻址 *** 作数 ,Dmad为16位立即数,表示 数据存储器地址 ,Pmad为16位立即数,表示 程序存储器地址 。

8 程序计数器的值可以通过 复位 *** 作 、 顺序执行指令 、 分支转移 ,累加器转移,块重复,子程序调用,从累加器调用子程序,中断等 *** 作改变。

9 ’C54x DSP芯片采用了6级流水线的工作方式,即一条指令分为 预取指 、取指、译码、 寻址 、读数和执行6个阶段。

10解决MMR写 *** 作的流水线冲突时,一般可用采用推荐指令和 插入空 *** 作指令 的方法。

11’C54x DSP定时器由3个16位存储器映射寄存器组成:定时器寄存器(TIM)、 定时器周期寄存器(PRD)和 定时器控制寄存器(TCR) 。

12 主机接口(HPI,Host Port Interface) 是TMS320C54x 系列定点芯片内部具有的一种接口部件,主要用于DSP与其他总线或CPU进行通信。

13’C54x DSP的指令系统有 助记符指令 和 代数指令 两种形式。

14COFF目标文件中text段通常包含 可执行代码 ,data段通常包含己初始化的数据,bss段中通常为 未初始化的数据 保留空间。

15DSP芯片的开发工具可以分为 代码生成工具 和 代码调试工具 两类。

二、简答题(每题5分,共20分)

1什么是定点DSP芯片和浮点DSP芯片?各有什么优缺点?

解:按数据的定点格式工作的DSP芯片称为定点DSP;

按数据的浮点格式工作的DSP芯片称为浮点DSP;

定点DSP的价格便宜,功耗低,但运算精度低;

浮点DSP的价格较高,C语言编程调试方便,运算精度高。

2 简述流水线 *** 作的基本原理。

解:流水线 *** 作是各指令以机器周期为单位相差一个时钟周期,连续并行工作的情况。其本质是DSP多条总线彼此独立地同时工作,使得同一条指令在不同机器周期内占用不同总线资源。同时,不同指令在同一机器周期内占用不同总线资源。

3 ’C54x DSP有哪些重复 *** 作?各有什么优点?

解:有单条指令重复执行和程序块重复执行两种重复 *** 作。

单条指令重复 *** 作功能,可以使乘法/累加和数据块传送那样的多周期指令在执行一次之后变成单周期指令,大大提高了这些指令的执行速度。

利用块重复 *** 作进行循环,是一种零开销循环。

4 软件可编程等待状态发生器的功能是什么?

解:软件可编程等待状态产生器可以将外部总线周期扩展到7个机器周期(C549、C5402、C5410和C5420为14个机器周期),这样’C54x DSP可以方便地与慢速的片内存储器和I/O器件接口。

三、问答题(10分)

1 ’C54x DSP的串行口有哪些类型?各有什么特点?

解:有标准同步串口SP、缓冲同步串口BSP、多路缓冲串口McBSP、时分多路同步串口TMD 四种。

缓冲串口(BSP)是一个增强型的标准串口,它由一个全双工双缓冲串口和一个自动缓冲单元(ABU)组成。

由于其中的串行口与标准串口的功能相同,因此在标准模式下,缓冲串口的 *** 作与标准串口的工作方式是一样的。不过无论是标准模式还是自动缓冲模式,BSP都提供了一些增强功能。主要包括了可编程控制的串口时钟、可选择时钟和帧同步信号的正负极性,能够以每帧8位、10位、12位和16位传输数据。通过配置BSP的控制寄存器,BSP还能实现忽略帧同步信号的数据传输。

时分复用串行口TDM采用时分复用技术,将多个外部器件复用与’C54x进行串行通信,每一个时隙对应于其中的1路通信。

TDM可以和外部的多个应用接口实现方便灵活的数据交换。’C54x最多可以和8个外部器件接口通信。

多通道缓冲串口(McBSP)是在缓冲串口的基础上发展起来的增强版。

McBSP具有高速、全双工、可与各种总线标准的器件直接接口等特点,它为DSP使用者在不同方面的应用提供了方便,尤其适合在通信领域的应用。

四、阅读指令并填空(每题5分,共25分)

1.BANZ 2000h, AR3-

2.CMPR GT, AR3

3.ADD AR3+, 14, A

4.SUB A, -8, B

5.MPY AR3+, A

五、程序题(15分)

写出计算 的主要汇编程序,并给程序添加注释,画出程序的流程图。

解:程序及注释:

bss x, 20 ;给变量x分配20个字单元

bss y, 1 ;给变量y分配1个字单元

STM #x, AR1 ;取x地址

STM #19, AR2 ;设置循环次数

LD #0, A ;累加器清零

loop: ADD AR1+, A ;累加x分量

BANZ loop, AR2- ;循环是否结束,没有结束则继续累加

STL A, @y ;把结果存入y

流程图:

DSP系统的引导程序(BOOT)是系统加电或复位时,DSP将一段存储在外部的非易失性存储器的程序代码通过DMA方式拷贝到内部的高速内存中运行。这样既能扩展DSP有限的存储空间,又能充分发挥DSP内部资源的效能。用户的代码也可以通过掩膜方式写入到DSP内部ROM中,但这样受容量和价格的限制,且不便于扩展和升级。 DSP的引导过程如下: 1) DSP复位后,通过DMA方式将外部CE1空间的数据读入到内部程序空间地址0处,读入数据的多少因芯片而异(TMS320C6712一次只拷贝1KB)。 2) DSP推出复位状态,开始执行内部程序空间地址0处的程序,这段程序先将外部主程序数据读入到DSP内部程序空间相应地址,然后跳转到主程序运行。 第一步是由芯片自动完成,关键是第二步:用户需要编写相应的汇编程序,实现二次引导,即用户主程序的装载

id) //将McBSP0初始化为SPI

{

SPSA0=SPCR10_SUB;

SPSD0=0x00; //接收端复位RRST=0

SPSA0=SPCR20_SUB;

SPSD0=0x00; //发送端复位XRST=0

SPSA0=SPCR10_SUB;

SPSD0=0x1800; //CLKSTP=11

SPSA0=PCR0_SUB;

SPSD0=0x0A08; //CLKXM=1(主设备);CLKXP=0

SPSA0=RCR10_SUB;

SPSD0=0x00; //RWDLEN1=000,接收包长度为8

SPSA0=RCR20_SUB;

SPSD0=0x0001; //在BFSX信号上提供正确的建立时间

SPSA0=XCR10_SUB;

SPSD0=0x00; //XWDLEN1=000,发送包长度为8

SPSA0=XCR20_SUB;

SPSD0=0x0001; //在BFSX信号上提供正确的建立时间

SPSA0=SRGR10_SUB;

SPSD0=0x00FE; //为采样率时钟定义分频因子

SPSA0=SRGR20_SUB;

SPSD0=0x2000; //CLKSM=1,从CPU得到时钟;每个包传送时,激活BFSX信号

SPSA0=SPCR20_SUB;

SPSD0=0x0063; //发送端脱离复位XRST=1

SPSA0=SPCR10_SUB;

SPSD0|=0x0001; //接收端脱离复位RRST=1;采样率产生器脱离复位GRST=1

delay(256); //为使McBSP逻辑稳定,需等待两个采样率产生器时钟周期

}

二.HDn作为片选信号时DSP与MCP2510通信过程

21读程序

211 MCP2510读取过程

在读 *** 作开始时,CS引脚将被置为低电平。随后读指令和8 位地址码(A7 至 A0)将被依次送入MCP2510 。在接收到读指令和地址码之后, MCP2510 指定地址寄存器中的数据将被移出通过SO引脚进行发送。每一数据字节移出后,器件内部的地址指针将自动加一以指向下一地址。因此可以对下一个连续地址寄存器进行读 *** 作。通过该方法可以顺序读取任意个连续地址寄存器中的数据。通过拉高CS引脚电平可以结束读 *** 作。

编程时需注意问题:

1. SPI的读 *** 作是通过写 *** 作完成的。因此在DSP发送地址字节后,再发送一任意8位数据以产生接收时钟。

2. 在发送完任意8位数据后,DSP要有个延时,以等待写入DXR的数据从发送端移出,从而保证从2510输出的数据能够正确地被DSP接收。延时时间应大于采样率产生器输出的8个周期,最好长一些。

3. 由于SPI在发送数据的同时也在接收数据,所以在读取有效数据前(即在发送地址字节完毕后)要先清空接收缓冲器,否则可能会因为接收缓冲器溢出而无法接收有用的数据。可以通过读取3次(因为5402的McBSP有3个接收缓冲器)接收缓冲器DRR的值来实现清空缓冲器的 *** 作,读取之前要注意延时(等待地址字节发送完毕)。

212 示例程序

Uint16 ReadMCP2510(Uint16 Addr)

{

ChipSlctMCP2510(0); //打开片选

NOP;

NOP;

NOP;

//发送读指令

DXR10=READ_MCP2510;

SPSA0=SPCR20_SUB;

while(!(SPSD0&0x02)) //等待上一个数据发送完毕

//发送地址

DXR10=Addr;

SPSA0=SPCR20_SUB;

while(!(SPSD0&0x02)) //等待上一个数据发送完毕

delay(1000); //延时,等待地址字节从DX移出

//读取数据

Addr=DRR10; //读3次,清空缓冲器

Addr=DRR10;

Addr=DRR10;

DXR10=0; //发送任意数据,以便产生接收时钟

SPSA0=SPCR20_SUB;

while(!(SPSD0&0x02)) //等待上一个数据发送完毕

delay(1000); //延时,等待数据接收

Addr=DRR10; //第一次为无效数据

ChipSlctMCP2510(3);

return Addr;

}

22写程序

221 MCP2510写 *** 作

置CS引脚为低电平启动写 *** 作。 启动写指令后,地址码以及至少一个字节的数据被依次发送到MCP2510 。只要 CS 保持低电平,就可以对连续地址寄存器进行顺序写 *** 作。在SCK 引线上的上升沿,数据字节将从D0位开始依次被写入。如果CS 引脚在字节的8 位数据尚未发送完之前跳变到高电平,该字节的写 *** 作将被中止,而之前发送的字节已经写入。

编程时需注意问题:

1 2510如何区分指令、地址和数据?由于读写指令、地址字节和数据字节的值可能会一样,所以有必要通过一定的时序来将他们区分开来。经实验验证,2510应该是通过片选信号CS来区分这几个数据的,当CS从高变低后,第一个字节就是指令,哪怕上次没有正确的读写,只要将CS置1,然后再置0,就会重新开始一个指令的周期。

2 发送完数据字节后一定要有个延时来等待数据字节从DX引脚发送出去,之后才能将片选信号CS置1,否则无法正确写入数据。

222 示例程序

void WriteMCP2510(Uint16 Addr,Uint16 wrData)

{

ChipSlctMCP2510(0);

NOP;

NOP;

NOP;

DXR10=WRITE_MCP2510;

SPSA0=SPCR20_SUB;

while(!(SPSD0&0x02)) //等待上一个数据发送完毕

DXR10=Addr;

SPSA0=SPCR20_SUB;

while(!(SPSD0&0x02)) //等待上一个数据发送完毕

DXR10=wrData;

SPSA0=SPCR20_SUB;

while(!(SPSD0&0x02)) //等待上一个数据发送完毕

delay(1000);

ChipSlctMCP2510(3);

}

三.BFSX作为片选信号时DSP与MCP2510通信过程

由于要完成2510的读写 *** 作需要3个字节,所以采用BFSX引脚作为MCP2510的片选信号时需要将XCR1和RCR1中的XWDLEN1、RWDLEN1设置为100(24bit)。

由于发送接收字长度设置为24位,因此在发送过程中需要用到DXR2和DRR2寄存器,在此需要注意的一点就是,DXR2(DRR2)必须要比DXR1(DRR1)先初始化或读取。其中DXR2(DRR2)中存放的是24bit的高8位,DXR1(DRR1)中存放的是24bit的低16位。发送时DXR2中的数据首先发送,接收时数据首先存放到DRR2中,因此DXR2(DRR2)中存放指令字节,DXR1(DRR1)中由高到低存放地址和数据。

下面为一个简单的调试程序。

Uint16 Debug24bit( )

{

int i;

DXR20=0x02; //写指令

DXR10=0x0F01; //0F为CANCTRL地址,01为待写入的数据

delay(3000); //延时,等待发送完毕

i=DRR10; //清空接收缓冲器

i=DRR10;

i=DRR10;

DXR20=0x03; //读指令

DXR10=0x0F00; //0F为CANCTRL地址,00用于读取数据

delay(3000); //延时,等待接收完毕

i=DRR10&0x00FF; //DRR10低8位为有用数据

return i;

}

四. 通信时MCP2510的初始化

411 确定时间份额

计算公式:

时间份额TQ定义为:TQ = 2(BaudRate + 1)TOSC

其中,BaudRate 是由 CNF1BRP<5:0> 表征的二进制数。

标称位时间 = TQ (Sync_Seg + Prop_Seg +Phase_Seg1 + Phase_Seg2)

- 同步段(Sync_Seg)

- 传播时间段(Prop_Seg)

- 相位缓冲段1 (Phase_Seg1)

- 相位缓冲段2 (Phase_Seg2)

假设每个标称位包含N个时间份额TQ,则根据以上公式有:1/100K = NTQ

现设定分频值BaudRate为1,根据以上公式计算,得出在4MHz时钟时,要实现100Kbps的波特率每个标称位包含个10时间份额TQ,在N满足要求的情况下BaudRate还可以设置为其他值,由MCP2510的手册得知的TQ数量N应在6-25之间。然而在满足这个前提下,应尽量使TQ的时间短一些,即一个标称位的时间份额数量N多一些,这样选择采样点位置时具有更好的分辨率。

412 设置时间段和采样点

在确定了一个标称位包含的时间份额数量后,还需要对各个时间段包含的时间份额进行分配,以确定采样点的位置。位的采样时刻取决于系统参数,通常应发生在位时间的60-70%处。同时,同步段的时间份额为1 TQ,TDELAY典型值为1-2TQ。因此时间份额分配如下:

(Sync_Seg + Prop_Seg +Phase_Seg1 + Phase_Seg2)=(1+2+3+4)

413 确定同步跳转宽度和采样次数

根据规则,SJW最大值 为4TQ。然而通常情况下,只有当不同节点的时钟发生不够精确或不稳定时,例如采用陶瓷谐振器时,才需要较大的SJW。一般情况下, SJW取1即可满足要求。

main()

{

int i;

unsigned int px;

unsigned int py;

unsigned int pz;

px=(unsigned int )0x80000;

py=(unsigned int )0x80100;

//-----请按实验要求将程序补充完整-----//

while(1)

{

for(i=0;i<16;i++)

{

scanf("%d",(px+i));

(py+i)=0;

}

printf("\n");

pz=px;

px=py;

py=pz;

for(i=0;i<16;i++)

printf("%d",(py+i));

printf("\n");

}

// 在此加软件断点

}

类似的问题我也遇到过,总是进入非法中断。反复查也查不到问题,关键无从下手, 没办法,只能屏蔽掉绝大部分中断,发现CPU_Timer0中断进不去,再后来就查出是 cmd文件配置的问题。 嵌入式程序的调试比PC程序麻烦,根据你说的也很难判断是什么问题,只能告诉你一个思路: 把能屏蔽掉的代码都注释掉,直到不再出问题。然后一点一点再往上加, 看加到哪一部开始出问题。如果全屏蔽了还有问题,那么最可疑的就是cmd了。

有什么不明白,一个Uint16位的整数变量all和一个分别命名16位中每一位的结构体组成的联合体。

这样定义union GPADIR_REG的对象后,比如m_GPADir;

m_GPADirall=0x12;可以实现对整体寄存器内容的赋值;

也可以用

m_GPADirbitGPIOA15=0;对单个某一位赋值。

同一个寄存器有两种访问方式既方便又灵活。

1、时钟输入问题

时钟输入:对于280x系列的dsp的时钟选择有多种,包括:

晶体经过X1、X2输入:需要将CLKIN连接到参考地,否则在用FLASH运行程序的时候,将无法运行。;

外部时钟经过CLKIN引脚输入:允许时钟电压是33V。需要将X1引脚接到参考地。X2悬空。

外部时钟经过X1引脚输入。允许时钟电压是18V。需要将CLKIN连接到参考地,X2悬空。

2、PLL问题

PLL作为DSP的时钟重要组成部分,它除了提高系统内部SYSCLKOUT的频率之外,还有一个重要的用途就是监视外部时钟是不是很好的为DSP内部提供系统时钟。

如果系统让PLL处于使能状态,那么就能够监视PPLSTS寄存器中的MCLKSTS位的状态即可。如果MCLKSTS被置位。那么软件就要恰当的措施保证系统不出现事故。这种措施包括使系统停机、使系统复位。

1、 对PLL *** 作需要注意的问题

需要采用正确的步骤来更新PLL控制寄存器。

当DSP工作在“limp mode”状态下,禁止写PLLCR。特别是在系统上电以后;也禁止进入HALT节电模式。

如果没有外部时钟。那么Watch将失去效能。

2、 各种工作模式下的时钟输入检测逻辑功能。

PLL被旁路状态:如果PLLCR=0,那么PLL就被旁路。如果OSCCLK检测到丢失,DSP自动切换到PLL,设置MCLKSTS。DSP运行在“limp mode”频率模式下。

PLL使能状态:除了PLLCR≠0以外,其他的监测模式及其结果同上。

标准低功耗模式:在这种模式下,连接到CPU的CLKIN被停止。如果检测到时钟消失,那么也是置位MCLKSTS,同时产生复位。如果工作于PLL旁路模式下,1/2的limp频率连接到cpu。

3、 XCLKOUT

主要是说:由于XCLKOUT随着RESET被激活而同时开始工作。所以可以用该引脚来检测和监视系统的SYSCLKOUT是否工作。或者说是否是预期的工作频率。

以上就是关于请解释一下DSP中的SUBC命令全部的内容,包括:请解释一下DSP中的SUBC命令、dsp的题目、DSP的引导程序是起到什么作用的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9779609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存