F2812启动方式之一——BootROM

合集下载

DSP2812启动过程

DSP2812启动过程

2812的内部Flash启动过程2812的内部flash启动过程2812从内部flash启动的详细流程说明:a)程序硬件复位或者软件复位b)判断mp/mc是否为0c)为0则从boot rom启动,否则从外部启动d)到boot rom的0x3F FFC0处取出复位向量,跳到boot函数e)采集IO管脚状态,f)根据IO状态选择boot方式g)如果是flash,程序退出boot函数,跳转到0x3F 7FF6h)取出跳转指令,跳转到自己的指定地址或者C初始化的入口_C_INT00处i)在C初始化的入口_C_INT00对一些变量,堆栈和寄存器进行必要的设置,该函数在c的库函数内j)进入main函数从上电到我们的主函数运行之间这段时间里2812到底做了些什么?2812是怎样引导程序运行的?下面叙述其启动过程。

在2812中引脚XMP/~MC,当该引脚的为高电平时表示是微处理器模式(microprocessor),为低电平时表示微机算计模式(microcomputer),当为微处理器模式时,2812内部的bootrom被禁止,通过zone7(0x3F C000)从外部调引导程序启动。

2812复位以后,其复位向量是固定的0x3FFFC0,如果为微处理器模式,那么复位后的复位向量指向的外部的地址,即0x3FFFC0是zone7处的地址,若为微机算计模式,那么0x3FFFC0指向的是2812的片内FLASH的地址。

下面就以微机算计模式加以说明其过程。

上电复位后,复位向量是指向片内Flash的0x3F FFC0,2812有一块flash地址从0x3F F000-0x3F FFFF在出厂时已经固化好了引导程序。

在0x3F FFC0处是一条跳转指令,跳到iniboot(地址0x3F FC00)函数处执行iniboot代码,该iniboot代码就是TI在dsp出厂时固化在flash中的。

InitBoot assembly Routine将选择SelectBootMode function 启动模式函数。

简介TMS320F28XX

简介TMS320F28XX

简介:德州仪器所生产的TMS320F2812 数字讯号处理器是针对数字控制所设计的DSP,整合了DSP 及微控制器的最佳特性,主要使用在嵌入式控制应用,如数字电机控制(digital motor control, DMC)、资料撷取及I/O 控制(data acquisition and control, DAQ)等领域。

针对应用最佳化,并有效缩短产品开发周期,F28x 核心支持全新CCS环境的C compiler,提供C 语言中直接嵌入汇编语言的程序开发介面,可在C 语言的环境中搭配汇编语言来撰写程序。

值得一提的是,F28x DSP 核心支持特殊的IQ-math 函式库,系统开发人员可以使用便宜的定点数DSP 来发展所需的浮点运算算法。

F28x 系列DSP预计发展至400MHz,目前已发展至150MHz 的Flash 型式。

1.高性能静态CMOS制成技术(1)150MHz(6.67ns周期时间)(2)省电设计(1.8VCore,3.3VI/O)(3)3.3V快取可程序电压2.JTAG扫描支持3.高效能32BitCPU(1)16x16和32x32MAC Operations(2)16x16Dual MAC(3)哈佛总线结构(4)快速中断响应(5)4M线性程序寻址空间(LinearProgramAddressReach)(6)4M线性数据寻址空间(LinearDataAddressReach)(7)TMS320F24X/LF240X程序核心兼容4.芯片上(On-Chip)的内存(1)128Kx16 Flash(4个8Kx16,6个16Kx16)(2)1Kx16OTPROM(单次可程序只读存储器)(3)L0和L1:2组4Kx16 SARAM(4)H0:1组8Kx16SARAM(5)M0和M1:2组1Kx16 SARAM共128Kx16 Flash,18Kx16 SARAM5.外部内存接口(1)支持1M的外部内存(2)可程序的Wait States(3)可程序的Read/Write StrobeTi最小g(4)三个独立的芯片选择(Chip Selects)6.频率与系统控制(1)支持动态的相位锁定模块(PLL)比率变更(2)On-Chip振荡器(3)看门狗定时器模块7.三个外部中断?8.外围中断扩展方块(PIE),支持45个外围中断9.128位保护密码(1)保护Flash/ROM/OTP及L0/L1SARAM(2)防止韧体逆向工程10.三个32位CPU Tim er11.电动机控制外围(1)两个事件管理模块(EVA,EVB)(2)与240xADSP相容12. (1)同步串行外围接口SPI模块(2)两个异步串行通讯接口SCI模块,标准UART(3)eCAN(Enhanced Controller Area Network)(4)McBSP With SPI Mode13.16个信道12位模拟-数字转换模块(ADC)(1)2x8通道的输入多任务(2)两个独立的取样-保持(Sample-and-Hold)电路(3)可单一或同步转换(4)快速的转换率:80ns/12.5MSPS图1TMS320F2812功能方块图。

2812启动注意事项

2812启动注意事项

问题如下:疑问一:仿真调试下载程序或把程序已烧写至FLASH后脱机上电运行程序时,程序是不是必须要执行“从0X3F FFC0处复位→执行0X3F FC00地址处的初始化引导函数(Initboot) →根据GPIO选择引导模式→确定用户程序入口地址→从入口处开始执行用户程序”这一系列过程吗?对于用C语言编程时,通常在复位地址向量处(对于F240而言,复位地址在0X0000地址处?),常需要放置指令:“B _c_int0”来规定初始化入口地址,意即C语言函数“_c_int0”完成的功能就是初始化引导函数(Initboot)的功能吗?但对F2812来说,复位向量地址为0X3F FFC0,处于ROM区,是一次性编程ROM,怎么把_c_int0这个入口地址放在0X3F FFC0处呢?疑问二:由于引导模式由GPIO引脚状态决定,那对于一个已经设计好的DSP最小系统,引脚状态在硬件上已经固定好了,意即是不是此时只能局限于一种引导模式了?不能同时进行仿真调试和烧写至FLASH内进行硬件调试吗?(因为仿真调试时,用户程序入口地址一般在SARAMH0处,烧写至FLASH内进行允许时,用户程序入口地址在FLASH处。

)1:上电运行时根据MP/MC引脚的状态决定是从片外的3fffc0处读取复位向量或者时从片内的rom的3fff c0处读取复位向量。

