zoukankan      html  css  js  c++  java
  • autosar mcal之启动代码

    我们都知道芯片在运行应用程序指令之前,首先会对芯片做一些

    硬件和系统的初始化,如堆栈指针、RAM空间、变量初始化等,这部分代码被称为启动代码。启动代码通常在芯片上电后立即执行,对 MCAL架构来讲就是要在MCU驱动模块初始化之前完成,启动代 码要求完成芯片特殊的初始化功能,这些工作不属于任何MCAL驱动 模块,下面列出了MCAL规范对启动代码完成功能的建议。

    1)启动代码应完成中断向量表的初始化。

    2)启动代码应完成堆栈的初始化。

    3)如芯片支持Context Save操作,启动代码应完成用于Context Save操作的存储器空间。

    4)启动代码应确保MCU内部看门狗处于关闭状态,内部看门 狗的初始化应由MCAL Watchdog驱动部件完成。

    5)如MCU支持数据/代码缓存,必须在启动代码中完成初始 化。

    6)启动代码应完成MCU内部存储器相关的初始化功能,如内 存保护等。

    7)如使用外部存储器,存储器应在启动代码中初始化。

    8)启动代码应完成MCU默认时钟配置的初始化。

    9)如芯片支持,启动代码应使能特殊功能寄存器的保护机 制。

    (10)启动代码应初始化必要的一次只写寄存器(Write Once Register)。

    11)启动代码应初始化RAM空间,以保证正确执行MCU驱 动。以上就是MCAL规范对于启动代码的功能建议,需要注意的是启 动代码依赖于ECU的功能及MCU的性能。接下来,具体看一下本章 使用的S32K144样例工程中启动代码都做了哪些事情。

    1.初始化内核通用寄存器

    mov    r0,#0
    mov    r1,#0
    mov    r2,#0
    mov    r3,#0
    mov    r4,#0
    mov    r5,#0
    mov    r6,#0
    mov    r7,#0

    2.初始化中断向量表的基地址

    /* relocate vector table to RAM */
    ldr   r0,=VTOR_REG
    ldr   r1,=VTABLE
    str   r1,[r0]

    3.初始化用户堆栈

    4.关闭Watchdog

    5.系统初始化

    6.RAM初始化

    7.跳转至Main函数

  • 相关阅读:
    JS 创建对象的几种方式
    JS跨域笔记
    HTML5随笔
    css3随笔
    CSS3最简洁的轮播图
    canvas createRadialGradient 用法
    git 初级
    Oracle数据库字符集与国家字符集
    连接Oracle 19c出现ORA-28040:没有匹配的验证协议
    Vmware workstation虚拟机导入到esxi虚拟机
  • 原文地址:https://www.cnblogs.com/still-smile/p/12218250.html
Copyright © 2011-2022 走看看