启动文件Startup_vle.c

步骤1:初始化核心的通用寄存器

步骤2:初始化IVPR(异常向量表基址)和MSR寄存器以启用机器检查和异常(IVORx)

步骤3:初始化堆栈指针(r1)

步骤4:启动代码应确保MCU内部看门狗不会被服务,直到看门狗从MCAL看门狗驱动程序初始化。这可以通过增加看门狗服务时间来实现

Step5:设置AIPS_A/B母线桥及其保护功能:

(1) AIPS_MPRA(主特权寄存器A)

定义每个总线主节点的访问权限级别(8个主节点)

"111"默认值:参照芯片配置-

信任为读;

信任为写;

从这个主服务器访问不强制进入用户模式;

(2) AIPS_PACRn(外围访问控制寄存器A-H)

定义每个On-Platform外设支持的访问级别

"000"默认:参照芯片配置-

这个外设不需要管理员权限级别的访问;(OS)

这个外设允许写访问;

允许来自不受信任的主机的访问;

(3) AIPS_OPACRn(离台外围访问控制寄存器A-Z, AA-AF)

定义每个非平台外设支持的访问级别

"000"默认:参照芯片配置-

这个外设不需要管理员权限级别的访问;(OS)

这个外设允许写访问;

允许来自不受信任的主机的访问;

Step6:使能BTB

Step7:

初始化内部RAM,避免出现ECC错误

Step8:

Erase ".sbss" & ".bss" & ".bss_no_cacheable"

Step9:

将初始化的数据从Flash复制到SRAM

.PPC.EMB。Sdata0 & .sdata & .data & .data_no_cacheable & .ramcode

Step10:定义全局变量指针

Step11:Enable D_CACHE & I_CACHE

Step12:

配置INTC为硬件矢量模式

Step13:

Jump to main()

相关推荐
LDR0062 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术2 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园2 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob2 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享2 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.2 天前
C语言--day30
c语言·开发语言
玖玥拾2 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..2 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽2 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下2 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php