MC9S12XS128MAL Bootloader(1)

发布者:shengju最新更新时间:2021-07-22 来源: eefocus关键字:Bootloader 手机看文章 扫描二维码
随时随地手机看文章

首先BootLoader和用户程序是两个工程,两个工程代码通过修改PRM文件存储在不同的flash中,在通过PC指针的跳转实现两个工程的切换;


BootLoader程序


关中断

初始化时钟;

初始化CAN

初始化flash读写;

开中断,开CAN中断;

计时判断CAN是否收到bootloader开始报文;

时间到后没收到跳转到原用户程序启动向量;

收到后,开始读写flash,读写完后,PC指针跳转到用户程序地址(EEFE);

 

其中flash程序在读写flash时,要把代码copy到RAM中,因读写时不能再读flash中的代码


extern char __SEG_START_RAM_CODE[] ;


extern char __SEG_END_RAM_CODE[];


extern char __SEG_SIZE_RAM_CODE ;


void CopyCodeToRAM(void)


{

  memcpy((unsigned char *)0x3E00, (unsigned char *) __SEG_START_RAM_CODE,(unsigned int)  __SEG_SIZE_RAM_CODE);


}  //要写入的RAM地址0x3E00;    RAM_CODE是在prm中定义的需要复制到ram中的地址区域;


写完后再使用下代码跳转到EEFE;


_asm ldx $eefe;


_asm jmp 0,x;


Prm文件中修改如下,是代码压入指定位置:


ROM_F000      = READ_ONLY   DATA_NEAR  IBCC_NEAR 0XF000 TO   0xF5FF;


ROM_FB00      = READ_ONLY   DATA_NEAR  IBCC_NEAR 0XF600 TO   0xFDFF;


PLACEMENT


      _PRESTART,           


      STARTUP,                /* startup data structures */


      ROM_VAR,                /* constant variables */


      STRINGS,                /* string literals */


      VIRTUAL_TABLE_SEGMENT,  /* C++ virtual table segment */


      NON_BANKED,             /* runtime routines which must not be banked */


      COPY         


                            INTO  ROM_F000/*, ROM_4000*/;


 


      DEFAULT_ROM       INTO    ROM_FB00;  //  

关键字:Bootloader 引用地址:MC9S12XS128MAL Bootloader(1)

上一篇:飞思卡尔MC9S12XS TIME输入捕获
下一篇:mc9s12 c语言,飞思卡尔mc9s12的prm文件详解之二

推荐阅读最新更新时间:2024-11-02 15:14

