利用GEL语言对DSP初始化设置

[复制链接]
2816|1
 楼主| guoxuekun 发表于 2008-8-20 17:55 | 显示全部楼层 |阅读模式
<br />GEL&nbsp;文件的功能同emuinit.cmd&nbsp;的功能基本相同,用于初始化DSP。但它的功能比emuinit<br />的功能有所增强,GEL&nbsp;在CCS&nbsp;下有一个菜单,可以根据DSP&nbsp;的对象不同,设置不同的初始<br />化程序。以TMS320LF2407&nbsp;为例:<br />#define&nbsp;SCSR1&nbsp;0x7018&nbsp;;定义scsr1&nbsp;寄存器<br />#define&nbsp;SCSR2&nbsp;0X7019&nbsp;;定义scsr2&nbsp;寄存器&nbsp;<br /><br />#defineWDKEY&nbsp;0x7025&nbsp;;定义wdkey&nbsp;寄存器<br />#defineWDNTR&nbsp;0x7029&nbsp;;定义wdntr&nbsp;寄存器<br />StartUp()&nbsp;;&nbsp;开始函数<br />{<br />GEL_MapReset();&nbsp;;&nbsp;存储空间复位GEL_MapAdd(0x0000,0,0x7fff,1,1);&nbsp;定义程序空间从0000<br />-7fff&nbsp;可读写<br />GEL_MapAdd(0x8000,0,0x7000,1,1);&nbsp;定义程序空间从8000-f000&nbsp;可读写<br />GEL_MapAdd(0x0000,1,0x10000,1,1);&nbsp;定义数据空间从0000-10000&nbsp;可读写<br />GEL_MapAdd(0xffff,2,1,1,1);&nbsp;定义i/o&nbsp;空间0xffff&nbsp;可读写<br />GEL_MapOn();&nbsp;存储空间打开<br />GEL_MemoryFill(0xffff,2,1,0x40);&nbsp;在i/o&nbsp;空间添入数值40h<br />*(int&nbsp;*)SCSR1=0x0200;&nbsp;给scsr1&nbsp;寄存器赋值<br />*(int&nbsp;*)SCSR2=0x000C;&nbsp;给scsr2&nbsp;寄存器赋值,在这里可以进行mp/mc&nbsp;方式的转换<br />*(int&nbsp;*)WDNTR=0x006f;&nbsp;给wdntr&nbsp;寄存器赋值<br />*(int&nbsp;*)WDKEY=0x055;&nbsp;给wdkey&nbsp;寄存器赋值<br />*(int&nbsp;*)WDKEY=0x0AA;&nbsp;给wdkey&nbsp;寄存器赋值<br /><br />}<br /><br />GEL文件只是在仿真器和目标系统上电的时候起到初始化dsp的作用<br /><br />在上电后再改变GEL文件将不会对DSP产生影响<br /><br />除非断电后再上电<br /><br />贴上DSP5416的GEL文件<br /><br />/*&nbsp;set&nbsp;PMST&nbsp;to:&nbsp;MP&nbsp;=&nbsp;&nbsp;OVLY&nbsp;=&nbsp;1;&nbsp;DROM&nbsp;off,&nbsp;CLKOUT&nbsp;on&nbsp;*/<br />#define&nbsp;PMST_VAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0ffe0u&nbsp;&nbsp;<br /><br />/*&nbsp;set&nbsp;wait-state&nbsp;control&nbsp;reg&nbsp;for:&nbsp;2&nbsp;w/s&nbsp;or&nbsp;more&nbsp;on&nbsp;i/o;&nbsp;one&nbsp;for&nbsp;ext&nbsp;memory&nbsp;*/<br />#define&nbsp;SWWSR_VAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x2009u<br /><br />/*&nbsp;set&nbsp;external-banks&nbsp;switch&nbsp;control&nbsp;for:&nbsp;no&nbsp;bank&nbsp;switching;&nbsp;BH&nbsp;set&nbsp;*/<br />#define&nbsp;BSCR_VAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x02u<br /><br />/*&nbsp;Set&nbsp;Default&nbsp;Reset&nbsp;Initialization&nbsp;Value&nbsp;*/<br />#define&nbsp;&nbsp;&nbsp;&nbsp;ZEROS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000u<br /><br />这一部分是对寄存器初始化<br /><br />/*&nbsp;Set&nbsp;Peripheral&nbsp;Control&nbsp;Register&nbsp;Addresses&nbsp;for&nbsp;DEV_RESET&nbsp;*/<br />#define&nbsp;DMPREC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0054u<br />#define&nbsp;DMSA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0055u<br />#define&nbsp;DMSDI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0056u<br /><br />#define&nbsp;DMA_CH0_DMFSC_SUB_ADDR&nbsp;&nbsp;0x0003u<br />#define&nbsp;DMA_CH1_DMFSC_SUB_ADDR&nbsp;&nbsp;0x0008u<br />#define&nbsp;DMA_CH2_DMFSC_SUB_ADDR&nbsp;&nbsp;0x000Du<br />#define&nbsp;DMA_CH3_DMFSC_SUB_ADDR&nbsp;&nbsp;0x0012u<br />#define&nbsp;DMA_CH4_DMFSC_SUB_ADDR&nbsp;&nbsp;0x0017u<br />#define&nbsp;DMA_CH5_DMFSC_SUB_ADDR&nbsp;&nbsp;0x001cu<br /><br />#define&nbsp;MCBSP0_SPSA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0038u<br />#define&nbsp;MCBSP0_SPSD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0039u<br />#define&nbsp;MCBSP1_SPSA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0048u<br />#define&nbsp;MCBSP1_SPSD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0049u<br /><br />#define&nbsp;MCBSP2_SPSA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0034u<br />#define&nbsp;MCBSP2_SPSD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0035u<br /><br />#define&nbsp;MCBSP_SPCR1_SUB_ADDR&nbsp;&nbsp;&nbsp;0x0000u<br />#define&nbsp;MCBSP_SPCR2_SUB_ADDR&nbsp;&nbsp;&nbsp;0x0001u<br />#define&nbsp;MCBSP_SRGR1_SUB_ADDR&nbsp;&nbsp;&nbsp;0x0006u<br />#define&nbsp;MCBSP_SRGR2_SUB_ADDR&nbsp;&nbsp;&nbsp;0x0007u<br />#define&nbsp;MCBSP_MCR1_SUB_ADDR&nbsp;&nbsp;&nbsp;&nbsp;0x0008u<br />#define&nbsp;MCBSP_MCR2_SUB_ADDR&nbsp;&nbsp;&nbsp;&nbsp;0x0009u<br />#define&nbsp;SRGR1_INIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0001u<br /><br />#define&nbsp;PRD0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0025u<br />#define&nbsp;TCR0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0026u<br /><br />#define&nbsp;PRD1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0031u<br />#define&nbsp;TCR1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0032u<br /><br />#define&nbsp;TIMER_STOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0010u<br />#define&nbsp;TIMER_RESET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0020u<br />#define&nbsp;PRD_DEFAULT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xFFFFu&nbsp;&nbsp;&nbsp;<br /><br />#define&nbsp;GPIOCR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0010u<br /><br />StartUp()<br />{<br />C5416_Init();&nbsp;<br /><br />GEL_TextOut(&quot;Gel&nbsp;StartUp&nbsp;complete.\n&quot;);<br />}<br /><br /><br />menuitem&nbsp;&quot;C5416_Configuration&quot;;<br />hotmenu&nbsp;CPU_Reset()<br />{<br />GEL_Reset();<br />PMST&nbsp;=&nbsp;PMST_VAL;<br /><br />/*&nbsp;don't&nbsp;change&nbsp;the&nbsp;wait&nbsp;states,&nbsp;let&nbsp;the&nbsp;application&nbsp;code&nbsp;handle&nbsp;it&nbsp;*/<br />/*&nbsp;note:&nbsp;at&nbsp;power&nbsp;up&nbsp;all&nbsp;wait&nbsp;states&nbsp;will&nbsp;be&nbsp;the&nbsp;maximum&nbsp;(7)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;SWWSR&nbsp;=&nbsp;SWWSR_VAL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br /><br />BSCR&nbsp;=&nbsp;BSCR_VAL;<br /><br />GEL_TextOut(&quot;CPU&nbsp;Reset&nbsp;Complete.\n&quot;);<br />}<br /><br />/*&nbsp;All&nbsp;memory&nbsp;maps&nbsp;are&nbsp;based&nbsp;on&nbsp;the&nbsp;PMST&nbsp;value&nbsp;of&nbsp;0xFFE8&nbsp;*/<br /><br />hotmenu&nbsp;C5416_Init()<br />{<br />GEL_Reset();<br />PMST&nbsp;=&nbsp;PMST_VAL;<br /><br />/*&nbsp;don't&nbsp;change&nbsp;the&nbsp;wait&nbsp;states,&nbsp;let&nbsp;the&nbsp;application&nbsp;code&nbsp;handle&nbsp;it&nbsp;*/<br />/*&nbsp;note:&nbsp;at&nbsp;power&nbsp;up&nbsp;all&nbsp;wait&nbsp;states&nbsp;will&nbsp;be&nbsp;the&nbsp;maximum&nbsp;(7)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*&nbsp;SWWSR&nbsp;=&nbsp;SWWSR_VAL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br /><br />BSCR&nbsp;=&nbsp;BSCR_VAL;<br /><br />C5416_Periph_Reset();<br /><br />GEL_XMDef(0,0x1eu,1,0x8000u,0x7f);<br />GEL_XMOn();<br />GEL_MapOn();<br />GEL_MapReset();<br /><br />GEL_MapAdd(0x80u,0,0x7F80u,1,1);&nbsp;/*&nbsp;DARAM&nbsp;*/<br />GEL_MapAdd(0x08000u,0,0x8000u,1,1);&nbsp;/*&nbsp;External&nbsp;*/<br />GEL_MapAdd(0x18000u,0,0x8000u,1,1);&nbsp;/*&nbsp;DARAM&nbsp;*/<br />GEL_MapAdd(0x18000u,0,0x8000u,1,1);&nbsp;/*&nbsp;SARAM&nbsp;*/<br />GEL_MapAdd(0x28000u,0,0x8000u,1,1);&nbsp;/*&nbsp;SARAM&nbsp;*/<br /><br />GEL_MapAdd(0x0u,1,0x60u,1,1);&nbsp;&nbsp;/*&nbsp;MMRs&nbsp;*/<br />GEL_MapAdd(0x60u,1,0x7FA0u,1,1);&nbsp;/*&nbsp;DARAM&nbsp;*/<br />GEL_MapAdd(0x08000u,1,0x8000u,1,1);&nbsp;/*&nbsp;DARAM&nbsp;*/<br /><br />GEL_TextOut(&quot;C5416_Init&nbsp;Complete.\n&quot;);&nbsp;}<br /><br /><br />/*&nbsp;******************************&nbsp;*/<br /><br />C5416_Periph_Reset()<br />{<br />IFR&nbsp;=&nbsp;0xFFFFu;&nbsp;&nbsp;<br />IFR&nbsp;=&nbsp;0x0000u;&nbsp;&nbsp;<br /><br />DMA_Reset();<br />MCBSP0_Reset();<br />MCBSP1_Reset();<br />MCBSP2_Reset();<br />TIMER0_Reset();<br />GPIO_Reset();<br />}<br /><br />DMA_Reset()<br /><br />MCBSP0_Reset()<br /><br />MCBSP1_Reset()<br /><br />MCBSP2_Reset()<br /><br />TIMER0_Reset()<br /><br />GPIO_Reset()<br /><br />在上面的各个初始化函数中,多半是把0值付给寄存器。当然这些初始化值如果用户不使用的话必须在主程序中做修改。<br /><br />所以加载了GEL文件以后,并不一定所有的寄存器都是复位值,主程序中没有赋值的寄存器并不一定就是它的上电复位值,因为加上了仿真器,加载了GEL文件,起到了作用。<br /><br />程序员一定要好好注意。<br />本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=9003<br /><br /><br /><br />
hotpower 发表于 2008-8-20 21:40 | 显示全部楼层

不错~~~GEL语言在DSP中很有用

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部