1. 函数栈

1.1物理内存分布

介绍函数栈之前,先介绍SylixOS Lite版本ARM平台的内存分布,根据BSP工程的连接脚本SylixOSBSP.ld可知,SylixOS的物理内存主要分为五段:

1.TEXT段又称代码段,主要存放执行代码,有执行权限;

2.DATA段又称数据段,主要放已经初始化好的全局变量;

3.BSS段主要存放未初始化的全局变量;

4.栈又称堆栈,可存放函数的局部临时变量(不包括static声明的变量,static放在在数据段中)。在函数被调用时,其参数也可能会被压入栈中,并且待到调用结束后,函数的返回值也会被存放到栈中,可以说栈就是为了函数而存在的; 堆是用于存放进程运行中被动态分配的内存段。

SylixOS lite版的物理内存分布方式,如图 1.1所示。

图 1.1内存分布图

1.2 函数栈的使用方式

函数栈的运作方式可以在互联网上查到很多介绍,在这里笔者通过流程图简单的介绍一下,如图 1.2所示。

图 1.2函数栈的运作流程图

2 Cortex-M7的启动流程

2.1 Cortex-M7的启动

STM32F767是基于Cortex-M7内核,与传统的ARM架构不同,Cortex-M7在上电后从片上Flash读取前两个地址的值:

第一个地址的值:是MSP主堆栈指针;

第二个地址的值:是PC的初始值,该值为可设置为第一个执行的函数的地址。

如图 2.1、图 2.2所示。

图 2.1复位序列

图 2.2 MSP及PC的初始化范例

2.2 Cortex-M7的SylixOS启动流程分析

2.2.1 异常向量表

1.根据第2.1节,SylixOS把异常向量表链接到代码段首位,异常向量表的第一项为主堆栈指针,第二项是archRSTIntHandle函数地址,如图 2.3所示。

图 2.3异常向量表

2.SylixOS通过链接脚本文件把异常向量表链接到代码段的首地址,如图 2.4所示。

图 2.4 SylixOSBSP.ld

2.2.2 archRSTIntHandle函数

archRSTIntHandle函数的作用相当于其他ARM平台的startup.S的reset,如图 2.5所示。

图 2.5函数archRSTIntHandle

根据图 2.5可知,archRSTIntHandle函数流程主要分为四步:

1.把初始化数据从片上Flash复制到DATA段;

2.初始化BSS段的数据为0;

3.板卡必须的初始化;

4.调用bspinit,开始启动SylixOS内核。

3片外内存的使用

根据第一节函数堆栈和第二节Cortex-M7的SylixOS启动流程可知,想要让无Uboot版本的SylixOS使用片外内存需要有三步:

1.把RAM地址空间映射到外部存储空间,如图 3.1、图 3.2所示。

图 3.1 config.h

图 3.2 config.lds

2.把异常向量表的第一个值设为可用的内存地址,以便可以执行archRSTIntHandle函数。在没有初始化片外内存之前,有512K的片上内存可用,片上内存的开始地址固定,大小固定,直接可用,此时可以把主堆栈指针指向片上内存如图 3.3所示。

图 33.指定栈底地址

3.在系统初始化DATA段之前初始化片外内存,如图 3.4所示。

图 3.4初始化片外内存

4参考资料

转载于:https://blog.51cto.com/xiaoyaolanyun/1966851

