启动文件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()

相关推荐
chao_7892 分钟前
Union 和 Optional 区别
开发语言·数据结构·python·fastapi
hsjkdhs2 分钟前
C++之类的组合
开发语言·c++·算法
疯狂的Alex30 分钟前
【C#避坑实战系列文章16】性能优化(CPU / 内存占用过高问题解决)
开发语言·性能优化·c#
象骑士Hack32 分钟前
dev c++工具下载 dev c++安装包下载 dev c++软件网盘资源分享
开发语言·c++
迎風吹頭髮1 小时前
UNIX下C语言编程与实践15-UNIX 文件系统三级结构:目录、i 节点、数据块的协同工作机制
java·c语言·unix
迎風吹頭髮1 小时前
UNIX下C语言编程与实践6-Make 工具与 Makefile 编写:从基础语法到复杂项目构建实战
运维·c语言·unix
铍镁钙锶钡镭1 小时前
FFmpeg 解封装简单流程
开发语言·ffmpeg·php
R-G-B2 小时前
【11】C实战篇——C语言 【scanf、printf、fprintf、fscanf、sprintf、sscanf】的区别
c语言·printf·scanf·fscanf·sprintf·fprintf·sscanf
郝学胜-神的一滴2 小时前
深入理解 Qt 元对象系统:QMetaEnum 的应用与实践
开发语言·c++·qt·软件工程
Brookty2 小时前
【Java学习】定时器Timer(源码详解)
java·开发语言·学习·多线程·javaee