MC方式下从片内读取,MP方式下从片外读取。

2:一般我们用的是MC方式,即从片内读取复位向量,在片内的rom 3fffc0处有一个地址为3ffc00。

3:复位后处理器从3fffc0处读取3ffc00这个地址,所以程序从3ffc00处开始执行4:3ffc00处开始的就是initboot过程吧,根据IO管教的状态判断该进入那一种引导方式5:在SCITXA引脚为高电平时就是flash boot方式,此时置PC=3F7FF66:在片内flash的3F7FF6和3F7FF7处有一个跳转指令,该跳转指令就是LB _c_int007:执行这个跳转指令后程序就开始运行c_int00这个函数了8:这个函数就是建立一个c程序的运行环境,等建立完c运行环境后c_int00调用main函数9:main函数开始就是我们自己编写的应用程序了。

2812的导引模式

2812的导引模式

2812有两种运行模式,微处理器(Microprocessor)模式和微计算机(Microcomputer)模式,复位时,芯片判断XMP/MC引脚上的电平,当该引脚为高电平时,芯片进入微处理器模式,当为低电平时则进入微计算机模式。

在微处理器模式下,芯片需要从第7外部接口区引导运行(XINTF Zone 7)。

只有在微计算机模式下,芯片才会从内部Boot Rom引导。

XMP/MC引脚的状态在复位时锁存入芯片配置寄存器XINTCNF2中MP/MC位,复位后,XMP/MC引脚上的电平就不再有效,芯片将不再关心其状态。

用户可以通过改变XINTCNF2的MP/MC位来重新配置芯片运行模式。

说的明白易懂一点,XMP/MC的值影响的是在0x3FFFC0--0x3FFFFF的地址范围上映射的是BROM向量(从ROM中获取)还是XINTF向量(从XINTF Zone7中获取):0为BROM向量,1为XINTF向量;当为微计算机模式,芯片从内部Boot Rom引导;Bootloader通过检测四个通用IO口得状态来确定使用哪种引导模式。

四个IO状态及对应的引导模式如下表所示:GPIOF4(SCITXDA)GPIOF12(MDXA) GPIOF3(SPISTEA) GPIOF2(SPICLK) 引导模式PU No PU No PU No PU GPIO是否内部拉高1 X X XFlash引导模式,跳转到Flash地址X3F7FF60 1 X X SPI引导模式,调用SPI_Boot,从外部串行SPI EEPROM 启动0 0 1 1 SCI引导模式,调用SCI_Boot从SCI-A引导启动0 0 1 0 H0 SARAM引导模式,跳转到H0 SARAM地址0x3F80000 0 0 1OPT引导模式,跳转到OPT地址0x3D78000 0 0 0 并行引导模式,调用Parallel_Boot从通用IO 口B口启动最常用的为Flash引导模式,硬件上确保DSP的XMP/MC管脚接地,且SCIATXDA脚不被拉低;当XMP/MC接低电平,表示微计算机模式,那么0x3FFFC0指向的是2812的片内Flash的地址。

DSP原理及应用-F2812-1

DSP原理及应用-F2812-1

片上SRAM: M0、 M1、L0、L1 和 H0 FLASH/OTP: 中断向量表、 外设寄存器:
外部存储器接 口:Zone 0-7
《TMS320F28x External Interface (XINTF) Reference Guide》 DSP281x_Xintf.h SP281x_Xintf.c
DSP的发展



更高的运行速度和处理速度 多DSP协同工作 更方便的开发环境 大量专用DSP的出现 更低的价格,更高的性能/价格比 更广泛的应用(每年以30%增长) 更低的功耗
DSP主要类型


TI:TMS320系列 C5000系列:C54X,C54XX, C55X(低功耗) C2000系列:C20X,F20X,F24X,F24XX(控制) C6000系列:C62XX,C67XX,C64X(高性能) 其他:C3X,C2X,C5X,C4X,C8X等 ADI:ADSP21XX系列 Motorola:DSP56XX系列 AT&T:DSP16/16A和DSP32/32C等单片器件 Lucent: Zilog等
早期的型号中tms320f281xmcu要求33v应源要先于19v上应而近期推出的tms320f280xtms320f2823xtms320f2833x要求18v19v先于33vio应源上应或者中应于号数c28x系列各型mcu应源供应应应和上应应序要求不完全一应因而应源管理应应主要应注意3其次是c28xmcu是否有上应应序要求如果有需注应的耗应量和散应要求有所差应因而要应应合适功率的芯片及散应方式
PIE(外设中断 扩展):事件管 理器… … …Fra bibliotek中断响应
中断向量表
// Group 1 PIE Vectors PDPINTA_ISR, // EV-A PDPINTB_ISR, // EV-B rsvd_ISR, XINT1_ISR, XINT2_ISR, ADCINT_ISR, // ADC TINT0_ISR, // Timer 0 WAKEINT_ISR, // WD

F2812主要功能简介-事件管理器

