公告版位
從小害怕寫作文, 文筆不佳到現在, 還請各位讀者大大:
1. 發現有錯誤, 請留言告知. (或者你 '覺得' 不對也行)
2. 用字措辭不當, 請留言告知.
3. 有看沒有懂? 幫到忙也好, 幫倒忙也罷, 總之留個言吧.

目前分類:Keil ARM C (2)

瀏覽方式: 標題列表 簡短摘要

前言


這一篇原本是 2017-12-21 寫的 (Pixnet 後台文章日期 2017-12-21 18:18:53), 但是因為後面一小段卡了, 一直沒發表. 後來因為工作內容轉為開發前台系統, 由於工作上有許多以前未接觸過的, 實在是空不下來, 也就很少有時間再碰 embedded system. 除非接手的團隊有問題回頭來請教, 非得要試一下才能給答案, 幾乎是沒機會再把它接上電源開起來. 所以它也就在未完成文章中趟了 4 年多, 今天就把後面一小段有關 std io 的 sample code 先拿掉, 作個小結. 發表出來. 至於有關 std io 的部份我想...就以後有緣再寫吧!?

關於 embedded system 的 C/C++


許多剛開始接觸 embedded system 的工程師常常會被 C 語言的底層搞得七葷八素. 最主要的是:

  • 弄不清楚到底 embedded system 的 C/C++ 和一般在 Windows PC 用的 C/C++ 到底有什麼差異?
  • 以及 (因為專案上的需要) 要如何才能把這些差異補起來?

在開始之前你一定先記住的是記憶體是稀缺資源, 一定不要浪費, 尤其是 local 變數區 (用到的是 STACK).

文章標籤

MagicJackTing 發表在 痞客邦 留言(0) 人氣()

JTAG vs. SWD/SWO


這幾年 Cortex-M 系列的 ARM 微控制器大行其道, 在開發工具上也有一些使用上的調整:

  • 以前的晶片除錯器 (debugger) 用的是 JTAG 介面標準, 可以多個 CPU/DSP 一起除錯.
  • Cortex-M 則主推 SWD 介面, 一個 debugger 一次只能除錯一個 MCU 晶片.
  • 以前 ITM 是標準配備, 現在則為選配.
  • SWD 介面還有另一個選配: SWO.

ITM 的晶片一般都可以繼續使用 JTAG 介面的除錯器. 有 SWO 功能則可以使用 trace tool 協助分析無法以單純設斷點可以找到的問題. 例如: STMicroelectronics 比較阿沙力, 所有 Cortex-M 系列的晶片都有內含 ITM, 也有 SWO 功能. 但是像 Nuvoton 的 Cortex-M MCU 則都只有 SWD (是的, 連 SWO 都沒有). 差別是:

  • STMicroelectronics 可以使用 JTAG 介面的除錯器, Nuvoton 則只能用 SWD 介面的除錯器.
  • 使用 Keil µVision 除錯時, semihost 的系統訊息一個是從原本的 'Debug (printf) Viewer' 視窗檢視 (由 View --> Serial Windows --> Debug (printf) Viewer 開啟). 沒有 ITM 的晶片則只能從虛擬的 'UART #1' 視窗檢視 (由 View --> Serial Windows --> UART #1 開啟)
  • SWO 可以輸出 Debug Trace Output 給 trace tool 分析問題. 沒有 SWO 則遇到難解的 bug, 只能用你的 '智力' 想辦法解決了.

關於 semihost


semihost 是開發 ARM MCU 應用時很好用的軟體工具. 硬體線路板上不必真的把 UART 的接腳接出來就可以由 debugger 接收 MCU 利用 printf() 吐出來的訊息 (除錯訊息或者系統訊息).

一般使用 semihost 可以有四種組合

文章標籤

MagicJackTing 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