色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

seL4微內核入門-代碼下載運行及資料

yzcdx ? 來源:OS與AUTOSAR研究 ? 作者:OS與AUTOSAR研究 ? 2022-11-12 15:42 ? 次閱讀

不廢話,老一套:編譯環境準備,代碼下載,代碼編譯,qemu代碼運行。本文介紹的內容都是好東西,提供全方位的微內核入門指導,就看毅力怎么樣了,就像那句話:笨鳥先飛。

1. sel4簡介

sel4是微內核操作系統,號稱世界上最安全,最高效的微內核。提供非posix兼容的編程接口,它只提供了少量的服務,創建和管理虛擬地址空間、線程以及進程間通信(IPC)。亮點是capability機制,管理每個進程所擁有的資源。這個機制的引入也導致了sel4較難理解和應用開發。關于微內核的介紹參考上一篇:

2. Turorial練習

從官網提供的學習教程hello world開始練習,
df669de2-3df3-11ed-9e49-dac502259ad0.png

2.1 環境準備

這里同樣,采用的開發方式為VitrualBox+Ubuntu,下載VitrualBox和Ubuntu鏡像(版本>= 20.04),安裝虛擬機,具體不再描述。

df9622b0-3df3-11ed-9e49-dac502259ad0.png

環境搭建是否正常,以能運行第一個helloworld工程為準,詳細步驟為:

1)repo工具安裝

mkdir~/binPATH=~/bin:$PATH curl  https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
2)lib依賴庫和編譯工具安裝

#ThebasicbuildpackageonUbuntuisthe build-essentialpackage.Toinstallrun:sudo apt-get updatesudo apt-get install build-essential #AdditionalbasedependenciesforbuildingseL4 projectsonUbuntuincludeinstalling:sudo apt-get install cmake ccache ninja-build cmake-curses-guisudo apt-get install libxml2-utils ncurses-devsudo apt-get install curl git doxygen device-tree-compilersudo apt-get install u-boot-toolssudoapt-getinstallpython3-dev python3-pippython-is-python3sudoapt-getinstallprotobuf-compiler python3-protobuf sudoapt-getinstallqemu-system-arm qemu-system-x86qemu-system-miscsudoapt-getinstallgcc-arm-linux-gnueabi g++-arm-linux-gnueabisudoapt-getinstallgcc-aarch64-linux-gnu g++-aarch64-linux-gnu
3)Python 依賴庫

pip3 install--user setuptoolspip3 install--user sel4-deps# Currently we duplicate  dependencies for python2 and python3 as a python3 upgrade is in processpip install--user setuptoolspip install--user sel4-deps
4) 編譯庫依賴

sudo apt-get install clang gdbsudo apt-get install libssl-dev libclang-dev libcunit1-dev libsqlite3-devsudo apt-get install qemu-kvm
5)證明依賴

sudo apt-get installpython3 python3-pippython3-devgcc-arm-none-eabi build-essentiallibxml2-utilsccachencurses-dev librsvg2-bindevice-tree-compilercmakeninja-build curlzlib1g-devtexlive-fonts-recommendedtexlive-latex-extra texlive-metapost texlive-bibtex-extra mlton-compiler haskell-stack

2.2 下載代碼 下載代碼前安裝python依賴用于編譯教程

pipinstall--useraenumpip install --user pyelftools
下載代碼前配置repo郵箱信息

gitconfig --globaluser.email"you@example.com"gitconfig--globaluser.name "Your Name"
下載代碼(這里使用sel4官方的代碼進行練習,從github上下載)?

mkdirsel4-tutorials-manifestcd sel4-tutorials-manifestrepo init -u  https://github.com/seL4/sel4-tutorials-manifestrepo sync
2.3 Hello World應用生成 初始化hello-world文件夾?

./init--tuthello-world--solution
hello-world是示例名字,練習其他示例更換這個名字就可以,命令加 --solution后綴,可以補全代碼。可以看到生成了下面的hello-world文件夾,里面有c代碼。

dfbb7376-3df3-11ed-9e49-dac502259ad0.png

2.4 代碼編譯

cdhello-world_buildninja
編譯成功后顯示:

dfe74c4e-3df3-11ed-9e49-dac502259ad0.png

2.5 代碼運行

# In build directory, hello-world_build./simulate
成功后顯示:

e00930f2-3df3-11ed-9e49-dac502259ad0.png

運行后Ctrl-A, X退出qemu模擬工具。

3. Hello World代碼分析

編譯的時候,我們使用了ninja這個命令,Ninja 是Google的一名程序員推出的注重速度的構建工具,一般在Unix/Linux上的程序通過make/makefile來構建編譯,而Ninja通過將編譯任務并行組織,大大提高了構建速度。

可見ninja跟makefile同級別的都是構建工具,生成編譯器使用的規則。

在sel4-tutorials-manifest/hello-world_build/build.ninja文件中可以看到

e048cd34-3df3-11ed-9e49-dac502259ad0.png

執行ninja命令就會通過這個build.ninja進行編譯,會找到hello-world的代碼