F2812主要功能简介-事件管理器
连续增/减计数模式
tactive (2 TxPR-TxCMPRup -TxCMPRdn )T定标输入时钟周期
TxCMPRup=0,TxCMPRdn≠0
tactive (2 TxPR-TxCMPRdn )T定标输入时钟周期
TxCMPRup=0,TxCMPRdn=0
tactive 2 TxPR T定标输入时钟周期
TxCMPRup﹥TxPR,TxCMPRdn﹥TxPR
tactive 0
35
GP Timer 复位状态
任何RESET事件发生时,都产生下列结果
计数方向位 = 1 其它所有定时器寄存器的位 = 0,定时器被禁止 所有中断标志位 = 0 功率保护中断屏蔽位 = 1,开放 其它所有中断屏蔽位 = 0 定时器比较输出被置高阻
内部/外部时钟输入,可编程分频,方向可引脚控制
4种可屏蔽中断:上溢、下溢、比较、周期
全比较单元 Full-Compare Units
3 x 2 个独立的比较单元,每个有6个比较输出
配合可编程死区发生器,产生PWM波形
可编程死区发生器 Programmable Deadband
Generation
为什么要设计6个PWM输出?
3个4位计数器,1个16位比较寄存器,死区值可编程
PWM波形发生器 PWM Waveform Generation
共可产生8个PWM波形输出
捕获单元 Capture Units
EVA:CAP1/2/3,EVB:CAP4/5/6,上/下边沿触发
3个16位 2-level-deep FIFO堆栈
不变
高 低 低 高 立即高 立即低
31
PWM输出逻辑

DSP2812程序运行过程学习总结

DSP2812程序运行过程学习总结

DSP2812程序运行过程学习总结一、2812的上电运行过程以下是2812上电(复位)后运行过程的描述:1:上电运行时根据MP/MC引脚的状态决定是从片外的3fffc0处读取复位向量或者时从片内的rom的3fffc0处读取复位向量。

MC方式下从片内读取,MP方式下从片外读取。

2:一般我们用的是MC方式,即从片内读取复位向量,在片内的rom 3fffc0处有一个地址为3ffc00。

3:复位后处理器从3fffc0处读取3ffc00这个地址,所以程序从3ffc00处开始执行4:3ffc00处开始的就是initboot过程,根据IO管教的状态判断该进入那一种引导方式5:在SCITXA引脚为高电平时就是flash boot方式,此时置PC=3F7FF6SCITXA引脚有内部上拉,所以只要没有强制下拉的话,DSP检测的都是高电平。

对于通讯不影响。

SCITXA不用在外部上拉。

不能直接接到高电平上。

6:在片内flash的3F7FF6和3F7FF7处有一个跳转指令,该跳转指令就是LB _c_int007:执行这个跳转指令后程序就开始运行c_int00这个函数了8:这个函数就是建立一个c程序的运行环境,等建立完c运行环境后c_int00调用main函数9:main函数开始就是我们自己编写的应用程序了。

二、CMD文件介绍DSP开发过程中,编译器生成的代码和数据要由链接器分配到合适的存储空间,通常链接器的命令文件.cmd文件是由用户自己编写的,编写不当,就会使仿真开发不能进行。

1存储空间的配置TMS320F2812的DSP存储器分为三个独立选择的空间-程序空间、数据空间和I/O空间,其中程序存储器存放待执行的指令和执行中所用的系数(常数),可使用片内或片外的RAM、ROM或EPROM等来构成;数据存储器存放指令执行中产生的数据,可使用片内或片外的RAM和ROM来构成;I/O存储器存放与映象外围接口相关的数据,也可以作为附加的数据存储空间使用。

TMS320F2812的使用注意

TMS320F2812的使用注意

1.时钟和复位时钟从外部X1/X2脚引进,经过PLL倍频成SYSCLKOUT,供芯片内部各模块使用。

注意的是:SYSCLKOUT直接供Watchdog,CAN总线模块和存储器单元访问使用,而Low-Speed外围模块(SCI,SPI,McBSP)的时钟是SYSCLKOUT经Low-Speed Prescaler 分频后的LSPCLK,High-Speed外围模块(EV)以及ADC模块的时钟是SYSCLKOUT经High-Speed Prescaler分频后的HSPCLK。

1.1时钟和PLLSYSCLKOUT可以直接由外部时钟频率提供,也可以选择是PLL模块输出时钟。

在上电复位时XRS锁存外部XF_XPLLDIS管脚信号,选择时钟来源,因此如果要改变时钟选择,必须让DSP复位。

PLL倍频系数由PLLCR寄存器选择。

1.2看门狗XRS是外部输入输出管脚,输入时是外部复位DSP信号,输出时是看门狗给出的复位信号,由WDRST信号控制。

可以把该信号做为全局复位信号。

WDCR可以截断WDCLK,禁止Watchdog工作。

WDCLK是外部时钟/512再经过watchdog prescaler分频得到。

WDRST信号有效可以维持外部时钟512个周期,其有效的条件有三种:a.对WDKEY寄存写入非(0x55,0xAA)的数据;b.对WDCR寄存器的WDCHK位写入的不是(0b101)的数据;c.在WDCNTR计数器被允许计数,不被清零的条件下,计数溢出。

WDCNTR计数器有两种条件可以强制清零:a. 对WDKEY寄存写入(0x55,0xAA)的数据;b.在XRS有效期间(0有效)。

还有一个WDINT信号,其产生条件和WDRST信号一样,但不会对外部信号产生影响,该信号可以让DSP从IDLE/STANDBY模式中退回到正常工作模式,即唤醒功能。

