發表文章

目前顯示的是 9月, 2016的文章

How to burn mbed BIN image to NXP LPC1114FN28 using Flash Magic

NXP LPC1114FN28 , Cortex-M0 48MHz, DIP-28, 很合適用麵包板來做實驗, 而且只要美金2塊錢, 當然在台灣買還要運費等等, 不過加一加也可以找到賣家願意用台幣100多塊的價錢賣的。Switch Science有賣一個開發板mbed LPC1114FN28, 這個板子主要是讓這顆晶片可以透過USB接頭連到電腦上, 然後就可以當做隨身碟一樣, 在電腦上直接把編譯好的程式, 施拉進去, 直接做燒錄動作。可是這個板子, 要美金20塊錢, 台灣可以找到賣家賣台幣1000多塊錢。我覺得很貴! 不如把這些錢, 拿來多買幾顆LPC1114FN28。 不過, 只單買晶片, 就要自己用麵包板稍微接一下線, 才會動哦! 不過, 也不會很難, 其實也容易的很, 請參考ARM網站的這一篇: getting-started-with-mbed-lpc1114/ 文章中提到用UART ISP的方法, 只要買一個USB-UART的模組, 再配合NXP自己的Flash Magic工具程式就可以燒錄編譯好的HEX檔。這很好, 大部份開發工具鏈都可以輸出HEX格式。只有mbed線上編譯器只輸出BIN檔! 文章中也提到解決方法, 就是用一支BIN2HEX的轉檔程式, 把BIN檔先轉成HEX, 再丟給Flash Magic去燒就好了。太好了! 可惜,這個下載點進不去了!哦!哦! 只好另外找了! http://srecord.sourceforge.net/ 我試了一下: c:\> srec_cat.exe mbed_blinky_LPC1114.bin -binary -o blinky.hex -intel --line-length=44 可以! 成功的把mbed online compiler產生的檔案丟過去了。

ARM Cortex-M0 UartGets()筆記

圖片
The Definitive Guide to the ARM Cortex-M0 中文版, 目前讀到p.15-19 談到如何讓UART在NXP LPC1114動起來,而且在重定向之後, 自己修改程式,來解決scanf()的問題,最重要的就是UartGets() 試了一下程式執行的結果,和預期不一樣,按倒退鍵,不會倒退,按del鍵,結果出現的是 [3~。想說作者很好心,很次都會故意出一些小錯誤,讓我們讀者可以玩玩找問題的遊戲。這樣不但多了一些樂趣,也可以有更深刻的體驗。後來發現不是,其實是使用的Terminal軟體不同,或者其設定不同,就會造成這些問題。 我使用Putty,預設的設定: 開除錯去看: 按倒退鍵,出現127,預期是8 按ESC,出現[3~(三個鍵),預期是27 按del,出現27,預期是沒有動作或反應 修改Putty的設定後,行為就符合預期了: int UartGets(char dest[], int length) { unsigned int textlen=0; // Current text length char ch; // current character do { ch = UartGetc(); // Get a character from UART switch (ch) { case 8: // Back space if (textlen>0) { textlen--; UartPutc(ch); // Back space UartPutc(' '); // Replace last character with space on console UartPutc(ch); // Back space again to adjust cursor position } break; case 13: // Enter is pressed dest[textlen] = 0; // null terminate UartPutc(ch); // echo typed character break; case