SylixOS 无Uboot版BSP相关推荐

  1. 格式工厂mac版_格式工厂无广告版,支持PDF文件的转换

    点击上方"蓝字",发现更多精彩.软件信息[名称]:格式工厂无广告版[安装环境]:win10/win8/win7[下载链接]:https://pan.baidu.com/s/1r5_ ...

  2. 【资源】C++学习资料 - 逆天整理 - 精华无密版【最新】

    再失效就太无语了,链接都是多份的~~ -----------------基础-------------- C++环境搭建(全套) http://pan.baidu.com/s/1o6y0smY 链接: ...

  3. php极速链,php PHP极速链 战群源码系列(全自动采集更新+引流神器无数据库版) WEB(ASP,PHP,...) 261万源代码下载- www.pudn.com...

    文件名称: php下载  收藏√  [ 5  4  3  2  1 ] 开发工具: PHP 文件大小: 15699 KB 上传时间: 2015-08-10 下载次数: 5 提 供 者: 田维莉 详细说 ...

  4. 经典解压缩软件 WinRAR 5.71 无广告版

    目录 1. 按 2. 烈火汉化版 2.1. 下载地址 3. 官方中文无广告版 1. 按 WinRAR拥有全球超过五千万的用户,是目前最受欢迎的压缩软件, 没有比它更加好的方法来实现高效安全的文件传输, ...

  5. TC Games 电脑玩手游助手会员无水印版,专为游戏直播玩家打造

    Tcgames 电脑玩手机助手会员无水印版已经上线了,无水印版除了服务于游戏直播用户.游戏工作室之外还增加多项功能和服务,让你在用电脑鼠标键盘大屏操作游戏的时候更加方便快捷. 1.使用tcgames投 ...

  6. 爬动的蠕虫(无循环版)

    一.题目要求 一条蠕虫长1寸,在一口深为N寸的井的底部.已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬.在休息的过程中,蠕虫又下滑了D寸.就这样,上爬和下滑重复进行.请问,蠕虫需要多长 ...

  7. 魔百盒CM211-2 ZG(朝哥代工)无WIFI版线刷救砖包(当贝桌面)

    魔百盒CM211-2 ZG(朝哥代工)无WIFI版线刷救砖包(当贝桌面) 固件说明: 该固件system分区判断是用201-2的分区修改而来的,解决了精简系统.刷机救砖等一系列问题,虽然算不上完美,但 ...

  8. 友盟朋友圈社区使用详解-(无UI版)

    (如果你down下来sdk是懵比的 那么你可以看一看. 希望能有帮助.) 今天开始做朋友圈功能,本来是自己自定义.突然发现友盟有这个api   秉着不去重复造轮子的思想. 决定用造好的轮子.  友盟的 ...

  9. Struts1.x 登录实验-无数据库版

    Struts1.x -- 登录实验-无数据库版 前言 环境配置 Apache Tomcat 9.0.53 配置 下载 安装和配置 IDEA中配置Tomcat Struts 1.3.10配置 下载与安装 ...

最新文章

  1. ubuntu系统安装FTP
  2. (Java多线程)线程状态
  3. 求助,后台跳转至前台,如何实现,谢谢
  4. (49)System Verilog字符串string详解
  5. 第六届中国云计算大会详细日程
  6. 6.通信原理 ——数字基带传输系统(第七版 樊昌信 曹丽娜编著)
  7. double bottoms
  8. 英文转换-在线英文批量转换器免费
  9. PDI-KETTLE-4 使用Kettle完成通用DB数据获取生成指定分隔符的文件并通过FTP上传的功能...
  10. android 画图功能,Android实现简单画图画板
  11. 【目标检测】英雄联盟能用YOLOv5实时目标检测了 支持onnx推理
  12. 张一鸣:积极乐观的心理期待,对成功有害!
  13. PAKDD2020:阿里巴巴算法大赛冠军思路
  14. JavaScript RegExp 身份证、账号密码、email正则
  15. MS2108 RGB转USB 数字视频采集芯片 支持8bit/16bit BT601/BT709/BT656/ BT1120转USB2.0
  16. java从高位到低位输出_任意输入一个正整数,从高位向低位依次输出,或从低位向高位依次输出(数组,调用函数两种方法)...
  17. TexturePacker序列号申请
  18. 2020Ti电赛体会与经验
  19. 头条、油条商标有多像?Python检测发现相似度高达98.4%!
  20. VS-PETS是什么?

热门文章

  1. Python学习记录之-----类
  2. 【leetcode】Intersection of Two Linked Lists
  3. document.querySelector和querySelectorAll方法
  4. 【Groovy】json 序列化 ( 类对象转为 json 字符串 | 使用 JsonBuilder 进行转换 | 使用 JsonOutput 进行转换 | 将 json 字符串格式化输出 )
  5. 【C 语言】文件操作 ( 按照单个字符的方式读写文件 | fgetc 函数 | fputc 函数 )
  6. 【Qt】打开现有 Qt 项目 ( 打开已存在的项目 | 运行打开的项目 )
  7. 【Java 注解】自定义注解 ( 元注解 )
  8. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库到 Android Studio 工程 | 配置 build.gradle 构建脚本 )
  9. 【错误记录】Flutter 设备连接显示 Loading... ( 断网 | 删除 flutter/bin/cache/lockfile 文件 )
  10. 【计算机网络】数据链路层 : 广域网 ( HDLC 协议 | HDLC 站 | HDLC 帧格式 | HDLC 帧类型 | PPP 协议 与 HDLC 协议 对比 )