1.3低功耗模式IDLE\STANDBY\HALT1.4CPU定时器3个32位定时器TIMER0\1\2都可以被使用,但如果使用DSPBOIS操作系统的话,TIMER2被占用。

TMS320F2812处理器特性

TMS320F2812处理器特性

TMS320F2812处理器特性1.高性能静态CMOS(Static CMOS)技术●150MHz(时钟周期6.67ns)●低功耗(核心电压1.8V,I/O口电压3.3V)●Flash编程电压3.3V2.JTAG边界扫描(Boundary Scan)支持3.高性能的32位中央处理器(TMS320C28x)●16位*16位和32位*32位乘且累加操作●16位*16位的两个乘且累加●哈佛总线结构●强大的操作能力●快速的中断响应和处理●统一的寄存器编码模式●可达4兆字的线性程序地址●可达4兆字的数据地址●代码高效(用C/C++或汇编语言)●与TMS320F24/LF240x处理器的源代码兼容4.片内存储器●128K*16位的Flash存储器●1K*16位的OTP型只读存储器●L0和L1:两块4K**16位的单口随机存储器(SARAM)●H0:一块8K*16位的单口随机存储器●M0和M1:两块1K**16位的单口随机存储器5.引导存储器(Boot ROM)4K*16位●带有软件的Boot模式●标准数学表6.外部存储器接口(部分型号拥有,且标准不一)●最多1MB的存储器●可编程等待状态数●可编程读/写选通计数器(Strobe Timing)●三个独立的片选7.时钟与系统控制●支持动态的改变锁相环的频率●片内振荡器●看门狗定时器模块8.三个外部中断9.外部中断扩展(PIE)模块。

可支持96个外部中断,2812仅使用了45个外部中断。

10.128位的密匙(Security Key/Lock)●保护Flash/OTP和L0/L1 SARAM●防止ROM中的程序被盗11.3个32位的CPU定时器●12.马达控制外围设备●两个事件管理器(EVA、EVB)●与C240兼容的器件●13.串口外围设备●串行外围接口(SPI)●两个串行通信接口(SCIs),标准UART●增强型局域网络(eCAN)●多通道缓冲串行接口(McBSP)14.12位ADC,16通道●2*8通道的输入多路选择器●两个采样保持器●单一/同步转换●最快转换时间:80ns/12.5MSPS15.最多有56个独立的可编程、多用途通用输入/输出(GPIO)引脚16.高级的仿真特性●分析和设置断点的功能●实时的硬件调试17.开发工具●ANSI C/C++编译器/汇编程序/连接器●支持TMS320C24x/240x的指令●CCS集成开发环境●DSP/BIOS●JTAG扫描控制器(TI或第三方提供)●硬件评估板18.低功耗模式和节能模式●支持空闲模式、等待模式、挂起模式●停止单个外围的时钟19.封装方式●带外部存储器接口的179球型触点BGA封装●带外部存储器接口的176引脚低剖面四芯线扁平LQFP封装●没有外部存储器接口的128引脚贴片正方扁平PBK封装。

3.1 F2812主要功能简介-系统控制和中断

3.1  F2812主要功能简介-系统控制和中断

F2812主要功能简介 3 F2812主要功能简介 3-1 1 系统控制和中断 F2812的存储器 F2812的存储器
问题
F2812有哪些片上存储器 有哪些片上存储器? 1 F2812有哪些片上存储器? 2 各有多少?地址如何分布? 各有多少?地址如何分布?
Flash & OTP Flash on-chip (F2812) on128K x 16bit, 0x3D 8000 – 0x3F 7FFF always enabled, program & data space Multiple sectors Code security Low power modes Wait states can be adjusted based on CPU frequency Flash pipeline mode improve performance
Lowest power CPU read or fetch, active or read state
Standby State
CPU read or fetch, active or read state
Active or Read State
Highest power Prefetch mechanism
问题
密码存储在哪里? 1 密码存储在哪里? 2 地址多少? 地址多少?
CSM Functional Description
代码安全密码区 (PWL):
0x3F 7FF8 – 0x3F 7FFF 中有用户烧写, Flash 中有用户烧写,更改需知道旧密码 OTP 中 TI 公司一次性烧写
PWL全为 PWL全为 1: PWL全为 PWL全为 0:
FBANKWAIT, FBANKWAIT, Flash Waitstate Register

成功烧写TMS320F2812经验

