資料傳輸 常見的資料傳輸方式有兩種: Serial將一串資料拆成多個資料,一次傳一個資料。 pros: 成本低 Parallel有多條傳輸線,因此可以...
前言 在昨天我們已經順利的啟動 xv6 了,而在 xv6 中實現了 21 種 System call,今天我們將看到一些與 process 有關的 Syste...
ADP-Corvette-T1物聯網開發板使用RISC-V MCU核心TLSR9518A。它是物聯網解決方案系列的最新一代SoC,並內含高性能32-bit的RI...
晶心科技(Andes Technology)的RISC-V核心包括: 初階32-bit的N22系列 中階32-bit的N25F/D25F/A25/A27/A2...
前言 我們在前面花了 5 個篇章對於 trap 進行了完整的介紹,並且瞭解了 trap 處理得具體流程,今天我們將看到 page fault 所造成的 tra...
本文目標 了解連結器與常見的連結方式 Lazy-binding 建立對 elf file format 的基本認知 連結器的用途 連結器讓我們能夠對各個獨立...
予焦啦!上一章,我們完成了基本的排程;至少,程式的流程不會再因為單一的執行緒需要睡眠或是為了取得某些鎖而卡住。雖然也和本系列文的其他機制一樣粗暴而粗糙,但我們可...
tags: 鐵人賽 0. 前言 建議先觀看昨日 PLIC 介紹,會較恰當喔。今日來介紹 AIA(Advanced Interrupt Architecture)...
前言 在今天我們將運用前面所學的關於檔案操作的 System call,以及 Process 相關的 System call,來實現 I/O 重導向的概念,並...
本節是以 Golang 上游 8854368cb076ea9a2b71c8b3c8f675a8e19b751c 為基準做的實驗 予焦啦!在前兩天的斷章當中,...
本節是以 Golang 上游 8854368cb076ea9a2b71c8b3c8f675a8e19b751c 為基準做的實驗 予焦啦!上下文(contex...
使用Spike執行RISC-V gnu toolchain編譯出來的ELF檔,就可以得到完整執行此EFL檔需要用到哪些指令。利用script統計後可以得到如下結...
前言 如果一個應用程式想要使用多個 CPU 的核心 (thread),並且使用了 System call,將會觸發 trap,而多個核心使用 System c...
前言 在最一開始的時候,我們知道作業系統有一個很重要的目標,便是做到隔離性的部分,而隔離性這一部分的實作和虛擬記憶體管理有著很大的關係,以下將會介紹記憶體地址...
tags: 鐵人賽 0. 前言 今天天氣有點涼爽,那就來說明 sbi_ecall 吧!建議還沒觀看前些日子文章的朋友,觀看完才能更好理解今日文章唷~~特權模式C...
必須執行Arduino IDE的1.8.1以後版本,才可以使用Arduino IDE在Corvette-T1上開發應用程式。 打開Arduino IDE...
前言 昨天我們快速地看過作業系統需要達成的主要目標,包含抽象,多工等等。而在這一篇章,我們將了解作業系統的主要服務以及 xv6 作業系統的相關背景,以及 xv...
Interrupt 中斷 (Interrupt) 可以用來改變 CPU 執行程式的流程,當 CPU 在執行一個程式時,可以通過 Interrupt 讓 CPU...
在 3.0 那一篇,筆者介紹時間中斷與簡單的實作。也許也有讀者注意到了不太順暢的部分,那就是直接跳躍到作業系統模式去控制,卻沒有說明機器模式的中斷相關控制暫存器...
tags: 鐵人賽 前言 今日天氣不錯,就讓我們正式開始介紹 Sscofpmf 這個 extension 吧。 介紹 現有的 Privilege SPEC 已經...
前言 在昨天我們看到了 xv6 中記憶體分頁與虛擬記憶體的概念與實作的部分,有了這一些功能,我們就能夠實現作業系統中的隔離性,也就是 process 之間使用...
前言 今日的文章,將簡單的看過電腦的啟動流程,以及在 xv6 中的 bootloader 和 kernel.ld 這個檔案。 啟動概要 當電腦開機或是重新啟動...
前言 由於下面在追蹤 xv6 的相關議題,如架構與啟動,會涉及到一些暫存器的操作,以及一些暫存器操作的指令,或是在進行 System call 時,涉及的特權...
前言 首先在最一開始,將藉由 Hello World 範例程式,引入一些作業系統的基本部件。以及作業系統的概念與目標,抽象性的實現,最後引入 System c...
本節是以 Golang 上游 1a708bcf1d17171056a42ec1597ca8848c854d2a 為基準做的實驗。 予焦啦!回顧昨日,最終我們...
前言 前面看完了 ecall 的前後變化,接下來我們將繼續深入追蹤 trap 的流程,查看是如何進行整個 user mode 到 supervisor mod...
前言 我們昨天看到了 kernel space 中的 kernel virtual address space,今天我們會看到 user virtual ad...
本節是以 Golang 4b654c0eeca65ffc6588ffd9c99387a7e48002c1 為基準做的實驗 予焦啦!在昨日基本地完成 sysA...
這次要實作的是 RISC-V 的核心基本架構。RISC-V提供了32個integer register用作基本的算術邏輯運算,如下圖: 以 Rust 的stru...
這次要來實作指令decoder,負責pipeline中的decode stage。計組教科書上常見的pipeline架構依序為:fetch、decode、exe...