分享到plurk 分享到twitter 分享到facebook

版本 69f51b987afd24860130e90b0f87fb86a67855c0

embedded/Lab26

Changes from 69f51b987afd24860130e90b0f87fb86a67855c0 to current

---
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