成功烧写TMS320F2812经验
RAMH0 : origin = 0x3F8000, length = 0x002000
}
SECTIONS
{
/* Allocate program areas: */
.reset : > BEGIN PAGE = 0
/* Peripheral Frame 2: */
SYSTEM : origin = 0x007010, length = 0x000020
SPI_A : origin = 0x007040, length = 0x000010
SCI_A : origin = 0x007050, length = 0x000010
XINTRUPT : origin = 0x007070, length = 0x000010
GPIOMUX : origin = 0x0070C0, length = 0x000020
GPIODAT : origin = 0x0070E0, length = 0x000020
CSM : origin = 0x000AE0, length = 0x000010
XINTF : origin = 0x000B20, length = 0x000020
CPU_TIMER0 : origin = 0x000C00, length = 0x000008
PIE_VECT : origin = 0x000D00, length = 0x000100
/* Peripheral Frame 1: */
ECAN_A : origin = 0x006000, length = 0x000100
ECAN_AMBOX : origin = 0x006100, length = 0x000100

F2812性能及引脚简介

F2812性能及引脚简介

74164工作时序图
程序设计 主程序主要包括系统初始化、中断向量初始化、设置 GPIO端口、控制数据传输几个步骤。
设置GPIO端口的配置函数 void Gpio_select(void) { EALLOW; GpioMuxRegs.GPBMUX.all=0x0000; GpioMuxRegs.GPBDIR.all=0xFFFF; GpioMuxRegs.GPFMUX.all=0x0000; GpioMuxRegs.GPFDIR.all=0xFFFF ; EDIS; }
• C28X系列主要芯片包括TMS320F2812和 TMS2810。二者差别:F2812内含128K*16位 的Flash存储器,有外部存储器接口,而 F2810仅有64K*16位的片内Flash存储器,且 无外部存储器接口。
C28X系列芯片主要性能
• • • • 主频150MHz(时钟周期6.67ns) CPU内核电压1.8V,I/O口电压3.3V Flash编程电压3.3V 高性能的32位CPU: 16位*16位和32位*32位乘且累加操作 16位*16位的两个乘且累加 哈佛总线结构 • 功能强大的外设
个15位的数字I/O口GPIOF。
• 通过使用GPIO的有关寄存器可以选择和控制这些 共享引脚的操作。例如:通过GPxMUX寄存器可
以把这些引脚作为数字I/O或片内外设I/O口。如果
选择某个引脚作为数字I/O口,则可以通过 GPxDIR寄存器来设置引脚的方向;另外,可以 通过GPxQUAL寄存器来改善输入信号,有效的 消除输入信号的毛刺脉冲的干扰。
看门狗功能的软件配置
// Disable watchdog module SysCtrlRegs.WDCR= 0x0068; • • • • • • • • • • • // This function resets the watchdog timer. // Enable this function for using KickDog in the application /* void KickDog(void) { EALLOW; SysCtrlRegs.WDKEY = 0x0055; SysCtrlRegs.WDKEY = 0x00AA; EDIS; } */

TMS320F2812中文资料介绍

TMS320F2812中文资料介绍

TMS320F2812中⽂资料介绍TMS320F2812中⽂资料介绍简介:德州仪器所⽣产的TMS320F2812数字讯号处理器是针对数字控制所设计的电机控制(digital motor control, DMC)、资料撷取及I/O控制(data acquisition and control, DAQ)等领域。

针对应⽤最佳化,并有效缩短产品开发周期,F28x核⼼⽀持全新CCS环境的C compiler,提供C语⾔中直接嵌⼊汇编语⾔的程序开发介⾯,可在C语⾔的环境中搭配汇编语⾔来撰写程序。

值得⼀提的是,F28x DSP核⼼⽀持特殊的IQ-math函式库,系统开发⼈员可以使⽤便宜的定点数DSP来发展所需的浮点运算算法。

F28x系列DSP预计发展⾄400MHz,⽬前已发展⾄150MHz的Flash型式。

1.⾼性能静态CMOS制成技术(1)150MHz(6.67ns周期时间)(2)省电设计(1.8VCore,3.3VI/O)(3)3.3V快取可程序电压2.JTAG扫描⽀持3.⾼效能32BitCPU(1)16x16和32x32MAC Operations(2)16x16Dual MAC(3)哈佛总线结构(4)快速中断响应(5)4M线性程序寻址空间(LinearProgramAddressReach)(6)4M线性数据寻址空间(LinearDataAddressReach)(7)TMS320F24X/LF240X程序核⼼兼容4.芯⽚上(On-Chip)的内存(1)128Kx16 Flash(4个8Kx16,6个16Kx16)(2)1Kx16OTPROM(单次可程序只读存储器)(3)L0和L1:2组4Kx16 SARAM(4)H0:1组8Kx16SARAM(5)M0和M1:2组1Kx16 SARAM共128Kx16 Flash,18Kx16 SARAM5.外部内存接⼝(1)⽀持1M的外部内存(2)可程序的Wait States(3)可程序的Read/Write StrobeTi最⼩g(4)三个独⽴的芯⽚选择(Chip Selects)6.频率与系统控制(1)⽀持动态的相位锁定模块(PLL)⽐率变更(2)On-Chip振荡器(3)看门狗定时器模块7.三个外部中断8.外围中断扩展⽅块(PIE),⽀持45个外围中断9.128位保护密码(1)保护Flash/ROM/OTP及L0/L1SARAM(2)防⽌韧体逆向⼯程10.三个32位CPU Timer11.电动机控制外围(1)两个事件管理模块(EVA,EVB)(2)与240xADSP相容12. (1)同步串⾏外围接⼝SPI模块(2)两个异步串⾏通讯接⼝SCI模块,标准UART(3)eCAN(Enhanced Controller Area Network)(4)McBSP With SPI Mode13.16个信道12位模拟-数字转换模块(ADC)(1)2x8通道的输⼊多任务(2)两个独⽴的取样-保持(Sample-and-Hold)电路(3)可单⼀或同步转换(4)快速的转换率:80ns/12.5MSPS2.2TMS320F2812硬件结构介绍2.2.1OSC与PLL⽅块F2812芯⽚上设计了⼀个相位锁定模块(PLL),这个模块将会提供整个芯⽚所需频率源。

TMS320F2812总结

TMS320F2812总结

TMS320F2812学习总结一、复位2812复位后,芯片会采样XMPNMC 引脚的状态,这个脚的状态决定了2812复位后是从内部的Boot Rom 引导还是从外部接口区域7引导,如果XMPNMC=1(微处理模式),那么复位的中断向量将会指向外部的存储区域7,当然这种模式下必须保证外部的存储区域可用,同时引导程序必须由程序员事先写好,才能保证芯片的正常启动。

如果XMPNMC=0(微计算机模式),那么外部存储区域7将被禁止而内部的Boot Rom 使能,在这种情况下,芯片复位后将会从内部的Boot Rom 获得复位向量。

一般情况下我们都是采用微计算机模式,因此对这一引导方式做详细地说明。

在微计算机模式下,芯片复位后从内部的Boot Rom 0x3fffc0处读取0z3ffc00这个地址,因此程序就从这个地址开始执行。

图1.1是Boot Rom图1.1 片上Boot Rom的存储器映射表,可以看出0x3fffc0处正好是2812的复位向量,跳转后的地址0x3ffc00正好是芯片的引导加载函数的入口,因此芯片复位后将会执行引导加载函数,然后该函数根据芯片的特殊GPIO 口的状态确定芯片的引导模式。

表1.1给出了4个GPIO 引脚的状态来确定所要使用的引导模式。

表1.1 由4个GPIO 引脚选择的引导模式GPIOF4 (SCITXDA)PUGPIOF12 (MDXA) NO PUGPIOF3 (SPISTEA) NO PUGPIOF2 (SPICLK) NO PU模式选择1 x x x 跳转到Flash 0x3F7FF6地址处0 1 x x调用SPI_Boot 函数,利用SPI 口从外部串行EEPROM 中引导0 0 1 1调用SCI_Boot 函数从SCI_A 口进行引导 0 0 1 0 跳转到H0 SARAM 中0x3F8000地址处 0 0 0 1跳转到OTP 中0x3D7800地址处0 0 0 0调用Parallel_Boot 函数从GPIO 口B 进行引导注:1、PU代表该引脚内部被拉高,NO PU则表示该引脚没有被内部拉高。

TMS320F2812开发板 说明书

TMS320F2812开发板 说明书

F2812的外部存储器接口XINTF的详细说明和编程操作请参考《TMS320F28X External Interface(XINTF) Reference Guid》 4. 外部扩ቤተ መጻሕፍቲ ባይዱ的控制/状态寄存器
开发板上配置有HOST USB接口,Ethernet接口,LCD接口,输入输出等控制 寄存器和状态寄存器等,它映射在F2812的Zone0 和 Zone1存储空间中,具体的 定义如下:
功能/名称 扩展的输出接口控制寄存器
寄存器 名称 OutRegs
发光二极管控制寄存器
LedRegs
网卡复位、485接收使能等控制寄存器
Led8Reg
键盘输入寄存器
KeyReg
扩展的输入接口控制寄存器
InReg
扩展的外部可屏蔽中断EXINT1—EXINT5状态寄存器 IFReg1
扩展的外部非屏蔽中断EXNMI1—EXNMI2状态寄存器 IFReg2
2.本板卡的平面图如下: 平面图上的标号和板卡的标号一一对应,详细的说明请看后面章节的说明。
第二章 入门
1. 1特点 采用32位定点DSP TMS320F2812(150M),方便电机控制,电力设备控制及工业控 制等。 片上存储器 FLASH 128K X 16位 SRAM 18K X 16位 BOOT ROM 4K X 16 位 OPT ROM 1K X 16位
IFReg2 LcdDat LcdCom AddrPort DataPort BaseAddr
0X0033FF Zone0 0X0039FE Zone0 0X0039FF Zone0 0x0035FE Zone0 0x0035FF Zone0 0x003700 Zone0
2位只读

TMS320F2812三种运行方式在SRM控制中的应用

TMS320F2812三种运行方式在SRM控制中的应用

TMS320F2812三种运行方式在SRM控制中的应用引言开关磁阻电机(Switched Reluctance Motor,SRM)的控制对实时性的要求很高,它需要不断地判断其转子瞬时位置、相电流等信息,进而控制SRM换相,实现电机运转。

而作为SRM 的控制核心,不仅要实现上述SRM 基本控制功能,而且要实现各种控制策略(包括电流斩波控制、电压PWM 控制、角度位置控制),甚至是很复杂的SRM 优化算法的应用。

因此,SRM 的控制需要一个性能优越的控制核心。

TI 公司推出的TMS320F2812 是一款性能非常优越的数字信号处理器(DSP),最高工作时钟频率可达150MHz。

其外设功能十分强大,存储资源也很丰富:芯片内部集成了18K SARAM(M0、M1 各1K,L0、L1 各4K,H0 为8K),Flash 为128K;且预留了5 个扩展空间,方便用户进行功能扩展。

这就为TMS320F2812 运行方式的多样化提供了条件,同时也是选其作为SRM 控制核心的原因。

1 TMS320F2812 三种运行方式的实现TMS320F2812 代码的开发环境为CCS,其工程一般由头文件、源文件、库文件以及连接命令文件(CMD)四种文件组成。

头文件采用位域结构体进行定义,方便用户操作相关寄存器;源文件保存用户开发时编写的软件代码;库文件为系统文件,无法修改;CMD 文件则是用来分配存储空间的,它告诉链接器将编译器生成的段链接到哪。

所以,要想实现代码运行方式的多样化,必须很好地了解CMD 文件。

CMD 文件包括MEMORY 和SECTIONS。

其中,MEMORY 的作用是指示存储空间的起始位置和长度,而SECTIONS 的作用是将各种初始化段和非初始化段分配到相应的存储空间。

二者都是由编译器自己编译、生成及归类的。

初始化段包括所有的代码、常量及初始化表格等;非初始化段由变量、堆栈等组成。

用户也可以通过#pragma DATA_SECTION 和#pragma CODE_SECTION 指令,将自己定义的数据段或代码段分配到对应的数据空间或程序空间,完成映射。

TMS320F2812内存管理与FLASH引导模式实现

TMS320F2812内存管理与FLASH引导模式实现

TMS320F2812内存管理与FLASH引导模式实现奚刚;吴清华【摘要】通过对TMS320F2812数字信号处理器内存管理与连接命令文件编写的讨论,介绍了在基于TMS320F2812系统开发中FLASH引导模式的实现过程,并针对其中存在的问题提出解决办法.该方法的运用可简化系统的软、硬件设计且具有易于实现的特点,已在一款测试仪的设计中被证明可行且应用效果良好.【期刊名称】《现代电子技术》【年(卷),期】2007(030)022【总页数】3页(P58-60)【关键词】数字信号处理器;连接命令文件;引导模式;测试仪【作者】奚刚;吴清华【作者单位】中国人民解放军海军第702厂,上海,200434;海军大连舰艇学院,辽宁,大连,116018【正文语种】中文【中图分类】TN6091 引言TMS320F2812数字信号处理器是TI公司推出的32位定点DSP控制器,最高工作速度达150 MIPS,是目前控制领域最先进的处理器之一。

TMS320F2812有微计算机(MC)和微处理器(MP)两种工作模式,MC模式下又有多种引导模式。

在基于TMS320F2812的系统开发中,采用FLASH引导模式可有效节约成本并简化设计。

本文在讨论TMS320F2812内存管理与连接命令文件编写的基础上,介绍了基于TMS320F2812系统开发中FLASH引导模式的实现过程与方法。

该方法已被用于一款测试仪器的设计,应用效果良好。

2 存储空间TMS320F2812的CPU不包含任何存储器,而是通过多总线访问芯片内部或外部扩展的存储器。

F2812应用32位数据地址和22位程序地址控制整个存储器及外设,最大可寻址4 G字的数据空间和4 M字的程序空间。

Boot ROM是掩模型片内存储器,在出厂时固化了Boot Loader软件。

Boot Loader软件在MC模式下被执行,并根据引导模式信号确定复位时的引导装载方式。

用户可以选择从内部FLASH存储器引导程序,也可以选择从外部存储器引导程序[2]。

TMS320F2812寄存器定义_完整版_

TMS320F2812寄存器定义_完整版_

TIMER0PRD
TIMER0PRDH
CPU 周期寄存器高位 定时器控制寄存器 TIF.15 (R/W/0)
0xc03 PRDH.(15-0) (R/W/0)| 如上
TIMER0TCR
0xc04 当定时器计数器递减到 0 时,该位将置 1。可以通过软件向 TIF 写 1 将 TIF 位 清 0,但只有计数器递减到 0 时才会将该位置位。 CPU 定时器中断使能 。如果定时器计数器递减到零,TIE 置位,定时器将会向 CPU 产生中断 CPU 定时器仿真模式 当使用高级语言编程调试遇到断点时,FREE 和 SOFT 确定定时器的状态。如 果 FREE 值为 1,在遇到断点时定时器继续运行。在这种情况下 SOFT 位不起 作用。 但是如果 FREE=0, SOFT 将会对操作有影响。 在这种情况下, 如果 SOFT = 0,下次 TIMH:TIM 寄存器递减操作完成后定时器停止工作;如果 SOFT = 1, TIMH:TIM 寄存器递减到 0 后定时器停止工作。 真模式(其它自由运行)。 0 0 1 TIMH:TIM 寄存器递减到 0 后定时器停止 FREE SOFT CPU 定时器仿 0 下次 TIMH:TIM 递减操作完成后定时器停止
001 XTIMCLK=SYSCLKOUT/2 HOLDAS.11 HOLDS.10 HOLD.9 (R/0) (R/0) (R/W/0) XHOLDA 输出信号引脚状态 =0 输出信号为低 XHOLD 输入信号引脚状态 =0 输入信号为低 =1 输出信号为高 =1 输入信号为高
该位接纳外部器件的一个请求,该外部器件驱动 XHOLD 输入信号和 XHOLDA 输出信号。 =0 自动接纳外部设备的一个请求,驱动 XHOLD 输 入信号和 XHOLDA , 输出信号为低电平。=1 不能自动接纳外部设备的 一个请求, 该外部器件驱动 XHOLD 输入信号为低电平 XHOLDA, 输出信 号为高电平。 复位时,该位等于 MP/MC 引脚状态。可以修改。 0 Boot ROM 使能. 1 XINTF7 区使能 Boot ROM 不使能 当前写缓冲区可检测的写人数 一个值 =0 XCLKOUT 被使能 =0 XCLKOUT=XTIMCLK 续执行 可被缓冲 00 没有写缓冲 00 缓冲区空 =1 XCLKOUT 被禁止 =1 XCLKOUT=XTIMCLK/2 01 XINTF 将缓冲一个字节 10 写一次 XINTF7 区不使能 01 当前写缓冲区有
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

F2812上電啟動方式之一——Boot ROM啟動
一:Boot ROM物理結構
◆XMPNMC:在系統上電時通過F2812引腳P17 XMP/nMC輸入的電信號。

MPNMC:XINTCNF2寄存器的MPNMC位。

在系統復位時,XMPNMC輸入信號將被保存在配置寄存器XINTCNF2中的MPNMC位中,在正常工作時,可以人為的修改MPNMC位,來實現對Zone7的訪問。

◆Boot ROM
在F2812的片內有一塊4K*16bits的ROM,地址空間為:0x3F F000~0x3F FFFF。

主要包含以下单元。

Bootloader功能模塊、版本信息&发布日期、復位向量、CPU中斷向量(仅用于测试)、數學公式表。

1)其中前3K*16bits的ROM用于存储数学表格,也留作升级用。

