mc9s08dz60添加BootLoader实现CANboot下载更新功能

发布者:丝语轻风最新更新时间:2021-04-19 来源: eefocus关键字:mc9s08dz60  BootLoader 手机看文章 扫描二维码
随时随地手机看文章

 为了以后项目升级方便的需要,在原始程序添加CanBoot下载功能;

1、 把Bootloader安排在高地址区间 (比如0xEE00~0xFFAF),然后固化NVC寄存器的值,将这块Flash区域保护起来;

2、中断向量的搬移,将原来0xFFC0所对应的中断向量搬移到0xEDC0;

Bootloader的代码无非就是启动、查找用户程序入口,跳转至用户程序,从用户程序跳转至bootloader,与上位机通信(UART或者CAN),擦除Flash,写入Flash等功能;


具体操作就是修改两部分;


1、修改Project.prm文件,重新划分分区。我划分的分区如下所示:


SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */

    Z_RAM                    =  READ_WRITE   0x0080 TO 0x00FF;

    RAM                      =  READ_WRITE   0x0100 TO 0x107F;

    APP_ROM_ENTRY            =  READ_ONLY    0xEDB0 TO 0xEDBF; 

    APP_ROM                  =  READ_ONLY    0x1900 TO 0xEB00; 

    DATA_ROM                 =  READ_ONLY    0xEB00 TO 0xEDAF;   

    APP_ROM1                 =  READ_ONLY    0x1080 TO 0x13FF;   

    BOOT_ROM                 =  READ_ONLY    0xEE00 TO 0xF8FF;

    BOOT_ROM1                =  READ_ONLY    0xF900 TO 0xFFAD;

    EEPROM                   =  READ_ONLY    0x1400 TO 0x17FF;

/*  INTVECTS                 =  READ_ONLY    0xFFC0 TO 0xFFFF; Reserved for Interrupt Vectors */

/*  INTVECTS_REL             =  READ_ONLY    0xEDC0 TO 0xEDFF; Reserved for Relocated Interrupt Vectors */


END


2、修改中断向量表,如下所示:


#include "Interrupt.h"

#if (0 == DEBUG_ON)

const char NVPROT_INIT@0xFFBD = 0xFC; //4.5K保护0xEE00~0xFFFF

const char  NVOPT_INIT@0xFFBF = 0x20; //中断向量重映射

#endif

extern void _Startup(void);

#pragma CODE_SEG APP_ENTRY

void AppEntry(void)

{

    _Startup();

}

#pragma CODE_SEG DEFAULT


extern void ISR_RTC(void);

extern void ISR_Key(void);


void DummyISR(void)

{

    for(;;);

}



/*** 重定向的中断向量表 ***/

#if (0 == DEBUG_ON)

const void (* const _VectRedirection[])( ) @0xEDC0 =

#else

const void (* const _VectRedirection[])( ) @0xFFC0 =

#endif

{

    DummyISR,           // 0xFFC0:ACMP2

    DummyISR,           // 0xFFC2:ACMP1

    DummyISR,           // 0xFFC4:MSCAN   Transmit

    DummyISR,          // 0xFFC6:MSCAN    Receive

    DummyISR,           // 0xFFC8:MSCAN    Errors

    DummyISR,           // 0xFFCA:MSCAN    Wake Up

    ISR_RTC,            // 0xFFCC:RTC

    DummyISR,           // 0xFFCE:IIC

    DummyISR,           // 0xFFD0:ADC Conversion

    ISR_Key,           // 0xFFD2:Port A,B,D Pin

    DummyISR,           // 0xFFD4:SCI2 Transmit

    DummyISR,           // 0xFFD6:SCI2 Receive

    DummyISR,           // 0xFFD8:SCI2 Error

    DummyISR,         // 0xFFDA:SCI1 Transmit

    DummyISR,           // 0xFFDC:SCI1 Receive

    DummyISR,           // 0xFFDE:SCI1 Error

    DummyISR,           // 0xFFE0:SPI

    DummyISR,           // 0xFFE2:TPM2 Overflow

    DummyISR,           // 0xFFE4:TPM2 Channel 1

    DummyISR,           // 0xFFE6:TPM2 Channel 0

    DummyISR,           // 0xFFE8:TPM1 Overflow

    DummyISR,           // 0xFFEA:TPM1 Channel 5

    DummyISR,           // 0xFFEC:TPM1 Channel 4

    DummyISR,           // 0xFFEE:TPM1 Channel 3

    DummyISR,           // 0xFFF0:TPM1 Channel 2

    DummyISR,           // 0xFFF2:TPM1 Channel 1

    DummyISR,           // 0xFFF4:TPM1 Channel 0

    DummyISR,           // 0xFFF6:MCG    Loss of Lock

    DummyISR,           // 0xFFF8:Low Voltage Detect

    DummyISR,           // 0xFFFA:IRQ

    DummyISR,           // 0xFFFC:SWI

//  _Startup,           // 0xFFFE:Reset  Cannot be redirected


};


下载并修改BootLoader,此处注意BootLoader下载程序时首先要对dz60进行复位,要根据dz60的供电电源电压设置复位电压,否则可能导致单片机一直处于复位状态。


关键字:mc9s08dz60  BootLoader 引用地址:mc9s08dz60添加BootLoader实现CANboot下载更新功能

上一篇:Nordic52810入门篇 - 实时时钟(RTC)
下一篇:NRF52840学习历程(六)RTC 实时计数器(滴答定时器)

推荐阅读最新更新时间:2024-11-04 18:50

