问题如下: 疑问一:仿真调试下载程序或把程序已烧写至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处呢? 解答如下:(MP和MC模式下的读取方式!!) 1:上电运行时根据MP/MC引脚的状态决定是从片外的3fffc0处读取复位向量或者时从片内的rom的3fffc0处读取复位向量。MC方式下从片内读取,MP方式下从片外读取。 lhfnjj 2005-12-6 14:29 在第5步中,为选择片内FLASH,则使SCITXA为高电平。如果SCITXA还用作串口通讯,那怎么办? haomaru 2005-12-7 08:13 SCITXA引脚有内部上拉,所以只要没有强制下拉的话,DSP检测的都是高电平。 SCITXA不用在外部上拉。不能直接接到高电平上。
我自己理解的是,即 : .reset段表示跳转到_c_int00处的一个程序段 即系统复位以后首先跳转到复位向量3fffc0处,然后从此处跳转到初始化intboot (3ffc00)处,执行完初始化BOOT.并根据GPIOF口选择启动模式,例如选择从FLASH启动,则退出初始化BOOT程序时,程序则会跳到0x3F7FF6处执行,此处距0x3F7FF8(密码设置区)只有两个字的距离,故在此也就只能放一个跳转指令,即跳转到C语言程序入口,即_c_int00处,个人认为当CMD文件将.reset段配置到0x3F7FF6时,起到的作用就是:即在0x3F7FF6处使程序跳转到_c_int00处。 MEMORY 。。。 。。。 }
同理当仿真模式时,初始化BOOT时完成时,程序会跳到H0RAM起始地址0x3F8000处,则此时按如下方式配置CMD文件:即把跳转到_c_int00处的程序段.reset配置到0x3F8000。 MEMORY 。。。 } SECTIONS 。。。 } |
|
来自: lixinxinjn > 《dsp最该懂的问题》