原文:riscv 開發之S模式ecall調用

我們知道有些寄存器只能在m模式下設置和訪問,如果s模式想要使用某個功能,只能先回到m模式然后再進行相應的設置。OpenSBI定義了s模式和m模式之間功能調用的接口,s模式通過執行 ecall 指令回到m模式使用相關功能,在本章節和下一章節我們將通過類似的方式來學習s模式下如何使用ecall和m模式下如何處理來自s模式的ecall異常。 首先我們將ecall指令封裝成宏來使用,如下所示。 這個宏的封 ...

2021-12-14 10:12 1 4296 推薦指數:

查看詳情

關於C/S模式開發的學習筆記

  當今的現狀,感覺是B/S大為盛行,C/S的學習者很少,就那我們學校來看,三年多來,教的、用的最多的都是B/S,在剛剛確定下來的畢設課題中,大約四分之三都是web結合安卓開發的系統。C/S的學習着很少,我們做過的C/S系統僅僅是在學習課程的時候完成過一個課后大作業。   在C/S模式中,工作 ...

Thu Oct 13 23:44:00 CST 2016 0 1954
QEMU裸機開發S模式中斷設置

1. 中斷初始化 S模式下的中斷初始化和M模式基本類似,只不過操作的是S模式下的CSR寄存器,如下所示。 唯一不同的是S模式的中斷棧使用的是__stack_start往上第三個4KB的空間,其余的和m模式下都差不多,這里就不在贅述了。 2. 中斷處理 2.1 中斷入口 ...

Tue Dec 14 00:02:00 CST 2021 0 96
MIT-6.S081-2020實驗(xv6-riscv64)一:util

實驗文檔 概述 實驗一主要涉及調用系統調用函數,這些系統調用函數基本都是符合POSIX規范的,和操作系統本身關系較小,在調試的時候也可以先把程序在外部的Linux下跑通然后再放進xv6中運行。 內容 sleep 基本沒什么特別的內容,按說明的做就行了。 pingpong 涉及進程 ...

Fri Jan 01 07:12:00 CST 2021 0 707
MIT-6.S081-2020實驗(xv6-riscv64)四:traps

實驗文檔 概述 這次實驗內容比較分散,總體來說難度不是太高。 內容 Backtrace 要求在內核中對程序的調用棧進行遍歷,輸出每一級調用的返回地址。首先我們分析Riscv的棧幀結構,查看call.asm中main函數的匯編代碼: 棧是由高地址向低地址增長的,可見在進入函數時,會由 ...

Sat Jan 02 04:21:00 CST 2021 0 567
MIT-6.S081-2020實驗(xv6-riscv64)八:lock

實驗文檔 概述 這次實驗主要涉及鎖在內核的應用,沒有用到什么特別的理論知識,但是編程的時候陷阱重重,要么資源競爭,要么死鎖,和實驗三差不多,非常考驗耐心和細心。 內容 Memory alloc ...

Fri Jan 08 22:19:00 CST 2021 0 872
MIT-6.S081-2020實驗(xv6-riscv64)十一:net

實驗文檔 概述 這次實驗主要實現網卡驅動的一部分,文檔內容非常長,實際實驗不算難,跟着hint就行,但還是需要對整體框架有一定的了解。 內容 發送函數: 這里有兩個問題,第一是可不可以只保存一個mbuf,每次調用函數的時候就釋放掉上一個mbuf,答案是不能,因為多進程的影響,可能有 ...

Wed Jan 13 21:33:00 CST 2021 0 381
MIT-6.S081-2020實驗(xv6-riscv64)五:lazy

實驗文檔 概述 這次實驗主要實現Lazy allocation的功能,即進程在動態分配內存的時候先不分配,等到要用到發生缺頁中斷的時候再實際分配,核心是實現缺頁中斷的處理。xv6的文檔介紹了三種缺 ...

Sun Jan 03 00:33:00 CST 2021 0 485
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM