seL4 构建和测试

转载至:https://source2014.hackpad.com/seL4--IJItb9IDncR

取得核心程式碼

    • mkdir -p seL4-test && cd seL4-test
    • repo sync

KZM-ARM11-01

  • ARM1136 532MHz (Freescale i.MX31) based evaluation board
  • 通过 QEMU 模拟和验证
    • make kzm_simulation_release_xml_defconfig
    • TOOLPREFIX=arm-none-eabi- ARCH=arm make
    • make simulate-kzm
參考執行輸出:
...
    <testcase classname="sel4test" name="TEST_IPC0001">
INFO :sel4utils_elf_load_record_regions:276:  * Loading segment 00008000-->000445e4
INFO :sel4utils_elf_load_record_regions:276:  * Loading segment 0004d000-->00165df8
        <system-out>  TEST_IPC0001
</system-out>
...
    <testcase classname="sel4test" name="TEST_CNODEOP00012">
INFO :sel4utils_elf_load_record_regions:276:  * Loading segment 00008000-->000445e4
INFO :sel4utils_elf_load_record_regions:276:  * Loading segment 0004d000-->00165df8
        <system-out>  TEST_CNODEOP0001
</system-out>
    </testcase>
</testsuite>

126/126 tests passed.
All is well in the universe.

這時候可以準備執行 pkill qemu-system-arm

seL4 Tests

  • BSD License
  • Directory
    • apps/sel4test-driver
    • apps/sel4test-tests

seL4 Verification

  • 取得原始程式碼
    • mkdir -p verification &&cd verification
    • repo sync
  • 準備相關套件
    • sudo apt-get install libwww-perl texlive-bibtex-extra texlive-latex-extra
    • sudo apt-get install python-lxml
    • sudo apt-get install mlton python-tempita
  • 由於 Isabelle 需要額外的套件如 jdk7, jfreechart, scala, xz-java,得自網路抓取
    • cd l4v
    • mkdir -p ~/.isabelle/etc
    • cp -i misc/etc/settings ~/.isabelle/etc/settings
    • ./isabelle/bin/isabelle components -a
  • 遇到以下的小錯誤,可繼續
    • dirname: 缺少運算元
    • Try 'dirname --help' for more information.
  • 這過程相當耗時,解決方式為預先將檔案置放於 ~/.isabelle/contrib/ 目錄
    • cvc3-2.4.1
    • e-1.8
    • exec_process-1.0.3
    • Haskabelle-2013
    • jdk-7u40
    • jedit_build-20131106
    • jfreechart-1.0.14-1
    • kodkodi-1.5.2
    • polyml-5.5.1-1
    • scala-2.10.3
    • spass-3.8ds
    • z3-3.2
    • xz-java-1.2-1
    • ProofGeneral-4.2
  • Automated theorem proving! 確保可用的記憶體 > 2 GB
    • ./isabelle/bin/isabelle jedit -bf
    • ./isabelle/bin/isabelle build -bv HOL-Word
  • 參考輸出
ML_PLATFORM="x86_64-linux"
ML_HOME="/home/jserv/.isabelle/contrib/polyml-5.5.1-1/x86_64-linux"
ML_SYSTEM="polyml-5.5.1"
ML_OPTIONS="-H 2000"

Session Pure/Pure
Session HOL/HOL (main)
Session HOL/HOL-Word (main)
Building Pure ...
Finished Pure (1:36:49 elapsed time, 0:00:51 cpu time, factor 0.00)
Building HOL ...
HOL: theory Code_Generator
HOL: theory HOL
HOL: theory SATz

  • 執行證明 (相當慢)
    • ./run_tests
參考輸出:
Running 31 test(s)...

  running isabelle ...              pass
  running CamkesAdlSpec ...         pass
  running CamkesGlueSpec ...        
  ...
  running CamkesAdlSpec ...          FAILED *
  running CamkesGlueSpec ...        FAILED *
所有的 Test  都是一定會過 ?
要安裝 mlton (已送 pull request)


Issues



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个简单的Verilog代码,用于实现2选1多路选择器,并进行仿真测试。 ```verilog module mux2(input sel, input a, input b, output reg y); always @(sel or a or b) begin if (sel == 1'b0) y <= a; else y <= b; end endmodule module mux2_tb; reg sel, a, b; wire y; mux2 dut (.sel(sel), .a(a), .b(b), .y(y)); initial begin // Test case 1 sel = 1'b0; a = 1'b0; b = 1'b1; #10; if (y != 1'b0) $display("ERROR: Test case 1 failed"); else $display("Test case 1 passed"); // Test case 2 sel = 1'b1; a = 1'b0; b = 1'b1; #10; if (y != 1'b1) $display("ERROR: Test case 2 failed"); else $display("Test case 2 passed"); // Test case 3 sel = 1'b0; a = 1'b1; b = 1'b0; #10; if (y != 1'b1) $display("ERROR: Test case 3 failed"); else $display("Test case 3 passed"); // Test case 4 sel = 1'b1; a = 1'b1; b = 1'b0; #10; if (y != 1'b0) $display("ERROR: Test case 4 failed"); else $display("Test case 4 passed"); // End simulation #10; $display("Simulation complete"); $finish; end endmodule ``` 这里我们设计了一个名为 `mux2` 的模块,它有三个输入端口 `sel`,`a` 和 `b`,一个输出端口 `y`。当 `sel` 为 0 时,输出 `a`,否则输出 `b`。 我们还编写了一个名为 `mux2_tb` 的测试模块,用于测试 `mux2` 模块的功能。它使用了 `reg` 和 `wire` 变量,并通过 `initial` 语句块来定义测试用例。仿真运行时,测试模块会输出每个测试用例的测试结果,并在最后结束仿真。 下面是2选1多路选择器的工程流图示意图: ![mux2_flowchart](https://i.imgur.com/l5IuvF2.png)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值