版本 69f51b987afd24860130e90b0f87fb86a67855c0
Changes from 69f51b987afd24860130e90b0f87fb86a67855c0 to b4b50d88d06cc2dbfbd3143a8b8cd65fe0989d6b
---
title: Lab26: system call
toc: no
...
預期目標
-------
- 觀察作業系統系統呼叫的過程
- 藉由 QEMU 模擬環境,嘗試修改 rtenv 並觀察其行為
修改 rtenv
-----------
* 同 `Lab25</embedded/Lab25>`_ 取得 rtenv 並編譯執行
* 同 [Lab25](/embedded/Lab25) 取得 rtenv 並編譯執行
* 修改 syscall.s 將 ``push {r7}`` 和 ``mov r7,`` 及 ``pop {r7}`` 等等指令中的 r7 改為 r8
* 修改 kernel.c 的 main() 函式,將 r7 改為 r8
* 重新編譯: ``make clean all``
* ``make qemu`` 發現無法執行,why?
* 繼續修改 context_switch.s 將相關的 r7 改為 r8,再來編譯執行,行為符合預期
* ABI: Application Binary Interface
作業要求 (歡迎替換)
-------------------
* 繼續分析 rtenv 的執行過程,試圖說明 process, system call, scheduler, pipe 等行為,更新於 `Lab25</embedded/Lab25>`_ 的共筆
- 位於 Hackpad 的 `Lab25 共筆<https://embedded2014.hackpad.com/Lab25-GNU-Toolchain-iqMI18AAgwU>`_
* 繼續分析 rtenv 的執行過程,試圖說明 process, system call, scheduler, pipe 等行為,更新於 [Lab25](/embedded/Lab25) 的共筆
- 位於 Hackpad 的 [Lab25 共筆](https://embedded2014.hackpad.com/Lab25-GNU-Toolchain-iqMI18AAgwU)
* 將 ABI 定為透過 r8 來傳遞 system call / ISR number
繳交作業
-------
- 截止日期:
* Mar 7, 2014 (含) 之前
- 請一併更新 GitHub