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 ?? 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 ?????????? /* 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 ?????????????????? 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 ?? .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 ?? 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 ?? /* 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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |