發表文章

目前顯示的是 4月, 2013的文章

文章總列表

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, 其實還是能幹活兒 就算有JT

Cortex-M3 foreword

圖片
某天晚上, 我在露天拍賣打了關鍵字搜尋"ARM", 系統給了我一堆實驗板的資料 這堆板子現在大陸一堆人做, 價格低廉功能強大, 不知為何, 我很想要一片Cortex-M3 最後我看上一片 NXP LPC1768 的板子,  上面的周邊不少 Cortex M3 @ 100Mhz, 512KB Flash, 64KB SRAM     USB 2.0 Host/Device/OTG     Ethernet Controller     SD card     2.8" TFT-LCD with touch panel 記得玩單晶片, 最愉快是搞定一個又一個周邊, 看到程式與真實世界的互動 修實驗課時, 就算只是點亮一顆LED, 控制閃爍的速度, 都讓我激動不已 這樣的經驗陪著我在多顆CPU上不停的複製, 同時我也發現, 其實問題的本質沒有改變 IC上的周邊就是那些, 單晶片要控制的對象不外乎UART/SPI/I2C/GPIO/USB ... 改變的只是toolchain不同的寫法, CPU有些許不同, 概念都是類似的 但是這顆IC竟然整合了Ethernet... 這個就有點不大尋常 另外在arduino project看到有人用單晶片整合了藍牙, 甚至WiFi 我想關鍵是通訊功能, 如果單晶片以後都能和Internet整合, 似乎會有些有趣的應用 另外從ARM7/9到Cortex-M3, 到底CPU會有什麼進化, 過去的麻煩事, 現在會怎麼被解決? 從以前到現在, 我看了不少CPU architecture 很多我覺得"只能這麼做"的事, 在某些架構經常看到更精巧的解法 這真的是人類智慧的結晶, 工程師努力的結果, 感嘆之餘, 也希望自己能不停進步 ---- 總歸一句話, 好奇 想知道以前不知道的事, 想成為真正的高手, 我相信他會帶給我無窮的樂趣 這系列的文章預計會寫下我和板子打交道的紀錄, 以及讀書心得, 記載這一次的旅程