【飞思卡尔 MC9S12】BootLoader 下位机
上一篇:【飞思卡尔 MC9S12】内部D-Flash模拟EEPROM 本篇讲述BootLoader下位机的开发。 刚到新公司第三天就接了一个项目,搞到现在才局部完成,更新比较慢了。 先上传源码比较实际,再介绍基本功能。 源码地址:https://download.csdn.net/download/u010875635/11692136 实际上搞定CAN通信和Flash读写,Bootloader下位机就没什么问题了。 注意一下Bootloader与App的分区划分。 Bootloader与App分别占用2个非分页区。 Bootloader: 0xC000-0xFFFF(实际到0xF7FF,保留一个s
[单片机]
【飞思卡尔 MC9S12】<font color='red'>BootLoader</font> 下位机
汽车发动机转速信号模拟器设计
引言 随着发动机电控系统的结构和控制策略日趋复杂,电控系统的研发工作难度以及实验工作量大大增加,成本也大幅度提高。V型开发模式已经成为发动机ECU(Electronic Control Unit,电子控制单元)开发流程的主流,其中的硬件在环仿真中,为了配合ECU软件的开发,需要模拟发动机的转速信号来验证软件算法的正确性。 目前已经有很多研发人员已经做了这方面的研究。例如,清华大学的章健勇开发的发动机转速模拟器系统利用数字端口实现了大转速范围内发动机转速霍尔信号的模拟;北京理工大学的王宇明设计的便携式发动机工况信号模拟器,能够比较真实地模拟发动机传感器信号的类型、形态,基于模型的信号产生方法能够较好地反映发动机工况变化中传感器
[单片机]
汽车发动机转速信号模拟器设计
三星Galaxy Z Fold3 5G取消限制,解锁bootloader将不禁用相机
此前据 XDA 报道,三星 Galaxy Z Fold3 5G 在解锁 bootloader 后,会禁止用户使用相机。   根据最新的测试,三星已取消了这一限制,当用户升级到 One UI 4 Beta2 测试版(ZUKA)后,解锁 bootloader 将不再影响相机使用。   不过,这一改变似乎只在 Galaxy Z Fold3 5G(型号 F926B 和 F926N)的某些地区版本中实施,因此大家在尝试之前最好看看过往人的分享,不要做“第一只小白鼠”。   IT之家了解到,这一限制影响的是三星设备的安全套件 Knox,用户对设备进行任何修改都会使其失效,同时会影响保修,并永久禁用 Samsung Pay 。  
[手机便携]
PIC24 通过USB在线升级 -- USB CDC bootloader
今年国庆完成了4个bootloader,前面介绍了2个,都是PIC32MZ的USB bootloader, 接着介绍2个PIC24 的USB bootloader, 首先是PIC24 USB CDC bootloader。PIC24 USB CDC bootloader 是我开发给我的PIC24FJ256GB106硬件板子的。 开发环境 1. IDE: MPLABX v4.01 2. Compiler: XC16, v1.11 3. Library&Example: c:/microchip_solutions_v2013-06-15/USB/Device-CDC-Basic Demo 这个PIC24 CDC
[单片机]
pic18单片机在BootLoader中的应用
  引 言   在PIC系列单片机中,只有PIC18系列和PIC16F87X系列的单片机才有IAP功能,才能够使用BootLoader功能。下面只介绍PIC18的BootLoader,PIC16F87X的BootLoader与它类似。   1 BootLoader程序的工作原理   BootLoader是一段引导程序,在单片机上电/复位后在用户程序之前先运行。运行后判断当前是否需要进入升级状态。如果不需要升级,就直接运行Flash中原有的程序;如果需要升级,首先擦除旧的程序,然后从串口接收用户程序,同时写入Flash中。接收数据时,需要进行校验,保证接收到的数据是正确的,避免将错误的程序写入到芯片中。   PIC18单片
[单片机]
pic18单片机在<font color='red'>BootLoader</font>中的应用
Linux系统下的Bootloader详解
对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程。嵌入式Linux系统同样离不开引导程序,这个引导程序就叫作Bootloader。在这里我们就为大家详细介绍Bootloader,Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。 对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系
[单片机]
基于Intel PXA270的Windows CE5.0下Boot Loader实现
Windows CE.NET是微软公司向嵌入式领域推出的一款操作系统,被广泛应用于平板电脑、数码相机、彩屏手机、PDA等许多产品当中。 Windows CE的开发过程可以分为:0AL(OEM Abstraction Layer)、驱动、应用程序开发三个步骤。其中,0AL开发是Windows CE开发过程中最基本的一步,而Boot Loader设计在0AL开发中又具有极为关键的作用。因此,本文以Windows CE 5.0在Xscale PXA270处理器上的Ethernet Boot Loader的设计和实现为例,对Boot Loader的实现进行阐述,并分析Boot Loader的架构、启动控制流程和配置安装。 对于Wi
[嵌入式]
基于ARM核的Bootloader代码的分析与设计
一 . 引言: 对于 PC 机,其开机后的初始化处理器配置、硬件初始化等操作是由 BIOS ( Basic Input /Output System )完成的,但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置 BIOS ,因此我们必须自行编写完成这些工作的程序,这就是所需要的开机程序。而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序,启动时用于完成初始化操作的这段代码被称为 Bootloader 程序,因此整个系统的加载启动任务就完全由 Bootloader 来完成。简单地说,通过这段程序,可以初始化硬件设备、建立内存空间的映射图(有的 CPU 没有内存映射功能如 S3C44B0 ),从而将系统的软硬件环
[单片机]
基于ARM核的<font color='red'>Bootloader</font>代码的分析与设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved