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

前言


前一陣子用python寫了一支 Windows 的 Console 程式: 因為需要為程式的輸出訊息加一點顏色而小小的 '卡' 了一陣子; 上個月底終於把它解決了, 特別記錄一下免得日後給忘了.

為 Console 輸出上色


這個 Console 上色的問題, 因為不是主要的功能, 所以一開始只解決了一半, 就一直放著: 輸出 ANSI Terminal 的控制碼可以在 git for windows 的bash視窗上更改輸出訊息的顏色; 但是一換到 Windows CMD Console 執行時這些 ANSI Terminal 的控制碼就完全沒有效果, 只是一五一十的印出來.

文章標籤

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

這個主題網路上很多人寫, 我原來不想 "參一咖". 不過今天因為整理開發環境, 重新翻看了一下以前的小抄, 並上網找了相關的資料, 又發現了一些新材料, 所以就順手匯整並補充一下.

這個問題可以分二部份來說:

  1. 不加裝字型的狀況下, 改用英文 Consolas 字型 (或其他等寬英文字型).
文章標籤

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

MSYS2 疑難雜症


這一篇會不定期附加新的問題解決方法. Enjoy it!

bash 介面亂碼


如果你的 bash shell 設定使用 locale:zh_TW, Character set:UTF-8, 那在使用一些 windows 的指令時, 往往都會出現亂碼, 你可以使用以下的指令 (將 windows console 切換為 utf-8 字集), 把大部份的問題解決:

文章標籤

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

在網頁中使用 Font Awesome 加一些圖形字元 (icon) 大概很多人都會: 下載 font awesome 提供的壓縮檔 (內含 fonts, CSS ...), 並放到 web server 上, 然後在網頁的前頭加上 <link> tag 來下載就完成了必要的準備工作.

<link type="text/css" rel="stylesheet" href="css/font-awesome.min.css" />

或者是直接使用 font awesome 提供的 cdn 連結也行.

文章標籤

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

前言


  • 現在的 git for windows 已經改用 MSYS2 當作執行環境的基礎了. 如果需要自己重新編譯 git for windows 的話, 也有 git for windows SDK 可用, 不再需自己重新由 MSYS2, GCC, git... 一路安裝設定, 接著還要下載原始程式, 上 patch, 才能開始編譯 git. 我以前自己試著作過一次, 結果是一關接著一關的卡, 卡關卡得非常嚴重... 不只是挑戰你對 unix/linux 環境及指令的了解, 更要具備對 GNU cygwin 開發環境的知識. 總之就是沒有神人帶你走過一遍真的很難順利把建置的環境弄好.
  • 日前想為 git for windows 加裝個python, 可是一直找不到直接給 MSYS2 用的, 只找到獨立安裝的 python for windows. 雖然一樣可以在 git for windows 的bash視窗中使用, 但是 git for windows SDK 裡明明就有python可用啊! 於是想到何不想辦法自行安裝這個版本的python呢? 但是問題來了 git for windows 內部沒有附pacman指令, 沒辦法像 git for windows SDK 或者是 MSYS2 那樣直接用pacman安裝. 於是再一次的找 Google 大神幫忙, 找到了 StackOverflow 這一篇 很快的就把它搞定了.

其實最重要的是裝了pacman之後呢, 發現有缺什麼工具或指令就可以直接安裝 MSYS2 的版本, 不必像以前那樣一定得找 Windows 原生的替代程式, 或是 GnuW32 的版本, 或是 Cygwin 的版本了.

Step 1: 安裝 pacman


  1. pacman的安裝檔我們可以從 MSYS2 的版本資料庫中下載到: 網站裡面有各個指令的 (多個版本的) .tar.xz壓縮的 tarball 安裝檔. 我們只要下載最新版的pacman就可以了.
文章標籤

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

今天在網上爬文, 無意間學到了 named initializer 這個到 C99 才出現的語法.

enum 的應用例子


先來看一個 enum 的應用例子:

文章標籤

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

連結


上一篇: 嵌入式系統之軟體架構-1 (Software Architecture of Embedded System)

下一篇: 嵌入式系統之軟體架構-3 按鍵掃描

文章標籤

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

C 語言的編譯器有一個內建的巨集 sizeof() 可以用來取得配置給變數的記憶體大小. 例如:

    uint32_t varX = 1234;
    int      size;

    size = sizeof(varX);

這樣變數 size 所存儲的數值就會是變數 varX 到底在電腦裡佔用了多大的記憶體. uint32_t 型態的變數 (沒有意外的話) 應該都會佔用 4 bytes.

文章標籤

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

我們開發嵌入式系統時總會需要修修改改. 不管是個人獨自創作, 多人小組協同開發, 或者是多家公司聯合團隊, 甚至是跨國合作, 理所當然的必需要有一套好用的版本控制軟體, 才能事半功倍. 而 git 正是這樣一套好用的分散式版控軟體, 重點是它還是個免費的.

這一篇記的是如何讓 ARM 的官方開發工具 Keil µVision IDE 在編譯程式的時候自動git 取得版本資訊, 省去人工修改的麻煩.

文章標籤

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

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() 吐出來的訊息 (除錯訊息或都系統訊息).

文章標籤

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

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

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

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

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

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