[讨论] 如何在规定的flash区间写入规定的bootload代码?

lum   2015-9-21 10:11 楼主
我想在规定的flash区间写入规定的bootload代码。
怎么写入?
例如:

void main(void)
{
  ubyte i,j=0;
  
  Disable_Interrupt_WDT();
  
  Main_Clock_Init();
  
  GPIO_Init();
  
  Bootload();
  
  SDK_Parameters_Init();
  
#ifdef Manchester_Encoding_Test
  sri10_rfsm();
#endif
  
  Wait_Power_Normal();  
  
  Calibrate_Power();
  
  Variable_Init();
  
  RTC_Init();
  
  Simulate_SPI_Init();
}
这段代码,我想将开头的
Disable_Interrupt_WDT();
  
  Main_Clock_Init();
  
  GPIO_Init();
  
  Bootload();
这部分代码写入到5C00~(6C00-1)地址区?
怎么写入?
求大家支招。。。


回复评论 (7)

烧录器写入,写入的区域可设
你的Bootload不是写在flash开头?



初学者,请多多指教:)
点赞  2015-9-21 10:17
我不是所有的代码都写入到这个地方。
因为代码比较多,写不完。


如果我单独写bootload代码的话,就可以:
void main(void)
{
  __disable_interrupt();
  //关闭WDT
  WDTCTL = WDTPW + WDTHOLD;
  
  main_clock_init();
  port_init();
  //延时
  delayms(0x500);

  for(;;)
  {
    BootLoader();
  }
}



但是我加了应用代码就多出了。。。


//关于BOOTLOADER FLASH空间的定义
//FF80H~FFFFH为BOOTLOADER的中断向量区
//5C00~(6C00-1)为BOOTLOADER的程序区

//关于用户程序 FLASH空间的定义
//FC80H~FCFFH为用户程序的中断向量区
//6C00H~FEFFH为用户程序的程序区
//45BFFH~40000H为用户程序的程序区
//45BFFH~40000H为用户程序的程序区
//1FFFFH~10000H为用户程序的程序区
//2FFFFH~20000H为用户程序的程序区
//3FFFFH~30000H为用户程序的程序区



点赞  2015-9-21 10:20

4楼 lum 

我在加了应用代码部分后,当要更新软件版本时,要擦除应用代码区,发现老时会将bootload代码一起擦除。

单独写的话就可以

我现在就是想将应用代码和bootload代码一起


点赞  2015-9-21 10:34
你怎么更新软件版本的,远程升级吗?


初学者,请多多指教:)
点赞  2015-9-21 10:40

6楼 lum 

是通过ftp服务器下载到eeprom内,在从eeprom写入到flash


点赞  2015-9-21 10:43
那就是擦除的问题,把bootload也擦掉了


初学者,请多多指教:)
点赞  2015-9-21 10:51
在分散加载文件里改main地址?
下载选不要擦除的
点赞  2015-9-21 11:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复