数学表格有助于优化程序执行
性能和节省RAM空间。

Boot ROM中包含的数学表格用于支持TMS320C28x的IQmath Library。

The 28x IQmath Library is a collection of highly optimized and high precision mathematical functions for C/C++ programmers to seamlessly port a floating-point algorithm into fixed-point code on TMS320C28x devices。

這些公式表格主要用於高速和高精度的實時計算,使用這些資源可以使程序達到要求的高速度,比同等程度的ANSIC C語言效率更高。

而且這些這些高效率的算法可以節省用戶更多的設計和調試時間,大大方便了用戶開發設計。

Sin/Cos 函數表:正弦波5/4週期的32位採樣,Q30格式數據,大小1282字。

能夠精確刻畫正弦波形且可用於32位的FFT算法。

規格化轉制函數:Q29格式,大小528字。

初步計算牛頓的轉制法則,轉換速度快。

對規格化轉制的32位採樣,並設置飽和極限。

規格化平方根函數:Q30格式,大小274字。

對平方根進行32位採樣。

規格化反正切函數(Arctan)函數:Q30格式,大小452字。

圓的函數:Q30格式,大小360字。

含有飽和極限的制圓函數。

2)Boot ROM中同時包含了“Boot ROM V ersion and Checksum Information”。

二:CPU 中斷向量表
0x3F F000
0x3F FC00
0x3F FFC0
0x3F FFFF
當VMAP=1,XMPNMC=0時,
復位向量從此處獲得當VMAP=1,MPNMC=0,ENPIE=0時,
其他向量從這裡獲得
如上圖所示,Boot ROM 中的向量表主要包含兩個部分:復位向量 和 CPU 中斷向量。

