介绍

k210的datasheet主要讲了与外设相关的内容,k210并不支持最新的完整的riscv指令集,而是实现了一部分。本文想要通过汇编来一点点摸索k210的寄存器,布局,mmu,缓存等结构

相关链接:https://github.com/rcore-os/rCore-Tutorial/issues/80#issuecomment-663055705

riscv指令模块

在包云岗老师翻译的riscv reader 手册 的指令集参考手册中
第二章介绍了RV32I的寄存器和6中指令类型
类型简介:https://blog.csdn.net/m0_46450829/article/details/105201216
第五章介绍了RV32F和RV32D的寄存器(浮点寄存器)和相关指令

k210架构

实际上k210使用的是rocket core:https://canaan-creative.com/716.html
riscv 裸机编程:https://blog.csdn.net/u010451780/article/details/120830800
什么是设备树:https://rcore-os.github.io/rCore-Tutorial-deploy/docs/lab-5/guide/part-1.html

IA-32体系结构下的多核启动

参考《linux源码情景分析》,首先由引导处理器进行自身的初始化,特别是内存的初始化之后,再调用smp_init()进行smp结构的初始化(创建一个带有主线程的进程),然后利用apic给另外一个核以信号,并设置其初始运行地址,等待启动

gdb 调试方法

常用gdb命令 https://blog.csdn.net/houzijushi/article/details/79901344

gdb线程调试命令 https://blog.csdn.net/nyist327/article/details/42969677

100个gdb调试小技巧 https://wizardforcel.gitbooks.io/100-gdb-tips/content/print-threads.html

jtag调试

riscv 汇编

gnu 伪指令 https://blog.csdn.net/qq_41596356/article/details/121539963

一个assembly教程 https://github.com/riscv-non-isa/riscv-asm-manual/blob/master/riscv-asm.md

找的很多教程和arm这个汇编很像,所以一并记录下来

arm 汇编手册 http://www.rowleydownload.co.uk/arm/documentation/gnu/as/index.html#Top

很详细的汇编教程 (arm)https://blog.csdn.net/liuzq/article/details/83615085

riscv 特权级二进制接口规范

英文原版:https://github.com/riscv-non-isa/riscv-sbi-doc/blob/master/riscv-sbi.adoc

洛佳大佬翻译版本:https://zh.m.wikisource.org/wiki/Translation:特权层二进制接口规范标准

rust 内联汇编

某位同学的博客

https://xiaopengli89.github.io/posts/rust-asm-macro/

参考手册详细教程(英文)

https://doc.rust-lang.org/stable/reference/inline-assembly.html

riscv 汇编调用规范

https://inst.eecs.berkeley.edu/~cs61c/resources/RISCV_Calling_Convention.pdf

其他相关资料

aiot中riscv芯片的相关报告:https://www.hexiaoqing.net/wp-content/uploads/2016/05/AIoT技术挑战与RISC-V-处理器机遇-202007.pdf

一个老哥的博客,关于riscv的,介绍了riscv芯片的数据通路 https://suda-morris.github.io/blog/cs/risc-v.html

微内核相关资料

微内核科普(鸿蒙) https://blog.csdn.net/icolakele/article/details/100110384

微内核相关概念 https://blog.csdn.net/drsonxu/article/details/80922826

SOSP名人堂 https://posts.careerengine.us/author/5f0e1622daae0f4acf222cb1/posts?from=authorDetailSidePanel

操作系统实现目标:

qemu文档网址 https://www.qemu.org/docs/master/

linux中riscv 体系结构下的代码:https://github.com/riscvarchive/riscv-linux/tree/18c83d2c0390fd0e8336ad090a047c56037d19f5/arch/riscv/kernel

从零开始学os https://learningos.github.io/rcore_step_by_step_webdoc/

