星期三, 8月 26, 2015

NavSpark Mini初體驗


NavSpark是之前在indiegogo上集資成功的專案, 成品是Arduino+GPS, 32bit mcu, 並且體積相當小(大概就Arduino Nano的大小)

之後出了一片NavSpark mini, 是NavSpark的相容版, 硬體規格一樣, PCB更小, 當然pin out也比較少, 但是一些小專案應該夠用了, 而且還是內建GPS receiver (但是天線要外接)
現在原廠在推廣NavSpark mini, 索取一片只需要運費9usd, 非常划算.
我週五下單, 隔周三就到貨, 收的是國際運費, 但是用的是本地快遞(新竹寄到新竹), 就當作用運費贊助這間公司了(有附發票XD).



收到貨後有兩片PCB, 分別是NavSpark mini主板以及USB-UART轉板, 這片轉板是走Android手機常用的micro USB而非mini USB, 電平3.3V, 接上吃3.3V的NavSpark mini的剛剛好.
若是用自己的USB-UART轉板, 就要特別注意電壓的部分, 免得把NavSpark mini燒了

接著就是準備開發環境, 首選當然是Arduino IDE, 但是Arduino IDE原生是不支援NavSpark mini的, 你有兩種選擇:
  1. 從NavSpark官網下載支援的Arduino IDE 1.5.6 載點
  2. 從Boards Manager下載NavSpark的支援 NavSpark原廠說明
第一種我啟動不了, 第二種我可以用, 就懶得管第一種發生甚麼問題了...

按照原廠接線圖接好, 就可以用Arduino IDE燒錄了.
剛玩了一下就出問題, 怎麼樣都燒不進去



爬文之後才發現, NavSpark mini是可以選擇要不要燒GNSS library進去的(Global Navigation Satellite System).

如果燒錄時選擇不要GNSS library, 就不會有boot-loader(所以boot-loader是放在GNSS library裡面的....), 那下一次就無法讓Arduino IDE直接透過USB做燒錄的動作.
(我不懂這樣的邏輯是甚麼, 誰說不要GNSS就用不到boot-loader? )

The Non-GNSS library does not have boot-loader code within, thus program compiled with Non-GNSS library needs to run from recovery ROM mode to load code

NavSpark的boot方式有ROM Mode以及Flash Mode,  對應mcu韌體的載入來源.
如果沒有燒boot-loader到Flash, 就只能改用ROM Mode還原boot-loader,
為了改用ROM Mode, NavSpark mini的BOOT_SEL就身負這樣的重責大任

BOOT_SEL: Default unconnected, internally pulled-high, Venus822A runs program from internal Flash memory. Whenconnected to GND, Venus822A runs program from internal ROM memory. When improperly written user code hangsthe system, it would be necessary connect BOOT_SEL to GND and recover from ROM mode to load corrected code.
所以short BOOT_SEL到GND, 就可以讓NavSpark mini從ROM memory拉回原本預先燒好的code, 當然boot-loader也包含在內, 只要遵循以下的步驟:

1. Connect BOOT_SEL pin to GND to run program off internal ROM memory.
2. Check state of GPIO4 and GPIO5, these two pins determine baud rate used for UART1 (USB) communication when
booting from internal ROM memory. See next section on how to set command and code upload baud rate to use
for Arduino IDE in case GPIO[5:4] connected to differ from default 2’b11.
GPIO[5:4] = 2’b00 for 9600
GPIO[5:4] = 2’b01 for 4800
GPIO[5:4] = 2’b10 for 38400
GPIO[5:4] = 2’b11 for 115200 (default)
3. Press the reset button and release it to restart the LEON3 processor.
4. Use Arduino IDE to do the code upload procedure with the correct binary code.
5. Once code upload completes, disconnect BOOT_SEL from GND to run from Flash memory, press the reset button
and release it to restart.

到此應該可以正常燒錄了?!
其中標示紅色的第二步驟最為重要, 由於GPIO4/5決定ROM Mode的baud-rate, 在不設定的狀況是被認定為接地的, 所以預設的baud-rate會是9600, 用Arduino IDE因為baud-rate設定不同事無法燒錄的.
因此需要在未上電的狀況下, 將GIPO4/5接在3.3V再上電, 確保GPIO[5:4]是在高電位讓baud-rate設定在115200bps.
若已經上電再去接GPIO4/5後reset是沒有效果的.