當VMAP = 1、MPNMC = 0時,系統將從BootROM 的
0x3FFFC0處取得復位向量。

雖然復位後ENPIE 位為0,但是大部分系統都是需要使能外部中斷擴展模塊的,即用戶程序中需要將ENPIE 置 1.由此可見,BootROM 中唯一常用的向量只有復位向量。

而“CPU 中斷向量”儘管指向M0SRAM ,但是僅用於芯片測試的,通常用不到。

狀態位和向量表的映射關係如下表所列。

三:DSP 上電復位啟動過程
從上圖中可以看出,F2812的啟動方式主要分為兩大類:從外部(Zone 7)啟動;從Boot ROM
啟動。

四:Boot ROM啟動詳細過程
Boot ROM功能概覽
◆InitBoot 程序
系統從Boot ROM中地址為0x3F FFC0處取得的復位向量引導程序“跳轉至0x3F FC00”,至此開始調用InitBoot匯編程序。

InitBoot匯編程序功能概述
◆模式選擇功能
模式選擇功能與程序的下載方式緊密相關。

通過配置4個GPIO口的狀態值,可以配置用戶需要的程序下載方式。

所選用的GPIO口都是GPIOF口。

具體的GPIO口的狀態與下載方式的對應關係如下圖所示。

當進行模式選擇時,GPIO口需要根據模式選擇的要求進行拉高或拉低(如何拉高拉低?在校驗儀項目中這幾個GPIO口並沒有從外部進行上拉或下拉),直到模式選擇結束。

另:系統並不是復位後馬上對GPIO口進行採樣鎖存,而是在模式選擇階段的後幾個週期內進行採樣鎖存。

當模式選擇程序判定為SPI,SCI,並口下載程序時,需要禁止看門狗;而在其他幾種啟動方式(不需要下載程序)時,則不需要禁止看門狗。

在模式選擇完畢後,需要使能看門狗。

模式選擇功能概述
Bootloader機制
Bootloader:在DSP系統上電時,DSP將一段存儲在外部的非易失性存儲器中的代碼搬移到內部的高速存儲單元中去執行,即:Bootloader 是一個過程。

(在TMS320F2812中,外部存儲器指通過SCI、SPI、並行接口所連接的存儲器,而片內的RAM、FLASH、ROM甚至XINTF接口擴展的存儲區都認為是片內的存儲單元)。

Bootloader:同時也可以指由TI在生產芯片是預先燒製在DSP片內Boot ROM中,完成上述程序搬移功能的一段程序代碼,即:Bootloader是一段代碼。

Bootloader:提供了許多不同的下載方式,這些不同的下載方式只當系統工作在微機模式下才能有效。

如《模式選擇功能概述》圖所示,系統以FLASH、H0、OTP方式啟動時,並不需要Bootloader 機制。

Bootloader基本發送程序流程
注:不是所有的下載模式都支持16bits,也有可能是8bits的,但是基本流程相同。

“讀入口地址”:程序從外部空間下載到內部存儲空間中的起始地址
返回“入口指針”:返回一條指針語句,指向入口地址。

程序存儲在外部空間(如SPI或SCI)時,沒有“入口地址”的概念
ExitBoot程序
ExitBoot 程序位於Boot ROM中,為匯編程序。

其主要功能是將CPU的所有寄存器恢復到復位時的狀態。

但是有一個寄存器除外,寄存器ST1的OBJMODE位的值不會被改變,該位的功能為配置設備工作在F2812模式下。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
附註:
_c_int00是RTSxxx.lib的入口地址,执行C的初始化工作,包括C程序使用的寄存器的初始化,堆栈初始化,常量和变量的赋初值等等,一切准备工作就绪,就跳转到main函数,开始执行用户程序。

所以完全没有必要去设定_c_int00的地址,只要link对应的rts库就好了。

如果是汇编程序,那么不需要链接RTS库,_c_int00也毫无意义。

_c_int00是C初始化代码的入口地址,在你用C编程的时候,DSP需要执行一段C运行支持库代码以完成C运行环境的初始化,_c_int00就是这段初始化代码的入口地址。

执行完初始化代码后,库代码会自动跳到main函数继续运行。

相关文档
最新文档