STM32-跑马灯实验代码分析
工程建立的主要步骤 1.新建3个文件夹:USER、SYSTEM、HARDWARE 2.新建led.c、led.h和test.c 3.在Target目录树上右击Manage Component,新建USER、SYSTEM、HARDWARE,并添加相关C文件(具体见前文MDK使用方法与技巧),跟前面一样HARDWARE组添加led.c文件。 4.在Options for Target ‘Target 1’对话框C/C++选项卡中Include Pathes里添加头文件路径。(这个不可少,否则编译出错,见前文MDK使用方法与技巧,led.h文件不可漏掉) 5.使用SWD方式下载,具体见MDK使用方法与技巧,注意res
[单片机]
自制bootloader 之 文本代码
想移植uboot1.4到板子上,搞了半天没成功,决心弄明白uboot原理,大概流程,所以决定写个简单的bootloader来理顺一下应该做些什么,怎么做~~~~ 首先应该描述一下该bootloader的基本功能:板子上电后能进行LED流水灯(万能的流水灯啊 )。实现该功能分两步:第一步,真正的bootloader功能,即实现硬件的初始化以及将内核程序(LED流水灯)从ROM(flash)搬移到RAM(sdram);第二步,内核程序的实现 第一步也可分两段:1,板子硬件初始化;2,内核程序的搬移。代码文件:boot.s 板子硬件初始化:1. 异常向量初始化        2. 初始化CPSR,包括关闭中断
[单片机]
自制<font color='red'>bootloader</font> 之 文本代码
STM32 BootLoader跳转APP跑飞 可能是因为找不到某些中断函数入口
在做嵌入式产品时,有时为方便更新设备程序(如远程更新或者只更新模块程序等原因),就要用到bootloader对设备进行必要的初始化,引导下载APP等。 STM官网下载的bootloader程序中并没有用到定时器等,很可能遇不到下面的问题。但是小猿猴如我等,会迫不及待的对其进行“魔改”,再经过二手三手,再加上运气不好,下面的问题就很容易暴露出来了: 现象: bootloader 下载并跳转某些 app 程序时,app运行正常; 对于某些app来说,却根本跑不起来; app本身运行没有问题; bootlaoder+app运行,J-Link在线仿真时,发现报硬件错误; 原因之一: bootloader 中开启了某些中断(并编写了中断
[单片机]
基于S3C2440的WinCE Bootloader的分析与设计
摘要:针对BootLoader严格依赖于具体的嵌入式硬件系统,并且从头开发一套适合特定硬件系统的BootLoader又相当复杂这一问题,分析设计了基于S3C2440的WinCE操作系统的引导程序的实现方法。结合飞凌公司的嵌入式产品TE2440的硬件特性,对BootLoader启动的两个阶段和配置文件进行了详细的分析和设计,最终实现了系统引导加载程序的构建。为项目后续的开发奠定了良好的基础。 关键词:嵌入式系统;引导程序;WinCE;EBoot     Bootloader的开发是嵌入式系统开发必不可少的环节,一个好的Bootloader不仅可以给项目的后续开发工作带来很大便利,而且在项目开发结束后对用户使用产品也提供了很多方便
[嵌入式]
STM32无法进入片上Bootloader的处理方法
当STM32芯片无法进入片上Bootloader时,我们需要采取一系列的处理方法来解决这个问题。以下将详细介绍一些常见的处理方法。 1.编程器选择问题 在尝试进入片上Bootloader之前,我们首先需要确认所使用的编程器是否支持该功能。有些低成本的编程器可能不支持进入片上Bootloader,因此我们可能需要更换更高级的编程器。 2.复位电路问题 如果芯片无法进入片上Bootloader,可能是由于复位电路出现问题导致的。我们可以检查外部复位电路是否正常工作,以及是否正确连接到芯片的复位引脚。同时也需要确保芯片的复位引脚没有被外部电路拉高或拉低。 3.芯片供电问题 另一个常见的原因是芯片供电不稳定或不足。我们需要检查芯片的供电电
[单片机]
基于S3C6410的ARM11学习(十八) 移植printf和scanf
在学c语言的时候,经典的hello world程序,是通过printf函数实现了。有了这个函数,就可以随意的向屏幕打印数据了。在嵌入式中,其实也是可以用printf函数的,不过需要稍微麻烦点的移植。毕竟,在嵌入式中,所有实现的都要自己来弄,不在向PC程序开发一样,很多库函数,操作系统已经搞好,就用就行了。 首先,是要去下载能实现printf的源代码。这里用的是国嵌提供的。有两个文件夹,一个include,里面一些头文件,另外一个lib,实现printf的需要的额外的程序。 中间的是inlcude中的头文件,下边是lib中的文件。 在lib中有一个Makefile。这个Makefile
[单片机]
基于S3C6410的ARM11学习(十八) 移植printf和scanf
PIC32MZ 通过USB在线升级 -- USB HID bootloader
上一篇博文介绍了PIC32MZ 的USB CDC bootloader, 但是USB CDC bootloader是模拟UART通信,速度比较慢。所以我决定使用USB HID class替换USB CDC class. 让我的PIC32MZ bootloader更新程序时,有飞一般的感觉。整个PIC32MZ USB HID bootloader是在harmony 的bootloader例程基础上修改的。HID bootloader的开发环境如下。 开发环境 1. IDE: MPLABX IDE 4.01 2. Compiler: XC32 1.40 3. Library: Harmony 1.07 4. Exa
[单片机]
Part4_lesson1---Bootloader设计蓝图
1、bootloader的作用 2、u-boot是bootloader业界的老大 u-boot分为自主模式和开发模式 3、建立U-boot工程 uboot不能在window下面进行解压,因为在windows下面它不区分大小写,所以很多文件会被丢失掉,而Linux下面是区分大小写的。
[单片机]
Part4_lesson1---<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