加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

TSM320F2812 烧写到Flash中的configuration 问题总结

发布时间:2020-12-15 07:18:13 所属栏目:百科 来源:网络整理
导读:?首先从网上查阅的资料,都说比较困难。实着对我这样的业余2812人员一个大大的下马威
?首先从网上查阅的资料,都说比较困难。实着对我这样的业余2812人员一个大大的下马威啊。没有办法,饭只有一口一口的吃。摸索下来,发现也不是很困难的事情啊(也许在下是夜郎自大,没有遇到稀奇古怪的case)。

????????? place-lower device只是实现了很简单的功能,
?????????? 1,eCan,采用了poll transmit AND interrupt receipt,
?????????? 2,SCI -b,同样采用轮训发送,中断的接收;
?????????? 3,ADC ,只采样了三路,做了很基本的Float到Hexadecimal 的转换
????????? ADC采样数据发送到eCan interface,pc端只有一个eCan <<==>>USB的adapter《==》virual COM。没有软件,没有开发库(由于我们前期只是把功能实现了),连用多少Baud,数据位,停止位是什么都不知道,费劲吧;在这上面,确实花费我不少的功夫,读出USB的original 数据啊,查找其rule(都是凑出来的),然后解码成原始发送的数据,丢到VC的GUI中显示波形。
??????? ok,言归正传,先修改cmd文件,我的cmd文件如下 MYF2812.cmd(CMD文件的格式,讲的地方很多,google一下吧)
MEMORY
{
PAGE 0:??? /* Program Memory */
?????????? /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for da ta allocation */
?? RAML0?????? : origin = 0x008000,length = 0x001000???? /*L0 SRAM 4K */
?? OTP???????? : origin = 0x3D7800,length = 0x000800???? /* on-chip OTP */
?? FLASHJ????? : origin = 0x3D8000,length = 0x002000???? /* on-chip FLASH */
?? FLASHI????? : origin = 0x3DA000,u5b8bu4f53; font-size:16px; line-height:28px">?? FLASHH????? : origin = 0x3DC000,length = 0x004000???? /* on-chip FLASH */
?? FLASHG????? : origin = 0x3E0000,u5b8bu4f53; font-size:16px; line-height:28px">?? FLASHF????? : origin = 0x3E4000,u5b8bu4f53; font-size:16px; line-height:28px">?? FLASHE????? : origin = 0x3E8000,u5b8bu4f53; font-size:16px; line-height:28px">?? FLASHD????? : origin = 0x3EC000,u5b8bu4f53; font-size:16px; line-height:28px">?? FLASHC????? : origin = 0x3F0000,u5b8bu4f53; font-size:16px; line-height:28px">?? FLASHA????? : origin = 0x3F6000,length = 0x001F80???? /* on-chip FLASH */
?? CSM_RSVD??? : origin = 0x3F7F80,length = 0x000076???? /* Part of FLASHA.? Program with all 0x0000 when CSM is in use. */
?? BEGIN?????? : origin = 0x3F7FF6,length = 0x000002???? /* Part of FLASHA.? Used for "boot to Flash" bootloader mode. */
??????
?? ROM???????? : origin = 0x3FF000,length = 0x000FC0???? /* 引导区的ROM available if MP/MCn=0 */
?? RESET?????? : origin = 0x3FFFC0,length = 0x000002???? /* 复位地址BROM矢量 ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */
?? VECTORS???? : origin = 0x3FFFC2,length = 0x00003E???? /*BROM矢量 ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */
PAGE 1 :?? /* Da ta Memory */
?????????? /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
?????????? /* Registers remain on PAGE1????????????????????????????????????????????????? */
?? RAMM0?????? : origin = 0x000000,length = 0x000400???? /* 低地址 数据空间 M0 SRAM */
?? RAMM1?????? : origin = 0x000400,length = 0x000400???? /* 低地址 数据空间 M1 SRAM */
?? RAML1?????? : origin = 0x009000,length = 0x001000???? /* 低地址 数据空间 L1 SRAM */
?? FLASHB????? : origin = 0x3F4000,u5b8bu4f53; font-size:16px; line-height:28px">?? RAMH0?????? : origin = 0x3F8000,length = 0x002000???? /* 高地址 H0 8K空间*/
? /* Peripheral Frame 0:?? */
?? DEV_EMU??? : origin = 0x000880,length = 0x000180
?? FLASH_REGS : origin = 0x000A80,length = 0x000060
?? CSM??????? : origin = 0x000AE0,length = 0x000010
?? XINTF????? : origin = 0x000B20,length = 0x000020
?? CPU_TIMER0 : origin = 0x000C00,length = 0x000008
?? CPU_TIMER1 : origin = 0x000C08,length = 0x000008?????????????????
?? CPU_TIMER2 : origin = 0x000C10,u5b8bu4f53; font-size:16px; line-height:28px">?? PIE_CTRL?? : origin = 0x000CE0,u5b8bu4f53; font-size:16px; line-height:28px">?? PIE_VECT?? : origin = 0x000D00,length = 0x000100
?? /* Peripheral Frame 1:?? */
?? ECANA?????? : origin = 0x006000,length = 0x000040???? /* eCAN control and status registers */?
?? ECANA_LAM?? : origin = 0x006040,length = 0x000040???? /* eCAN local acceptance masks */
?? ECANA_MOTS? : origin = 0x006080,length = 0x000040???? /* eCAN message object time stamps */
?? ECANA_MOTO? : origin = 0x0060C0,length = 0x000040???? /* eCAN object time-out registers */
?? ECANA_MBOX? : origin = 0x006100,length = 0x000100???? /* eCAN mailboxes */
?? /* Peripheral Frame 2:?? */
?? SYSTEM???? : origin = 0x007010,u5b8bu4f53; font-size:16px; line-height:28px">?? SPI_A????? : origin = 0x007040,u5b8bu4f53; font-size:16px; line-height:28px">?? SCI_A????? : origin = 0x007050,u5b8bu4f53; font-size:16px; line-height:28px">?? XINTRUPT?? : origin = 0x007070,u5b8bu4f53; font-size:16px; line-height:28px">?? GPIOMUX??? : origin = 0x0070C0,u5b8bu4f53; font-size:16px; line-height:28px">?? GPIODAT??? : origin = 0x0070E0,u5b8bu4f53; font-size:16px; line-height:28px">?? ADC??????? : origin = 0x007100,u5b8bu4f53; font-size:16px; line-height:28px">?? EV_A?????? : origin = 0x007400,length = 0x000040
?? EV_B?????? : origin = 0x007500,u5b8bu4f53; font-size:16px; line-height:28px">?? SPI_B????? : origin = 0x007740,u5b8bu4f53; font-size:16px; line-height:28px">?? SCI_B????? : origin = 0x007750,u5b8bu4f53; font-size:16px; line-height:28px">?? MCBSP_A??? : origin = 0x007800,u5b8bu4f53; font-size:16px; line-height:28px">?? CSM_PWL???? : origin = 0x3F7FF8,length = 0x000008???? /* Part of FLASHA.? CSM password locations in FLASHA */
}
/* Allocate sections to memory blocks.
?? Note:
???????? codestart user defined section in DSP28_CodeStartBranch.asm used to redirect co de?
?????????????????? execution when booting to flash
???????? ramfuncs? user defined section to store functions that will be copied from Flash into RAM
*/?
?
SECTIONS
?? /* Allocate program areas: */
?? .cinit????????????? : > FLASHA????? PAGE = 0
?? .pinit????????????? : > FLASHA????? PAGE = 0
?? .text?????????????? : > FLASHA????? PAGE = 0
?? codestart?????????? : > BEGIN?????? PAGE = 0
????? ramfuncs??????????? : LOAD = FLASHD,?
???????????????????????? RUN = RAML0,u5b8bu4f53; font-size:16px; line-height:28px">???????????????????????? LOAD_START(_RamfuncsLoadStart),u5b8bu4f53; font-size:16px; line-height:28px">???????????????????????? LOAD_END(_RamfuncsLoadEnd),u5b8bu4f53; font-size:16px; line-height:28px">???????????????????????? RUN_START(_RamfuncsRunStart),u5b8bu4f53; font-size:16px; line-height:28px">???????????????????????? PAGE = 0
?? /* Allocate uninitalized da ta sections: */
?? .stack????????????? : > RAMM0?????? PAGE = 1
?? .ebss?????????????? : > RAML1?????? PAGE = 1
?? .esysmem??????????? : > RAMH0?????? PAGE = 1
?? /* Initalized sections go in Flash */
?? /* For SDFlash to program these,they must be allocated to page 0 */
?? .econst???????????? : > FLASHA????? PAGE = 0
?? .switch???????????? : > FLASHA????? PAGE = 0??????
?? /* Allocate IQ math areas: */
?? IQmath????????????? : > FLASHC????? PAGE = 0????????????????? /* Math Co de */
?? IQmathTables??????? : > ROM???????? PAGE = 0,TYPE = NOLOAD?? /* Math Tables In ROM */
?? /* .reset is a standard section used by the compiler.? It contains the */?
?? /* the address of the start of _c_int00 for C Co de.?? /*
?? /* When using the boot ROM this section and the CPU vector */
?? /* table is not needed.? Thus the default type is set here to? */
?? /* DSECT? */?
?? .reset????????????? : > RESET,????? PAGE = 0,TYPE = DSECT
?? vectors???????????? : > VECTORS???? PAGE = 0,u5b8bu4f53; font-size:16px; line-height:28px">?? PieVectTableFile : > PIE_VECT,?? PAGE = 1
?? /* Allocate Peripheral Frame 0 Register Structures:?? */
?? DevEmuRegsFile????? : > DEV_EMU???? PAGE = 1
?? FlashRegsFile?????? : > FLASH_REGS? PAGE = 1
?? CsmRegsFile???????? : > CSM???????? PAGE = 1
?? XintfRegsFile?????? : > XINTF?????? PAGE = 1
?? CpuTimer0RegsFile?? : > CPU_TIMER0? PAGE = 1??????
?? CpuTimer1RegsFile?? : > CPU_TIMER1? PAGE = 1??????
?? CpuTimer2RegsFile?? : > CPU_TIMER2? PAGE = 1??????
?? PieCtrlRegsFile???? : > PIE_CTRL??? PAGE = 1??????
?? PieVectTable??????? : > PIE_VECT??? PAGE = 1
? /*** Peripheral Frame 1 Register Structures ***/
?? ECanaRegsFile???? : > ECANA,?????? PAGE = 1
?? ECanaLAMRegsFile? : > ECANA_LAM??? PAGE = 1???
?? ECanaMboxesFile?? : > ECANA_MBOX?? PAGE = 1
?? ECanaMOTSRegsFile : > ECANA_MOTS?? PAGE = 1
?? ECanaMOTORegsFile : > ECANA_MOTO?? PAGE = 1
?? /* Allocate Peripheral Frame 1 Register Structures:?? */
?? SysCtrlRegsFile???? : > SYSTEM????? PAGE = 1
?? SpiaRegsFile??????? : > SPI_A?????? PAGE = 1
?? SciaRegsFile??????? : > SCI_A?????? PAGE = 1
?? XIntruptRegsFile??? : > XINTRUPT??? PAGE = 1
?? GpioMuxRegsFile???? : > GPIOMUX???? PAGE = 1
?? GpioDataRegsFile??? : > GPIODAT???? PAGE = 1
?? AdcRegsFile???????? : > ADC???????? PAGE = 1
?? EvaRegsFile???????? : > EV_A??????? PAGE = 1
?? EvbRegsFile???????? : > EV_B??????? PAGE = 1
?? ScibRegsFile??????? : > SCI_B?????? PAGE = 1
?? McbspaRegsFile????? : > MCBSP_A???? PAGE = 1
??? /* CSM Password Locations */
?? CsmPwlFile????????? : > CSM_PWL???? PAGE = 1
,需要注意的是,出现 warning: creating output section XXXXXXXXX without SECTIONS specification 的警告时,标示您的cmd文件中找不到xxxxxx指定的节,必须要加它。
千万不要忘记flash 的初始化,如果能顺利的进入startbranch.asm中的话,http://tiyubisai.com/video_news/news_135564.html ?而在illegalISR中等待,则很可能是initflash函数没有执行,这个函数需要再SRAM中执行,所以要先把它move到RAM中,然后在run,如下
?? MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
????
// Call Flash Initialization to setup flash waitstates
// This function must reside in RAM
?? InitFlash();

?在flash中运行的程序也是可以调试的,这时候的step into (F10),Step over(F11)已经基本不用了。而用assembly step-into 和assembly step-over来替代

http://blog.csdn.net/xiaoxiongli/article/details/49619475

http://blog.csdn.net/xiaoxiongli/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读