帳號:guest(3.17.156.141)          離開系統
字體大小: 字級放大   字級縮小   預設字形  

詳目顯示

以作者查詢圖書館館藏以作者查詢臺灣博碩士論文系統以作者查詢全國書目勘誤回報
作者:吳俊寬
作者(英文):Chun-Kuan Wu
論文名稱:實作多核心即時作業系統在URduino
論文名稱(英文):To Implement a Multi-core Real-time Operation System on URduino
指導教授:蔡正雄
指導教授(英文):Chang-Hsiung Tsai
口試委員:賴寶蓮
李增奎
口試委員(英文):Pao-Lien Lai
Tzeng-Kuei Li
學位類別:碩士
校院名稱:國立東華大學
系所名稱:資訊工程學系
學號:610621203
出版年(民國):107
畢業學年度:106
語文別:中文
論文頁數:97
關鍵詞:多核心即時作業系統FPGAURduinoOpenRISC
關鍵詞(英文):Multi-coreReal-time Operation SystemFPGAURduinoOpenRISC
相關次數:
  • 推薦推薦:0
  • 點閱點閱:14
  • 評分評分:系統版面圖檔系統版面圖檔系統版面圖檔系統版面圖檔系統版面圖檔
  • 下載下載:13
  • 收藏收藏:0
  在嵌入式系統已蓬勃發展的現代,多核心嵌入式系統已經隨處可見,但都以手機類型等高階開發板為主。大部分在多核心開發板上運行的作業系統,都以小型『Linux』為主且功能皆極為複雜。以後非高階型開發板可能隨硬體進步也漸漸走向多核心的型態,那時對於此種開發板複雜的功能是不需要的,但又會有需要多核心的即時作業系統的情況會發生,此時『Linux』非但不是即時作業系統且功能過多並不是最好的選擇。
  本論文將實作多核心即時作業系統在一塊 FPGA 的開發板 URduino 上,已被燒錄雙核心 OpenRISC 1200 中央處理器電路。基於這個環境,從頭開始撰寫一個即時作業系統並移植至此開發板上,使多核心開發板能多工處理以及優先序排程可以有效率的執行。而透過這個過程可以接觸到開發板的Verilog電路檔,了解其開機後從Bootloader開始到加載Kernel到核心,最後執行使用者程式碼的每個流程。為了達到我的目的也必須修改Linker Script改變記憶體配置和Verilog電路檔改變記憶體映射使專案可以正確執行。同時培養出依硬體不同客製化多核心即時作業系統以及可以從硬體、軟體兩個角度對整個專案除錯的能力。
  Recently, the embedded system has been flourishing. Multi-core embedded system is easy to see, but it is general like cell phones or high-level development boards. Most of the operating systems running on development boards are small “Linux” operating systems and have too many functions. When the development operation is not high level may develop towards multi-core architecture, it is not necessary to have so many functions but it needs a multi-core real-time operating system. Linux is not real-time and has too many functions, so it is not the best choice.
  In this paper, we implement a multi-core real-time operating system on an FPGA development board, URduino, with dual-core OpenRISC CPU circuit. We program and port it to this development board. Letting multi-core operating system work efficiently by multiplexing and priority scheduling. During the process of implementing it, the Verilog of development board is touched and every procedure from the development booting, BIOS working, boot loader-loading kernel to memory and finally executing user program is known. In order to reach the goal, even the Linker Script needs to be modified, changing the memory section and Verilog changing the memory mapping. After this tremendous amount of work is finished, not only the ability to customize a multi-core real-time operating system for different hardware has been acquired, but also the knowledge of debugging whole projects from the software side and hardware side.