k210 cpu、asm、rust、smpboot、ipi的更多相关文章

  1. [转载] 深入了解Java ClassLoader、Bytecode 、ASM、cglib

    转载自http://www.iteye.com/topic/98178   一.Java ClassLoader 1,什么是ClassLoader 与 C 或 C++ 编写的程序不同,Java 程序并 ...

  2. 转:WebGL、Asm.js和WebAssembly概念简介

    WebGL.Asm.js和WebAssembly概念简介 转:http://www.techbrood.com/zh/news/webgl/webgl%E3%80%81asm_js%E5%92%8Cw ...

  3. 为什么CPU缓存会分为一级缓存L1、L2、L3?有什么意义?

    https://baijiahao.baidu.com/s?id=1598811284058671259&wfr=spider&for=pc 简介:CPU缓存是CPU一个重要的组成部分 ...

  4. 【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较

    前言:突然想打算把Rust作为将来自己主要的副编程语言.当然,主语言还是C#,毕竟.NET平台这么强大,写起来就是爽.缘起:之前打算一些新的产品或者新的要开发的东西,由于没有历史包袱,就想重新选型一下 ...

  5. java的反射机制和javassist、asm

    1.java的反射机制,可以帮助我们在运行的时候获取我们引用的java类相关的信息,包括类的名字.所包含的方法名字.方法参数等等 2.javassit这个jar包,大概看了下,更厉害,它可以直接操作字 ...

  6. 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)

    [优化]COUNT(1).COUNT(*).COUNT(常量).COUNT(主键).COUNT(ROWID).COUNT(非空列).COUNT(允许为空列).COUNT(DISTINCT 列名) 1. ...

  7. Java虚拟机6:内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别

    前言 之前的文章尤其是讲解GC的时候提到了很多的概念,比如内存溢出和内存泄露.并行与并发.Client模式和Server模式.Minor GC和Full GC,本文详细讲解下这些概念的区别. 内存溢出 ...

  8. Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)

    catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...

  9. tomcat的maxThreads、acceptCount(最大线程数、最大排队数)

    转载:http://blog.sina.com.cn/s/blog_605f5b4f01012ljj.html tomcat 的Connector配置如下 <Connector port=&qu ...

  10. java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互

    java gc的工作原理.如何优化GC的性能.如何和GC进行有效的交互 一个优秀的Java 程序员必须了解GC 的工作原理.如何优化GC的性能.如何和GC进行有效的交互,因为有一些应用程序对性能要求较 ...

随机推荐

  1. 【笔记】CF1714F Build a Tree and That Is It 及相关

    题目传送门 细节较多的构造题. 解决思路 题目中虽然说是无根树,但我们可以钦定这棵树的根为 1,方便构造,这是不影响结果的. 以下记给定的三段长度为 \(a,b,c\) . 先考虑无解的情况. 首先, ...

  2. Vue3笔记(二)了解组合式API的应用与方法

    一.组合式API(Composition API)的介绍 官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html 组 ...

  3. [linux]非root账户 sudo cd 无法切换目录解决办法

    在Centos上有个账户A(非root),有sudo权限(权限比较大),想要用 cd 命令切换到 B账号的 /home/B 下的目录,结果没作用 [liuzz ~]$ sudo cd /home/xi ...

  4. springboot接收前端传参的几种方式

    1.通过HttpServletRequest接收,常用于获取请求头参数以及Cookie,适用于GET 和 POST请求方式,以下两种方式: @GetMapping("/demo1" ...

  5. kubernetes数据持久化StorageClass动态供给(二)

    存储类的好处之一便是支持PV的动态供给,它甚至可以直接被视作为PV的创建模版,用户用到持久性存储时,需要通过创建PVC来绑定匹配的PV,此类操作需求较大,或者当管理员手动创建的PV无法满足PVC的所有 ...

  6. Docker定时删除none镜像

    在使用docker的时候会产生none镜像文件,偶尔没什么,但是比如使用了自动化部署工具那就不一样了,一天没准就上百个none镜像了,非常消耗资源,所以需要定时清理 删除 none 镜像命令 dock ...

  7. JUC源码学习笔记6——ReentrantReadWriteLock

    系列文章目录和关于我 阅读此文需要有AQS独占和AQS共享的源码功底,推荐阅读: 1.JUC源码学习笔记1--AQS独占模式和ReentrantLock 2.JUC源码学习笔记2--AQS共享和Sem ...

  8. 【Java面试指北】Exception Error Throwable 你分得清么?

    读本篇文章之前,如果让你叙述一下 Exception Error Throwable 的区别,你能回答出来么? 你的反应是不是像下面一样呢? 你在写代码时会经常 try catch(Exception ...

  9. 视图 触发器 事务 MVCC 存储过程 MySQL函数 MySQL流程控制 索引的数据结构 索引失效 慢查询优化explain 数据库设计三范式

    目录 视图 create view ... as 触发器 简介 创建触发器的语法 create trigger 触发器命名有一定的规律 临时修改SQL语句的结束符 delimiter 触发器的实际运用 ...

  10. 从面试题入手,畅谈 Vue 3 性能优化

    前言 今年又是一个非常寒冷的冬天,很多公司都开始人员精简.市场从来不缺前端,但对高级前端的需求还是特别强烈的.一些大厂的面试官为了区分候选人对前端领域能力的深度,经常会在面试过程中考察一些前端框架的源 ...