如果用不到GNSS library, 這樣每次燒錄就是要不斷的short BOOT_SEL, reset... 燒錄....
如果不差GNSS library佔掉的記憶體的話, 我看燒錄還是直接放GNNS library進去吧...

[附註] NavSpark Error code對應的意義(參考這裡):
1 - Can't open firmware binary file.
2 - Parameter error, unsupported baud rate.
3 - Can't open COM port.
4 - Sent download command but receive no ACK response
6 - Loader program sent binary file size command but receive no ACK response
7 - Sent firmware in 8KByte block but receive no ACK response
8 - No END command received, denoting Flash checksum error

[資源]

10 則留言:

Jason Lin 提到...

謝謝分享使用心得!

BOOT_SEL 空接會從 Flash 模式跑起來, 不會認 GPIO4 與 GPIO5 的 baud rate 控制. 若 BOOT_SEL 接地, 開電或按 reset 鍵則會從 ROM 模式跑起來, 會認 GPIO4 與 GPIO5 的 baud rate 控制.

只要程式沒寫好當機都得把 BOOT_SEL 接地從 ROM 模式下載程式; 若程式沒當機, 就能 BOOT_SEL 空接直接從 Flash 模式下載程式.

比較 NavSpark-mini 與 NavSpark 線路, GPIO4 與 GPIO5 在 NavSpark-mini 板上少了 pull-up 電阻, 導致 BOOT_SEL 接地從 ROM 模式跑起來時 baud rate 變 9600. 若沒兩顆幾 K 歐姆的電阻能外掛 pull-high, 把 GPIO4 與 GPIO5 直接接到 VCC33, 從 ROM 模式跑起來 baud rate 就一樣是 115200 了.

LEON3 without GNSS Library 為了讓寫程式空間盡可能大, 只有 Arduino 的基本功能沒 loader. 要下載程式需要將 BOOT_SEL 接地從 ROM 模式做.

skyforce 提到...

感謝NavSpark團隊的熱心回應, 幫助我適應NavSpark ^^

Unknown 提到...

我想請教前輩關於購買上的問題
關於下訂單是直接向Navspark store 的商店內
直接創建帳戶
之後下單就能夠取得嗎?
並且還會附有發票?

因為小弟我專題製作想使用此電路板
但不知道如何購賣
並且希望器材能夠開出發票
好讓教授核銷

拜託前輩幫忙解說
或是提供其他管道
感謝你!!

skyforce 提到...

yes , 不過核銷可能會要求三聯, 這點就要您跟對方確認是否可開三聯發票了

Unknown 提到...

蝦這個我就不太清楚了@@
向他們訂購
他們不是國外廠商嗎?

完蛋了我是菜英文阿
最多只會右鍵"中文翻譯"...

skyforce 提到...

他們是台灣廠商啊 要不然怎麼會有統一發票~~ XD
先問問核銷需不需要一定要三聯吧, 如果只要二聯就沒這麼多問題了.

如果要三聯再打電話請問一下廠商, 統一發票那張圖上面有電話.

Unknown 提到...

真的嗎
好港動阿QAQ

Unknown 提到...

我打了電話是直接轉到留言信箱電話
老師說那個都不會回應的
看來是無望~

Alex 提到...

到商場發個留言就可以了,中文也可以。

http://navspark.mybigcommerce.com/contact-us/

Asion 提到...

因為boot-loader會占用一組UART來接收與發送command,GNSS模式本身就會占用一組來輸出NMEA,而non-GNSS模式就都開放給user使用所以就沒有支援boot loader了。畢竟NavSpark-mini只有唯一的一組UART,non-GNSS時還被占用可能會不太方便。

Mr.Color飛機模型用Color 與 水性AQUEOUS HobbyColor 對照表

          最近跟兒子一起研究長谷川的飛機模型, 其中說明書中採用的模型漆色號以Mr.Color硝基漆為主, 水性漆AQUEOUS 為輔. 很多Mr.Color有的顏色, AQUEOUS 都沒有, 前100的色號大致上都有對應到, 但Mr.Color 300號以後的都是特...