中文摘要 I
英文摘要 II
誌謝 III
目錄 IV
圖目錄 VI
表目錄 IX
第一章、 研究目的與動機 1
第二章、 相關知識 2
2.1 即時作業系統 2
2.2 URduino開發板介紹 3
2.3 OpenRISC 1200介紹 4
第三章、研究方法 5
3.1 原始專案 5
3.1.1 專案程式碼 5
3.1.2 問題統整 8
3.2 硬體系統架構 10
3.2.1 Wishbone 10
3.2.2 主要特色 11
3.2.3 電路實作方法 12
3.2.4 開發板電路架構 13
3.2.5 啟動程序 15
3.2.6 Core與SRAM 24
第四章、實作 28
4.1 Wishbone實作 28
4.2系統架構修改 34
4.2.1 更改Core記憶體映射 35
4.2.2 將指定程式放至指定的記憶體區域 36
4.2.3 修改後SRAM映射 37
4.3 UrOS多核心即時作業系統之實作 38
4.3.1 系統移植 41
4.3.2 UrOS各模組實作 47
第五章、UrOS入門 86
5.1 urduinoIDE 86
5.2 第一個應用程式 88
5.2.1 main檔內容 88
5.2.2 newtask_edited檔內容 89
5.2.3 執行結果 93
第六章、結論 94
6.1 專案修改的前後差異 94
6.2 未來可改良的地方 95
參考文獻 96
[1]. 徐于晉,實作多核心即時作業系統,2014年7月。
[2]. FreeRTOS - 成大資工Wiki,http://wiki.csie.ncku.edu.tw/embedded/freertos。
[3]. RTOS,https://zh.wikipedia.org/wiki/RTOS。
[4]. RTOS的必備特性,https://read01.com/zh-tw/7DNnja.html#.WtdyyIhuZhE。
[5]. RISC-V - 維基百科,自由的百科全書 – Wikipedia,https://zh.wikipedia.org/wiki/RISC-V。
[6]. SMIMS URduino 系統開發使用手冊,購買開發板裡面附贈光碟的文件。
[7]. OprnRISC 1000 Spec,https://openrisc.io/or1k.html。
[8]. OprnRISC 1200 Spec,ftp://ftp.gwdg.de/pub/misc/opencores/cores/or1k/openrisc1200_spec.pdf。
[9]. XV6 A simple, Unix-like Teaching Operating System,https://pdos.csail.mit.edu/6.828/2016/xv6/book-rev9.pdf。
[10]. wishbone_百度百科,https://baike.baidu.com/item/wishbone。
[11]. Wishbone B4,https://opencores.org/cdn/downloads/wbspec_b4.pdf。
[12]. Linker Script初探- GNU Linker Ld手冊略讀,http://wen00072.github.io/blog/2014/03/14/study-on-the-Linker -script/。
[13]. .bss section:C 語言所種下的因 – jollen,http://www.jollen.org/blog/2007/01/no-zero-initialized-in-bss.html。
[14].將function指定在固定位址上的範例,http://forum.andestech.com/viewtopic.php?f=23&t=183。
[15]. Accessing GNU Linker Script Symbols from C/C++,https://mcuoneclipse.com/2016/11/01/getting-the-memory-range-of-sections-with-gnu-Linker -files/。
[16]. Linux學習objcopy命令@ 愛在屋簷下的部落格:: 痞客邦:: - 痞客邦PIXNET,http://pxnet2768.pixnet.net/blog/post/71229765-linux%E5%AD%B8%E7%BF%92objcopy%E5%91%BD%E4%BB%A4。
[17]. GNU 程式設計-- Objdump 目的檔觀察工具- 陳鍾誠的網站,http://ccckmit.wikidot.com/gnu:objdump。
[18].執行緒生命周期 - OpenHome.cc,https://openhome.cc/Gossip/JavaGossip-V2/ThreadLife.htm。
[19]. [C&++] 記憶體/函式引數概念 - Edison.X. Blog - 痞客邦,http://edisonx.pixnet.net/blog/post/64954439-%5Bc&++%5D-%E8%A8%98%E6%86%B6%E9%AB%94-%E5%87%BD%E5%BC%8F%E5%BC%95%E6%95%B8-%E6%A6%82%E5%BF%B5。
 
 
 
 
第一頁 上一頁 下一頁 最後一頁 top
* *