嵌入式與韌體

在沒有MMU的小型微控制器上,關於堆疊使用過量,應注意的事項下列何者正確?

  1. A堆疊會自動無限擴大,所以不必在意
  2. B堆疊溢位時,一定會顯示錯誤畫面
  3. C堆疊溢位也不會立刻被偵測到,可能悄悄破壞相鄰的資料,因此要避免深層遞迴或大型區域陣列,並估算使用量
查看答案與解析

正確答案:C. 堆疊溢位也不會立刻被偵測到,可能悄悄破壞相鄰的資料,因此要避免深層遞迴或大型區域陣列,並估算使用量

在個人電腦的OS中,可在堆疊前方放置禁止存取的分頁來偵測溢位,但在沒有MMU的微控制器上多半沒有這種機制,堆疊一旦溢位,就會悄悄覆寫其前方的變數等。症狀會出現在別的地方,使得很難找出原因。要避免深層遞迴與大型區域陣列,並以工具估算最大使用量,或在堆疊的末端寫入標記,檢查是否遭到破壞。

  • A. 堆疊的大小有限。
  • B. 並沒有在畫面上顯示的機制。
  • C. 正確。容易成為原因難以判斷的缺陷。
練習這個領域 前往領域頁面

嵌入式與韌體的其他題目

  1. 在參考電壓3.3 V的12位元ADC中,讀取到的值為2048。輸入電壓最接近下列何者?
  2. 在微控制器以固定間隔大量擷取ADC轉換結果時,使用DMA的優點,下列何者正確?
  3. 以C語言的位元欄位(bit-field)結構來表示週邊電路的暫存器時,需要注意的地方下列何者正確?
  4. 在許多微控制器上,將不會變更的大型表格(字型資料等)加上const宣告,其優點下列何者正確?
  5. JTAG或SWD這類除錯用介面所能做到的事,下列何者正確?

這個領域的比較