首页
学习
活动
专区
圈层
工具
发布

opensbi下的riscv64裸机编程2(中断与异常)

opensbi下的riscv64裸机编程2(中断与异常) 1.本文说明 2.riscv特权模式下的异常 2.1 CSPs 2.2 异常开关的寄存器 2.3 与中断相关的指令 3.中断测试 3.1 设置中断向量表...按照芯片的设计来说,中断和异常大致上可以分为三类异常(Exception)、陷入(Trap)、外部中断(Interrupt)。...陷入(Trap) 主动的让其进入异常处理函数,常见的是系统调用syscall。而在riscv上为ecall或者进入断点的ebreak。...2.1 CSPs 实际上RISCV在实现系统指令集的时候,是支持多种模式的扩展的,这一系列的指令集通过Control and Status Registers (CSRs)来进行控制。...3.中断测试 由于在qemu上,中断的产生可以通过定时器来发生,所以需要理解riscv上对timer的使用。timer又需要通过sbi的接口进行访问。

2.6K40

opensbi下的riscv64裸机系列编程1(串口输出)

opensbi下的riscv64裸机系列编程1(串口输出) 1.说明 2.opensbi的编译 3.基本环境的准备 3.1 准备qemu 3.2 准备交叉编译工具链 4.工程完善 5.封装的sbi接口...6.程序运行 7.printf函数的实现 8.小结 1.说明 前面的文章中已经提到了opensbi的作用不仅仅是一个引导作用,还提供了M模式转换到S模式的实现,同时在S-Mode下的内核可以通过这一层访问一些...其中*代表通配符,而.则表示当前的地址。当链接脚本需要使用的时候,可将其通过-T进行参数的传递。 entry.s 该文件描述了执行的入口函数。...其中a7寄存器保留的是系统的调用号,而a0寄存器则保存系统的调用参数。返回值则会保存在a0寄存器中。...需要注意的是在RISCV的设计上,S模式不直接控制时钟中断和软件中断,而是使用ecall指令请求M模式设置定时器或在代理处理器中断。

5.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS编程中有哪些常见的编程“套路”或习惯

    从个人的编程经验来看,不管你是前端JS编程还是后端Java编程,在一些习惯上基本是通用的。就是你编写的JS代码必须要功能完善且易于阅读易于维护。...那么这里整理一下JS编程过程中一些比较行之有效的编程习惯。函数命名:对于JS编程的函数命名,驼峰命名且有意义的方法名往往更容易让人一眼就看明白,有助于提高代码的可读性、可维护性和可重用性。...好的命名可以帮助快速识别代码块的作用,而无需深入研究实现细节,节省时间成本;同时意味着即使在没有文档或注释的情况下,代码本身也能够传达其意图,从而减少由于误解代码意图而导致的错误和冲突。...如果函数或模块依赖于外部的全局变量,那么这些函数或模块就难以被重用或移植到其他项目中。注意let、var、const的使用场景:var允许在同一作用域内重复声明同一个变量,后面的声明会覆盖前面的。...const一旦声明,就不能再修改其引用的值(对于简单类型如数字或字符串),但可以修改对象或数组的内容。

    31420

    类编程的WAF(上)

    传统意义上的规则,其实质形式是独立的一行行文本,每行文本有固定的结构/字段,可以独立地描述出一个功能。对用户而言,书写规则就是设置其中的参数和选项。...[图1] 以防注入功能为例,如果它只有一个开启或关闭的开关选项,或只能简单地以区分站点来使用不同策略,显然不能满足前述的复杂需求。...既然应用是编程的,那么应用防火墙的配置可否也用编程的方式来实现?...更重要的是,这仅是代码片段 (其实就是函数),真的要整合起来使用,还面临很多编程方面的问题,如: 除错和容错: 各种语法错误和链接错误,比如使用了不存在的变量或方法。...以上问题,如果都通过临时修改代码 (全局替换或加注释) 来实现,则代码将变得不可维护。事实上,由于代码的无限可能性,甲写的代码乙很难理解。

    85830

    .NET中的异步编程上

    开篇 异步编程是程序设计的重点也是难点,还记得在刚开始接触.net的时候,看的是一本c#的Winform实例教程,上面大部分都是教我们如何使用Winform的控件以及操作数据库的实例,那时候做的基本都是数据库的...demo,数据量也不大,程序在执行的时候基本上不会出现阻塞的情况。...,让UI线程继续相应用户的操作,使得用户体验表现比较友好,同时正确的使用异步编程去处理计算限制的操作和耗时IO操作还能提升的应用程序的吞吐量及性能。...由此可见,异步编程的重要性。 异步编程在程序设计中也是非常复杂的,稍有不慎,就会使得你的应用程序变得不稳定,出现异常,甚至会奔溃。...但是,比较幸运的是,.net提供非常方便的框架来进行异步编程,在我看来.net中实现异步有两种方式,第一种是多线程的方式,第二种是使用异步函数,其实在异步函数中使用的还是多线程的技术。

    1.5K121

    Python编程 列表的操作(上)

    座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录  前言 一.列表(list) 1.列表介绍(掌握) 2.列表创建 3.访问(查)列表内的元素(掌握) 4.删除列表内的元素...(掌握) del语句  list.remove() list.pop() ----  前言 本章将会讲解Python编程中列表的,介绍,创建,等几个方面进行讲解。...从数据结构角度看,Python 的列表是一个 可变长度 的顺序存储结构,每一 个位置存放的都是对象的指针。 我们可对列表进行 修改、切片、追加、删除、嵌套、迭代、成员判断 等操作。...#创建:以英文状态下的 一对方括号 创建空的列表 li = [] print(type(li)) # #1.元素可以是任意类型的 2.元素可重复的 li_2...要访问 它的某个元素,以方括号加下标值的方式即可。 注意要确保索引不越界,一旦访问的 索引超过范围,会抛出异常。

    1.1K20

    在安卓手机或Win电脑上同步iOS上的日历

    说说我的需求:我平时都是我的iPad上添加我日常的日程,但是如果要到电脑或安卓手机上也有同样的日历就比较不方便。...有想过去试一下多平台的日历软件,但都没有iOS上的日历那么强大和直观,但目前网上的安卓日历软件大都不能与iCloud同步,于是我找到一些能用的安卓APP: SOL日历(早已不更新) Sunrise(已经被微软收购...这一步也一定要在一个苹果设备上登陆你的苹果ID才可以启动双重认证。也就是双设备操作。 第三步,进行双重认证,允许访问。输入认证码。 第四步,在此页面点击,安全。生成密码。...这个密码就是在安卓上要输入的密码了。 更多详情参照:安卓手机如何同步共享苹果日历?...使用icloud同步方法 下载时间积木(TimeBlocks)软件 下载时间积木(TimeBlocks)软件,Google Play有最新版,国内安卓市场有老的,也可以安装后再更新,这里提供一个4.6的版本

    5.5K20

    H7-TOOL发布V2.20带来原创RTOS Trace,截图,Scope功能,脱机烧录增加PSoC6, 中颖, 笙泉, 韦斯佰瑞, nRF9160, 杰发科技新系列等

    ,添加新型号        - ST公司STM32WBxx系列 (STM32WB55)        - Nordic NRF9160        - 广芯微UM3213A新增XT25F64算法...,AWTK,裸机等,含多缓冲玩法 早期包括现在做产品效果展示,需要截屏时,很多时候依然采用的SD卡/U盘这种的古老方案,不仅麻烦,而且繁琐。...3、裸机,TouchGFX,ThreadX GUIX,emWin,LVGL,AWTK全部测试通过,含多缓冲方式玩法。...2、JScope的HSS模式是采用的定时器查询方式,如果需要自己控制,大家可以使用TOOL提供的RTT波形打印方式。...(7)增加杰发科技的AC7802x、 AC7840x (8)增加兆易创新的GD32E50x 系列M33核 (9)增加ST的STM32WBxx系列 (STM32WB55) (10)灵动MM32全系列升级更新

    1.6K30

    编程规范_这个星球上最好的C编程风格

    在那里养成了相对良好的编程习惯,几位前辈用连括号前一个空格都不放过的严谨让我受益匪浅。离开老东家的时间越来越久,自己在编程规范上也渐渐有所松懈。...我能感受到他们的激情和天赋,如果不能在他们茁壮成长的时候去提醒下他们,这就是我的失责了。所以为了让好的东西传承下去,这也是我今天做分享的原因。 那谁是这个星球上最好的C编程风格呢?...这几年我听到很多公司都采用谷歌的编程风格,所以我就姑且认为目前google的编程风格是这个星球上最流行的编程风格。拉里佩奇是我最喜欢的偶像,对谷歌也是充满崇拜。...接下来我带大家研究下谷歌的编程风格指南,并不是说它最好,只是给大家提供一个思路。 谷歌在github上开放了编程指南,除了C语言之外还有java,python,R语言等等。...最后 关于编程规范的其它部分,由于展示方式受限,PPT上不展开。 大家可以查看我翻译的C编程风格指南_C语言版。

    93410

    如何查看Linux上程序或进程用到的库

    问题:当你们调用一个特定的可执行文件在运行时载入了哪些共享库。是否有方法可以明确Linux上可执行程序或运行进程的共享库依赖关系?...查看可执行程序的共享库依赖关系 要找出某个特定可执行依赖的库,可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。 $ ldd /path/to/program ? 注意!...取而代之的是用一个更安全的方式来显示一个未知应用程序二进制文件的库文件依赖,使用如下命令: $ objdump -p /path/to/program | grep NEEDED ?...查看运行进程的共享库依赖关系 如果你想要找出被一个运行中的进程载入的共享库,你可以使用pldd命令,它会显示出在运行时被载入一个进程里的所有共享对象。...或者,也可以选择一个叫做pmap的命令行工具。它报告一个进程的内存映射,也能显示出运行进程的库文件依赖。 $ sudo pmap ?

    3.9K80

    如何识别不同的编程语言(上)

    漫谈编程语言:数量 这又是一个有趣的话题~~,要知道编程语言有那么的多。引自Quora上一个相关问题的答案,从ABC到Z Shell就有256个。...但是这并不是最佳的答案,要知道维基百科上就有500+种编程语言了。...汉语是这个世界上使用人数最多的语言,英语是这个世界上最流行的语言。同样的,Java是这个世界上使用人数最多的语言(依据Tiobe统计的结果),JavaScript是这个世界上最流行的编程语言。...他们两的关系就是汉语和英语的关系,都带了一个“语”(Java)字。 漫谈编程语言:语系 虽然说编程语言有那么多,但是实际上平时人们在社交网络上讨论的应该就那么几十种吧。...同样的,这也适用于编程语言,只是维基百科将编程语言的类型分为了四十几种——这有点超乎我的想象了。换句话来说,这TM太扯了。

    3.5K60

    在Linux上的Shell编程(2)

    $ *能够实现部分文件替换功能,它实际上还可以与其他字符配合使用,以限制所能够匹配到的文件名范围。...*并不仅限于放在文件名尾部,它还可以出现在开头或中间的位置: $ echo *t1 chaptl $ echo *t* chaptl chapt2...1.4.2 匹配单个字符 星号(*)能够匹配零个或多个字符,也就是说,x*能够匹配文件x,也能够匹配x1、x2、xabc等。问号(?)仅能够匹配单个字符。因此cat ?...匹配两个字符,*匹配余下的零个或多个字符,其效果就是找出所有文件名长度至少为两个字符的文件。 另一种匹配单个字符的方法是在中括号[]中给出待匹配的字符列表。例如,[abc]能够匹配字符a、b或c。...在指定字符范围的时候,唯一的限制就是第一个字符在字母表上必须位于最后一个字符之前,因此[z-f]并不是一个有效的字符范围,而[f-z]就没有问题。

    96110

    全志D1-H哪吒上裸机执行 rt-thread 的 rt-smart os

    前言 我属于提前批拿到哪吒开发板的,兴奋之余开始研究如何去运行自己的裸机程序,美其名曰:操作系统....和 mcu 不一样, sbc 级别的 cpu 跑起来要复杂的多,不过好在系统级别的领域,不同的软件分工明确, 我们的裸机程序作为 kernel 部分,等着被引导就好....所以,简单的方法就是我们把我们自己的 OS 程序,写入到 nand 中 boot 分区的位置,理论上就可以了....在前面 uboot 的引导指令用的是 bootm 45000000, bootm 是引导 linux kernel 的,包含了引导协议的一些东西, 我们作为一个裸机程序,我们可以使用 uboot 的 go...少年, 下一步就开始在哪吒上运行你的 Dreeam OS 吧! 最后的补充注意事项: RISC-V 芯片运行在 SBI 环境, S Mode 下,所以如果裸机程序 M 模式的代码是无法正常运行的.

    37710

    “低代码”编程或将是软件开发的未来

    3、告别传统系统传统的遗留系统因时间久远效率和技术远不如新系统,而且它们缺乏灵活性。很多团队用传统系统很多情况下只能在电子表格或纸张上填写数据,并将其提交给办公室存档。...因此,基于云的低代码编程是完美的解决方案。此外,这减轻了开发人员专注于公司中更复杂、操作驱动的工作的负担。5、敏捷才是上策随着不断变化的业务条件和不断变化的客户需求,企业变得敏捷是当务之急。...这使个人能够在没有任何广泛编程或编码知识的情况下构建应用程序。公司可以指派在该问题上有第一手经验的个人自行构建应用程序和解决方案,而无需从外部聘请人员。...低代码编程的更多好处包括:更快的应用程序开发改进业务功能高质量输出更少或基本没有业务积压三、低代码开发的应用系统长啥样?我们将以织信为例,用简单的话来解释这一点。​...有100多个基于行业的预置模板可供选择,进一步加快了开发过程。完成后,只需完成对第三方平台(企微、钉钉、公众号)的api对接,即可在这些平台或设备上使用该应用系统。

    42310

    编程语言70年:谁是世界上最好的编程语言?

    C 语言的诞生是为了满足 Unix 。当时 Unix 使用 BCPL 或 B 语言都无法满足操作系统对编程语言的要求,因此 C 语言应运而生。...这注定了 Java 在 20 年后的没落。但是话又说回来,能在主流编程语言连续 10 多年榜上有名, Java 已经完成了的历史使命。 JavaScript 逐渐发展为浏览器上的原生语言。...另外,Go 在工程上的成功,展示其了语法特性上的新尝试:Go 语言是近代第一个捡起类型后置的语言,提供了丰富的语法糖(如:=)使得代码简短并语义明确,这直接影响了后面的 Swift,Rust、Kotlin...除了在应用层 C++ 有待进步,在底层场景上的C++也有很大的进步空间。2022 年,Herb Sutter 的实验项目 CppFront 值得一提。...编程语言孰是孰非?想必见仁见智、言人人殊。那在你心目中,谁是世界上最好的编程语言呢?你最看好哪个语言?欢迎各位开发者在评论区交流分享。

    3.8K100

    面向协议编程与 Cocoa 的邂逅 (上)

    本文笔者在 MDCC 16 (移动开发者大会) 上 iOS 专场中的主题演讲的文字整理。...因为全部内容比较长,所以分成了上下两个部分,本文 (上) 主要介绍了一些理论方面的内容,包括面向对象编程存在的问题,面向协议的基本概念和决策模型等,下半部分主要展示了一些笔者日常使用面向协议思想和 Cocoa...引子 面向协议编程 (Protocol Oriented Programming,以下简称 POP) 是 Apple 在 2015 年 WWDC 上提出的 Swift 的一种编程范式。...所谓协议,就是一组属性和/或方法的定义,而如果某个具体类型想要遵守一个协议,那它需要实现这个协议所定义的所有这些内容。协议实际上做的事情不过是“关于实现的约定”。...上添加 extension。

    80920

    如何在Linux上恢复误删除的文件或目录

    Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。...一、误删除文件进程还在的情况。 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。...二、误删除的文件进程已经不存在,借助于工具还原。...比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。2.通过dd命令对当前分区进行备份,防止第三方软件恢复失败导致数据丢失。...内容是没问题的。 更多的extundelete用法请参考extundelete –help选项参数说明,当前恢复所有的操作完成。

    3.5K20

    如何在Linux上恢复误删除的文件或目录

    Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。...一、误删除文件进程还在的情况。 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。...二、误删除的文件进程已经不存在,借助于工具还原。...比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。 通过dd命令对当前分区进行备份,防止第三方软件恢复失败导致数据丢失。...内容是没问题的。 更多的extundelete用法请参考extundelete –help选项参数说明,当前恢复所有的操作完成

    3.5K30

    如何在 Linux 上恢复误删除的文件或目录

    Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原。...这里分别检查介绍下 一,误删除文件进程还在的情况。 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。...二,误删除的文件进程已经不存在,借助于工具还原。...比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。 2,通过dd命令对 当前分区进行备份,防止第三方软件恢复失败导致数据丢失。...内容是没问题的。 更多的extundelete用法请参考extundelete –help选项参数说明,当前恢复所有的操作完成。

    4.6K10

    如何在 Linux 上恢复误删除的文件或目录?

    原文链接:http://www.21yunwei.com/archives/6030 原文作者:21运维 Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。...一、误删除文件进程还在的情况。 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。...二、误删除的文件进程已经不存在,借助于工具还原 创建准备删除的目录并echo一个 带有内容的文件: [root@21yunwei_backup 21yunwei]# tree . ├── deletetest...比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。 2、通过dd命令对 当前分区进行备份,防止第三方软件恢复失败导致数据丢失。...推荐阅读: 1、4 款超级好用的终端文件管理器,提高你的使用效率! 2、开源神器:可快速在 iOS 设备上安装 Windows、Linux 等操作系统!

    41.8K11
    领券