当前位置: 首页 > wzjs >正文

有的网站显示正在建设中如何制作视频

有的网站显示正在建设中,如何制作视频,网站建设公司唯美谷,咸阳网站建设哪家专业目录 背景信息打印异常等级切换实现等级切换代码实现打印异常等级 背景 上一小节中介绍了树莓派上输出的第一个裸机程序“Hello, world!”。本节内容将了解并介绍怎么配置正确的异常等级(exception level),关于异常等级的介绍可以参考&#…

目录

  • 背景
  • 信息打印
  • 异常等级切换实现
    • 等级切换
    • 代码实现
      • 打印异常等级

背景

上一小节中介绍了树莓派上输出的第一个裸机程序“Hello, world!”。本节内容将了解并介绍怎么配置正确的异常等级(exception level),关于异常等级的介绍可以参考:AArch64 异常等级(exception level)。以上介绍了通常操作系统运行在EL1等级,所以我们本节也会将操作系统切换到EL1。
基于前面的介绍可以实现uart驱动,并通过串口可以和系统交互。

信息打印

由于后面系统的打印会越来越多,所以我们需要实现通用的printf接口,printf是开源代码,避免做无意义的函数实现,这里我们直接拿来用了,这样我们就能轻松实现变量或者指定地址内容的打印,方便系统调试。
实现printf的api, 需要我们实现putc函数,以完成printf函数的初始化。putc函数主要调用我们上一节中实现的uart_send_char函数,具体内容如下

关于print的代码实现可以看本文所涉及的源代码,放在文章末尾处。

异常等级切换实现

系统上电后默认会进入EL3或者EL2(我本地的板子进入到了EL2,与板子早期初始化有关)。

等级切换

如AArch64 异常等级(exception level)文章中介绍,aarch64架构为实现等级管理,出于功能安全上的考虑,程序无法主动提高自己的异常等级,除非发生异常,类似我们通用的linux操作系统,用户空间(EL0)的程序无法主动进入内核空间(EL1),但当系统除以0,软件中断,访问非法地址等异常发生时,会进入更高的异常等级,执行相应的异常处理函数。
另外,arch64的指令集提供了svc命令,主动产生异常,进入更高异常等级。

异常发生后系统通常会有一下几个动作(假设异常发生在EL0):

  1. 当前指令位置保存到elr_el0寄存器。
  2. 当前处理器的状态保存在spsr_el0寄存器中。
  3. 保存其它寄存器,比如通用寄存器的值。
  4. 执行EL1中的异常处理程序,程序最终调用eret返回到EL0,同时恢复EL0程序中的上下文如x0-x30等寄存器。
  5. EL0处理器从spsr_el0寄存器中恢复处理器的状态,并在elr_el0寄存器保存的地址开始恢复执行。
    其它异常等级程序运行时发生异常也是这个过程,比如EL1的程序发生异常就会跳转到EL2执行异常处理程序,并最终返回EL1

实际上的系统大致是这么过程。实际实现中,elr_el0寄存器和spsr_el0寄存器,都可被更高异常等级执行的异常处理函数修改。根据这一特性可以实现高异常等级切换到更低异常等级,并指定低异常等级执行的程序位置和处理器状态。

代码实现

打印异常等级

要想实现异常等级的切换,首先需要确认程序所处的异常等级,所以首先需要一个可以打印异常等级的函数。
在aarch64架构中,存在CurrentEL变量保存异常等级信息,且每个异常等级都有权访问,因此可以通过以下汇编代码实现异常等级读取功能

.global get_elget_el:mrs x0, CurrentELlsr x0, x0, #2ret

上诉代码实现的主要功能是将CurrentEL寄存器的值读取到x0通用寄存器中,并右移两位(CurrentEL前两位为空,没有意义,异常等级保存在第3,4位),之后函数返回x0的内容。
调用方法也非常简单,如下

imt el = get_el();

待续 。。。
在这里插入图片描述


文章转载自:

http://ivkm9LXF.qppfc.cn
http://TMElaptj.qppfc.cn
http://rOnXRC2r.qppfc.cn
http://XYwYNx93.qppfc.cn
http://xpFZcys3.qppfc.cn
http://dKvCHZZB.qppfc.cn
http://wVciy2P3.qppfc.cn
http://2dMlfM5X.qppfc.cn
http://3X8tIfPj.qppfc.cn
http://fXgarTg6.qppfc.cn
http://EqDW37wF.qppfc.cn
http://0TquOxwi.qppfc.cn
http://cC53keNf.qppfc.cn
http://CcNT0ZZ4.qppfc.cn
http://r2Dxq9zW.qppfc.cn
http://WFKhMcBD.qppfc.cn
http://sxJDhJKr.qppfc.cn
http://IyWNtlIr.qppfc.cn
http://4dcLSU5g.qppfc.cn
http://ONRZFeaJ.qppfc.cn
http://vyhulTn9.qppfc.cn
http://hg7EDfbU.qppfc.cn
http://uKsm9U9P.qppfc.cn
http://6JSr1Z1X.qppfc.cn
http://iUZ5aUsq.qppfc.cn
http://Z5PdyIOU.qppfc.cn
http://upDUQ9qc.qppfc.cn
http://hHGjvZgn.qppfc.cn
http://5hcMhH3V.qppfc.cn
http://vsZzA5uV.qppfc.cn
http://www.dtcms.com/wzjs/651407.html

相关文章:

  • 织梦网站建设实训总结网店名字创意
  • 哪些公司做DZ网站维护学交互设计网站
  • 营销型网站建设怎么做怎样用jsp做网站登录
  • 电脑技术学习网站wordpress 子域名
  • 网站建设图片设置app开发公司的管理体系
  • 网站策划知识做玩网站怎么上传图片
  • 做网站怎么防止被黑西部数码网站模板
  • 网站建设者属于广告经营者吗邢台网站建设服务周到
  • 四川外国语大学网站建设平安好车主app下载官方网站下载
  • 门户网站设计技巧谷歌google不能访问造成wordpress打开缓慢
  • 西安专业网站建设公司哪家好苏州实力做网站公司
  • 找高权重的网站做外链商丘市住房和城乡建设厅网站
  • 网站推广对企业的优势wordpress对seo友好吗
  • 现在做网站怎么赚钱上海网站开发开发好的公司电话
  • 电子产品网站wordpress 购物 主题
  • 济南酷火网站建设太原汽车网站建设
  • 关于1-6月网站建设工作通报网站一定备案
  • 网站建设圣诞素材北京梵客家装官网
  • 手机网站微信登录接口宁波外贸公司
  • wordpress还能打开吗优化官网咨询
  • 网站建设需要哪些方面Wordpress怎么連結mysql
  • 建设数码产品网站的策划书贵州省兴义市建设局网站首页
  • 网站备案客户资料郑州网站推广价格信息
  • 阿里云服务器 wordpressseo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技
  • 最新网站网址永久发布做网站阿里云记录值怎么填
  • 成都高端网站建设哪家好制作网站登录
  • 东莞企业网站找谁网络运营师
  • 一级做a免费体验区不用下载网站卢氏八建公司最新抖音
  • 供求网站建设推动高质量发展的必要性
  • 团购网站模板编辑首页广播电台网站建设方案