dfbb7376-3df3-11ed-9e49-dac502259ad0.png

cmake是makefile之上的一層封裝。

CMakeLists.txt – cmake使用的腳本,將根任務合并到更廣泛的 seL4 構建系統中的文件。

src/main.c - 初始任務的單個源文件。
hello-world.md - 為教程生成的自述文件。

intmain(intargc,char*argv[]){     printf("Hello, World!
");      printf("Second hello
");    return  0;}
如果修改了應用的源碼,重新運行重建項目:

Bash# In build directory, hello-world_buildninja
然后再運行simulator:

# In build directory, hello-world_build./simulate
4. 學習資料

sel4原理熟悉,主要從兩條路進行學習:

一邊是sel4的參考手冊,另一邊就是基于Tutorials教程開始一步一步的做實驗,這樣可以做到理論和實踐結合。

(turorials中camkes相關的例子可以先不學習)

e076385a-3df3-11ed-9e49-dac502259ad0.png

輔助庫介紹:

tutorials工程中,其他輔助庫的介紹,除了sel4微內核之外,還需要提供一些庫,才能讓你的應用程序運行起來。

sel4內核:首先是sel4內核。單單的一個內核運行起來,是沒法運行一個例如hello world這樣的程序的,因為這個程序需要鏈接其他的庫,比如stdio中的printf,而且該程序和內核交互,就需要知道內核提供的標準API有哪些。

libsel4:sel4內核提供的api都用內核源碼工程里面的libsel4這個庫來描述。里面是sel4內核支持的標準api。


sel4_libs:當一個程序連接了這個libsel4之后,就可以使用sel4內核的標準api了,這個和Linux內核提供的標準api類似,是和操作系統密切關聯的。非posix標準的。另外這個libsel4庫不是很好用,因此在這之上又堆疊了一個sel4_libs庫,這個庫是對sel4標準api的進一步功能性的封裝,比如分配一個cap對象,調用者無需知道更下層的sel4標準api調用的細節。

musllibc:這個是開源的一個libc庫,和sel4是沒有直接關系的。用到這個工程里面來,主要是提供標準的符合posix標準的api,其他的操作系統也是可以使用的。因此應用程序可以直接使用libsel4中的函數,也可以使用sel4_libs中的函數,比較標準的功能就可以使用muscllibc中的功能了。為了打通muslibc和sel4_libs,sel4_libs中提供了一個libsel4muslcsys這樣的一個庫,muslibc中的一些功能通過sys call的方式調用到libsel4muslcsys這個接口庫中,這個接口庫就會調用sel4_libs中的相應函數。當然muslibc中的有些函數可能會直接調用libsel4的函數接口(目前還沒有看到muslibc中或者libsel4中有對這兩個庫的對接口的實現,可能這個猜測不對)

sel4runtime:一般程序里面都有一個main函數,作為該程序的入口位置,但是,這個程序的運行并不是從main開始的,在運行main之前,其實還做了其他的一些工作,比如堆棧指針的設置,環境變量的獲取,其他的一些準備工作等等。一般編譯器,比如gcc編譯器編譯一個比如hello world這樣的一個代碼的時候,會指定該程序的入口地址是 _start, 就是會找尋源碼,把 _start開始的代碼放在該程序代碼段的最開始位置,hello_world.c源碼中并沒有 _start這個函數或者標號,所以這個標號是其他地方的,且是會被hello_world.c鏈接進來的源碼,在sel4 tutorial工程里,我們用sel4runtime(里面是源碼)和lshello_world.c一起編譯,鏈接。這個sel4runtime工程里面提供了各個架構的 _start入口標號,該標號緊跟著的是該架構的一些匯編語言,處理堆棧等等,之后跳轉到一個簡單的c函數處,該c函數收集環境變量,傳入參數等,并最終調用main函數。


審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    6856

    瀏覽量

    123444
  • 微內核
    +關注

    關注

    0

    文章

    58

    瀏覽量

    13433

原文標題:seL4微內核入門-代碼下載運行及資料

文章出處:【微信號:OS與AUTOSAR研究,微信公眾號:OS與AUTOSAR研究】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    最近寫了一個lcd的驅動,每次下載運行的結果

    同樣的程序,每次下載運行的結果不一樣,是代碼的問題嗎?
    發表于 11-09 23:41

    seL4移植到Xilinx Zynq UltraScale + MPSoC,以實現極高的硬件安全性

    seL4是經過正式驗證的內核,考慮到安全性和性能而構建。對于具有嚴格安全性和/或安全性要求的項目,它是一種非常有吸引力的軟件解決方案。盡管seL4是一個不錯的選擇,但缺點之一是,與其
    發表于 08-20 19:23

    HarmonyOS學習之十:HarmonyOS內核技術

    ,第三代內核蓬勃發展,許許多多內核都被開發出來,主要代表有:seL4、Fiasco.OC、NOVA 等。 本來第一代
    發表于 11-30 13:55

    RK3399(內核入門篇)通過sysfs清楚了解設備的系統狀況

    RK3399平臺開發系列講解(內核入門篇)1.1、通過sysfs清楚了解設備的系統狀況 sys目錄
    發表于 12-16 08:00

    ide界面為什么找不到選擇從Flash上傳至ILM的下載運行模式?

    ide界面找不到選擇從Flash 上傳至ILM 的下載運行模式 下冊第12章運行gpio實驗 ide界面找不到選擇從Flash 上傳至ILM 的下載運行模式
    發表于 08-12 07:28

    AT32 MCU Cortex M4內核入門指南

    AT32 MCU Cortex M4內核入門指南主要介紹了AT32 M4 內核系統架構,并針對M4 內核
    發表于 10-25 08:08

    基于內核入侵的木馬設計與實現

             通過內核入侵是木馬入侵 Linux 系統的一種重要形式,其原理是利用Linux 內核提供的機制來實現木馬的各種功能,主要是通過內核
    發表于 09-05 08:32 ?9次下載

    OK Labs推出可供下載的移動安全內核OKL4 Verified

    Open Kernel Labs (OK Labs)日前推出了可供下載的OKL4 Verified(項目名稱為seL4
    發表于 01-28 08:47 ?1111次閱讀

    linux內核入門教材之linux內核設計與實現第二版中文版免費下載

    此書是當今首屈一指的linux內核入門最佳圖書。作者是為2.6內核加入了搶占的人,對調度部分非常精通,而調度是整個系統的核心,因此本書是很權威的。這本書講解淺顯易懂,全書沒有列舉一條匯編語句,但是
    發表于 10-15 18:20 ?0次下載
    linux<b class='flag-5'>內核入門</b>教材之linux<b class='flag-5'>內核</b>設計與實現第二版中文版免費<b class='flag-5'>下載</b>

    SEL-SPC5 SEL-SPC5智能選擇32位Power架構產品

    電子發燒友網為你提供(ti)SEL-SPC5相關產品參數、數據手冊,更有SEL-SPC5的引腳圖、接線圖、封裝手冊、中文資料、英文資料SEL
    發表于 05-20 12:05

    鑒釋宣布加入RISC-V基金會、Linux基金會、seL4基金會與ioXt聯盟,旨在實現靜態代碼分析服務的全方位賦能

    靜態代碼工具開發商鑒釋科技(下文簡稱:鑒釋)宣布其加入RISC-V基金會、Linux基金會、seL4基金會,以及ioXt聯盟四大國際非盈利組織。
    的頭像 發表于 07-27 14:29 ?8815次閱讀

    seL4內核參考?冊中?翻譯版

    內核操作系統SEL4的簡介、功能描述
    發表于 01-21 09:33 ?0次下載

    seL4操作系統內核

    seL4.zip
    發表于 04-18 10:13 ?6次下載
    <b class='flag-5'>seL4</b>操作系統<b class='flag-5'>內核</b>

    谷歌在官博上又發布了一款全新的操作系統——KataOS

    目前的GitHub版本,已經涵蓋了大部分KataOS的核心部分,包括用于Rust的框架(如sel4-sys crate,用于讓seL4系統調用API),一個用Rust編寫的備用根服務器(用于全系統的動態內存管理),以及對seL4
    的頭像 發表于 10-28 11:54 ?944次閱讀

    什么叫變壓器的空載運行、負載運行及超負荷運行

    什么叫變壓器的空載運行、負載運行及超負荷運行? 變壓器的空載運行、負載運行及超負荷運行是變壓器工
    的頭像 發表于 01-26 16:59 ?5359次閱讀
    主站蜘蛛池模板: 奶大B紧17p| 岛国片免费看| 女人张腿让男人桶免费| 国产第81页| 99re久久精品在线播放| 无码内射成人免费喷射| 毛片网站在线观看| 国产一在线精品一区在线观看| MM131亚洲精品久久安然| 一二三四在线视频社区| 武侠古典久久亚洲精品| 欧美性猛交xxxxxxxx软件| 久久国产高清视频| 国产亚洲福利精品一区| 耽肉高h喷汁呻吟| 99精品国产免费久久久久久下载| 亚洲熟女丰满多毛XXXXX| 无人区国产片| 日韩中文亚洲欧美视频二| 女神被调教成了精盆| 久热这里在线精品| 久99视频精品免费观看福利| 国产亚洲精品久久久久久久| 岛国大片在线播放免费| jyzzjyzzz视频国产在线观看| 中国老女人xxhd69| 亚洲午夜久久久久久久久电影网| 视频在线观看高清免费看| 色多多污污在线播放免费| 乐乐亚洲精品综合影院| 国产在线精品亚洲第一区| 高清视频在线观看SEYEYE| 99热在线免费观看| 91福利国产在线观看网站| 在线免费观看日本| 伊人久久精品线影院| 亚洲在线国产日韩欧美| 亚洲色t图| 亚洲熟妇色自偷自拍另类| 亚洲一区电影在线观看| 亚洲精品第一综合99久久|