介绍

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. Python图像处理丨5种图像处理特效

    摘要:本篇文章主要讲解了图像常见的特效处理,从处理效果图.算法原理.代码实现三个步骤进行详细讲解,涉及图像素描特效.怀旧特效.光照特效.流年特效.图像滤镜等. 本文分享自华为云社区<[Pytho ...

  2. Go语言核心36讲47

    你好,我是郝林,今天我们继续分享使用os包中的API. 我们在上一篇文章中.从"os.File类型都实现了哪些io包中的接口"这一问题出发,介绍了一系列的相关内容.今天我们继续围绕 ...

  3. i春秋Do you know upload?

    打开题目是一个文件上传,就先写了一个一句话木马的php文件,直接提交显示文件类型不允许.于是乎将其改为jpeg格式上传,成功了,但是没用,菜刀连不上.再次上传jpg格式的一句话木马(写好php木马后将 ...

  4. kettel

    下载教程:(目前最高版本7.1) 1.网址:https://community.hitachivantara.com/docs/DOC-1009855 2.

  5. day30-JQuery03

    JQuery03 4.jQuery选择器03 4.4表单选择器 应用实例 <!DOCTYPE html> <html lang="en"> <head ...

  6. 【每日一题】【动态规划,递推式与公共子串的区别】2022年1月31日-NC92 最长公共子序列(二)

    描述 给定两个字符串str1和str2,输出两个字符串的最长公共子序列.如果最长公共子序列为空,则返回"-1".目前给出的数据,仅仅会存在一个最长的公共子序列 方法1: impor ...

  7. 【每日一题】【map操作】【滑动窗口所需元素】2021年12月22日-76. 最小覆盖子串

    给你一个字符串 s .一个字符串 t .返回 s 中涵盖 t 所有字符的最小子串.如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" . 注意: 对于 t 中重复字符 ...

  8. 时间片差分调度法-充分利用MCU的资源

    前言 通过该篇学习了嵌入式的任务调度(即时间片论法)后,了解到通过以1ms为调度时间单位轮询判断是否需要执行函数任务,那么下面介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式 ...

  9. git相关问题解析,你想要的都有🔥

    官网文档: https://git-scm.com/doc 本地克隆远程代码仓库 git clone 地址 本地同步全量历史数据,克隆所有文件的历史记录 git clone 地址 -depth 1 本 ...

  10. JavaScript 深拷贝的循环引用问题

    如果说道实现深拷贝最简单的方法,我们第一个想到的就是 JSON.stringify() 方法,因为JSON.stringify()后返回的是字符串,所以我们会再使用JSON.parse()转换为对象, ...