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

版本 b9babd977c400e07b04e14878a570984d9132ef2

embedded/2015q1w4

Changes from b9babd977c400e07b04e14878a570984d9132ef2 to b657ac4bcf8541f2bfd04ca7c55c5bcb18f69912

---
title: Week #4 (Mar 17) :: ARM Exceptions/Interrupts
toc: no
...

重大事項宣達
-------------------
* `贊助學生參加 jjhou 課程<https://www.facebook.com/groups/ncku.embedded2015/permalink/662675613878927/>`_ (Mar 20 前登記)
  - C++ Under the Hood (C++ 底層揭密)
  - Memory Management (記憶體管理)
  - C++11/14 (C++新特性)
  - Heap Management in CRT and in Windows (CRT 及 Windows系統中的Heap管理機制)

* 受理一對一面試申請 (修課和旁聽學生都可申請,前者優先處理),作為考試成績
  - 請在 2015 年 7 月 5 日前,用 email 約定面談時段 (暑期 intern 應該在 5 月 15 日之前),注意以下:
    * 寄送到 Jim Huang (黃敬群) <jserv.tw@gmail.com>
    * 標題以 [NCKU/embedded] 開頭,後面加註姓名,依據 `資訊科技產業面試模擬和工作咨詢</embedded/rehearsal>`_ 的說明提供相關資訊

  - 比照資訊科技產業面試的出題方式,本學期上課提及的概念、術語,甚至作業都在涵蓋範圍
    * 題目會累積,所以,務必注意時間
    * 會有紙上寫程式的要求

* 第 6 周 (3 月 31 日) 確認分組名單與題目志願表,請開始物色隊友
  - 3 到 5 人一組,建議不要都是同一個實驗室的成員
  - GitHub 和 Hackpad 是你的好朋友,知己知彼
  - 期中報告 + 期末專題

面試經驗分享
-------------------
* `資訊科技產業面試模擬和工作咨詢</embedded/rehearsal>`_
* 郭俊儀

`Lab-38</embedded/Lab38>`_ 心得分享
----------------------------------------------------------
* `Fibonacci fast doubling : ARM assembly 實作<http://www.slideshare.net/erickitten/fibonacci-fast-doubling>`_
* 吳哲綱

內含arm指令簡介(可參考`Quick Reference<http://users.ece.utexas.edu/~valvano/Volume1/QuickReferenceCard.pdf>`_):
  - 程式碼使用到的 ARM 指令 (完整可見 `Quick Reference<http://users.ece.utexas.edu/~valvano/Volume1/QuickReferenceCard.pdf>`_):

+-------------------+--------------------------+
| ARM instruction   | Action                   |
+===================+==========================+
| CLZ Rd,Rm         | Rd = leading zero of Rm  |
+-------------------+--------------------------+
| RSB Rd,Rn,<op2>   | Rd = <op2> - Rn          |
+-------------------+--------------------------+
| MLA Rd,Rm,Rs,Rn   | Rd = (Rn+(Rm*Rs))        |
+-------------------+--------------------------+
| CBZ Rn,<label>    | if(Rn==0) goto <label>   |
+-------------------+--------------------------+
| <op2>:= Rs,LSL,#N | logical shift left N     |
+-------------------+--------------------------+

教材
-------
* `ARM Cortex-M3 Introduction<http://www.arm.com/files/pdf/CortexM3_Uni_Intro.pdf>`_ (概念)
  - `ARM Cortex-M3<http://www.slideshare.net/GauravVerma3/arm-cortex-processor-compatibility-mode>`_ (詳細解說)
  - `Assembly language programming: ARM Cortex-M3<http://www.slideshare.net/GonzaloSantiago/assembly-language-programming-arm-cortexm3-vincent-mahout>`_

* 共筆: `FreeRTOS<http://wiki.csie.ncku.edu.tw/embedded/freertos>`_
* `淺談優先權,從 ARM Cortex-M 到 FreeRTOS 設定<http://enginechang.logdown.com/posts/248297-talking-about-the-priority-from-the-arm-set-cortex-m-to-freertos>`_
  - 什麼是 Interrupt?
  - NVIC (Nested vectored interrupt controller)
  - ARM Cortex-M 每個 Exception 都有自己的優先權
  - 不同架構有不同數量的優先權
  - FreeRTOS 的優先權
  - FreeRTOS 的 Tick/Timer

* `Introduction: the ARM Cortex-M3 Exception / Interrupt</embedded/arm-exceptions.pdf>`_
  - `Interrupt-Driven Input/Output<http://www.eng.auburn.edu/~nelson/courses/elec2220/Interrupt_IO%20part2.pdf>`_
    * Interrupt vectors and vector table
    * Interrupt masks and priorities
    * NVIC
    * STM32F4 external interrupt signals

  - 延伸閱讀: 共筆 `GPIO</embedded/GPIO>`_ + `ADC</embedded/ADC>`_ (找 NVIC)


作業須知 (Lab-40)
----------------
* 作業描述: `Lab 40</embedded/Lab40>`_
* 截止日期: Mar 28, 2015 (含) 之前