BOOT说明:
Bootloader :20K 0x00000--0x05000
APP: 100K 0x05000--0x1E000
APP_EEPROM数据:6K 0x1E000--0x1F800
Bootloader数据:2K 0x1F800--0x20000
APP说明:
LIN主机ID:0x0A,当接收到主机发出的数据后,LED取反
LIN从机ID:0x20。主机可以读取该ID,验证APP是否正常烧录。
诊断ID:0x3C
诊断ID:0x3D
BOOT软件复位ID:0x3E,主机通过发送复位指令,使MCU复位后进入BOOT程序。
APP程序需添加如下代码:
if((Slave_Filter_Channel-1)==4) //接收 BOOT软件复位 0x3E
{
if((Slave_Channel_Data[(Slave_Filter_Channel-1)][6] == 0x67)
&&(Slave_Channel_Data[(Slave_Filter_Channel-1)][7] == 0x6F)
&&(Slave_Channel_Data[(Slave_Filter_Channel-1)][8] == 0x72)
&&(Slave_Channel_Data[(Slave_Filter_Channel-1)][9] == 0x65)
&&(Slave_Channel_Data[(Slave_Filter_Channel-1)][10] == 0x73)
&&(Slave_Channel_Data[(Slave_Filter_Channel-1)][11] == 0x65)
&&(Slave_Channel_Data[(Slave_Filter_Channel-1)][12] == 0x74)
&&(Slave_Channel_Data[(Slave_Filter_Channel-1)][13] == 0x00))
{
RX_3E_cnt=(RX_3E_cnt+1); //升级APP指令 计数变量加1
if(RX_3E_cnt>=3)
{
RX_3E_cnt=0; //清0 升级APP指令 计数变量
DisableInterrupts //关全局中断
//TIMER_DeInit(); //关闭所有定时器
Disable_UART_LIN(); //禁用 软件LIN
mdelay(3); //待编程稳定 EFlash_Erase(0x1F800); //擦除 Bootloader 数据
mdelay(3); //待编程稳定
EnableInterrupts //最后 开全局中断
NVIC_SystemReset(); //执行软件复位语句 }
else
{
RX_3E_cnt=0; //清0 升级APP指令 计数变量
}
}
}
第一步:
先将Bootloader 程序烧录到MCU中。使用JLink烧录,这个过于简单,这里不再说明。
第二步。烧录APP程序。
第三步:
验证是否烧录成功?