文章總列表

Cortex-M3 vol.1 開發環境

每次拿到新板子, 其實都有一道天險: 架環境
因為一件事通常有多種方法能達成, 開發者必須做選擇

教學的文章很多, 但是寫出為什麼這麼做的文章比較少
我想在這篇文章列出我做的選擇, 還有可能的選項, 以及我為什麼這麼選

----

IDE(Keil) vs command line(GCC)


Keil




開發環境的部分, 我使用Keil ARM, 這套toolchain從8051時代就很紅了, 簡單好用
後來他被ARM買下來, 等於是官方版的IDE
在網站上有試用版可以下載, code size最大可以用到32kb

我買的開發板附的光碟就有Keil ARM (當然是盜版), 真的是不怕被抓耶 (暈)
我想ARM真正的目標是推廣CPU, 建立eco-sys, 所以提供開發工具只是剛好而已

我在官網抓了試用版, 裡面包括大量的範例, device database, startup code, header files
這套開發工具真的幫開發者做掉很多事, 內建的simulator也非常好用
初學者建議用Keil, 在google打上關鍵字, 很快就能找到解法

我的目的是儘快搞定開發環境, 所以我選擇用Keil

Command Line
另外一條路是直接面對所有的細節, 撰寫Makefile直接呼叫armcc or gcc編譯程式
自己規劃memory map, 寫在linker script裡
產生出來的ELF檔, 再自己透過read_elf抽出code/data segment, 然後下載到IC裡

走這條路, 閱讀文件大量文件能培養英文閱讀能力, 還能知道為什麼要這麼做
做到這樣以後, 看懂IDE裡, 每一個option的意義其實還滿爽的
我一直覺得搞定toolchain也是重要的能力之一, 因為IDE隱藏太多細節

如果走這條路, 我推薦CodeSourcery出的gcc toolchain, 商業公司品質有保障卻可以免費用

----

JTAG


沒有JTAG的時候

一般單晶片都可以透過COM port下載程式進去跑, 直接看會不會動, 一番兩瞪眼
只要能打通boot code, 以及UART, 接下來再寫個printf, 其實還是能幹活兒
就算有JTAG, 這招還是很好用, 反正printf()永遠是debug的好朋友

有JTAG能做什麼
這裡有一篇之前的文章, 說明JTAG大致運作的原理 (Cortex-M3已經不是這麼做)
他能停下CPU, 單步執行, 設定斷點, 觀察記憶體, registers, 燒寫Flash
基本上, 用過了就回不去了

我推薦Segger的J-Link, 可以跑在12Mhz, 和Keil的整合度好, 快又好用
以前用過盜版的硬體, 實在是吃足苦頭, 還曾經re-work J-link的板子

    "勿在浮沙築高台"

J-link EDU物美價廉(2000NTD), 一般人都買得起 (沒有買盜版的理由了)
可以在mcuapps就買得到, 或著mouser/digikey也有
開發工具的穩定度真的很重要, 如果連JTAG都不可信賴, 真的是很折磨人...


高檔的JTAG
因為工作, 我也用過一些高檔的JTAG, 速度飛快, 動輒50Mhz起跳 (J-Link只有12Mhz)
這些高檔貨, 裡面的CPU快很多, 通常會有個自己專用的IDE, 可以在裡面debug
和J-Link相比, 用起來其實也差不多, 也沒有比較厲害


----

開發板, JTAG, 加上開發環境, 就是整個開發環境的全貌了
準備好這些東西, 就可以開工了

留言

這個網誌中的熱門文章

STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收

幼犬書桌椅選擇心得 升降桌 兒童桌椅

CANON G3000 廢墨瓶改裝