[备忘录] Apache Mynewt:在Windows上构建

总结

    • Windowsで。

 

    • フォルダーパスの仕切り文字で問題が。。

\ => / とりあえず置換。

-Dhogehoge=\”barbar\”というとこでも問題が。

/”=>\”に戻す。

步驟

在Windows系统上安装工具(安装到不含空格的文件夹中)

git for Windows => C:\Tools\Git

golang => C:\Go にインストール

gcc4.9ベースのARMクロスコンパイラ(arm-none-eabi) => C:\Tools\arm_none_eabi\にインストール

SRecord For Windowsから、1.64 > srecord-1.64-win32.zipをダウンロード、srec_cat.exeを取得して、どこかPATHの通ったところにおいておく。(C:\Tools\arm_none_eabi\binとかにいれちゃう?)

本次使用的工具有:Git-2.9.2-64-bit.exe、go1.6.3.windows-amd64.msi和gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe。

准备文件并应用补丁

mynewt_win01.png

构建:BLENano的L闪光

あとは [メモ] mynewt:BLENanoでLチカとおなじ。

cd $HOME/dev
rm -rfv myproj
#
newt new myproj
cd myproj
#
#vi project.yml
# `project.yml`の`0-latest` => `0.0.0`に変更することで、developブランチから持ってくる.
sed -i ‘s/0-latest/0.0.0/’ project.yml
#
newt install -v
# ファイルは、nrf51dkから持ってくる..そうしないとリンクエラーになる..
cd repos/apache-mynewt-core/hw/bsp/nrf51-blenano/
cp -v ../nrf51dk/*.ld ./.
cp -v ../nrf51dk/src/*.c ./src
cp -v ../nrf51dk/include/bsp/*.h ./include/bsp/
#
# vi include/bsp/bsp.h
## – include/bsp/bsp.h___21から19に変更。
## //#define LED_BLINK_PIN (21)
## #define LED_BLINK_PIN (19)
sed -i ‘s/(21)/(19)/’ include/bsp/bsp.h
#
#
cd $HOME/dev/myproj
#
# ターゲット作成.
#Lチカ アプリ.
newt target create blink_blenano
newt target set blink_blenano app=apps/blinky
newt target set blink_blenano bsp=@apache-mynewt-core/hw/bsp/nrf51-blenano
newt target set blink_blenano build_profile=debug
# ブート.
newt target create blenano_boot
newt target set blenano_boot app=@apache-mynewt-core/apps/boot
newt target set blenano_boot bsp=@apache-mynewt-core/hw/bsp/nrf51-blenano
newt target set blenano_boot build_profile=optimized
# 確認.
newt target show
# ビルド
newt build blenano_boot
newt build blink_blenano
# 署名?して、イメージ作成
newt create-image blink_blenano 1.0.0
#
# HEX イメージ作成.
srec_cat bin/blenano_boot/apps/boot/boot.elf.bin -binary -offset=0x0 -o boot.hex -intel
srec_cat bin/blink_blenano/apps/blinky/blinky.img -binary -offset=0x8000 -o img.hex -intel
srec_cat boot.hex -intel img.hex -intel -o img_OUT.HEX -intel –line-length=44

=> img_OUT.HEX を焼く。。 (修正されてなければ、5秒毎に点灯・消灯)

其他

    • なんか、重たいと感じて、タスクマネージャみたら、(ゾンビの)newtがフルに動いていた..

OsTickのパッチ。あとで検討

hw/mcu/nordic/nrf51xxx/hal_os_tick.c
void
os_tick_init(uint32_t os_ticks_per_sec, int prio)
{
uint32_t ctx;
uint32_t mask;

//
os_ticks_per_sec *=8; //##mt08:2016-07-2x ぱっち… 約一秒くらいになった。
//
assert(RTC_FREQ % os_ticks_per_sec == 0);

lastocmp = 0;
timer_ticks_per_ostick = RTC_FREQ / os_ticks_per_sec;

120回の os_time_delay(1000) が、ストップウォッチ(実時間)約117秒だった。
32.768kHZのXtalがのってる => 32768kHz
1msecを32クロックとしてないか?(0.768は誤差???)
(32000/32768) * 120 => 117.1875 … むむむ??

サンプルアプリのビルド

myproj/repos/apache-mynewt-core/hw/bsp/nrf51-blenano/nrf51dk.ld の FLASHのサイズ(LENGTH)をおおきくしとく。=>
FLASH (rx) : ORIGIN = 0x00008000, LENGTH = 0x2b800

bletiny
newt target create bletiny_blenano
newt target set bletiny_blenano app=@apache-mynewt-core/apps/bletiny
newt target set bletiny_blenano bsp=@apache-mynewt-core/hw/bsp/nrf51-blenano
newt target set bletiny_blenano build_profile=debug
#
newt build bletiny_blenano
#
newt create-image bletiny_blenano 1.0.0
# HEX イメージ作成.
srec_cat bin/blenano_boot/apps/boot/boot.elf.bin -binary -offset=0x0 -o boot.hex -intel
srec_cat bin/bletiny_blenano/apps/bletiny/bletiny.img -binary -offset=0x8000 -o img.hex -intel
srec_cat boot.hex -intel img.hex -intel -o img_OUT.HEX -intel –line-length=44

bleuart
newt target create bleuart_blenano
newt target set bleuart_blenano app=@apache-mynewt-core/apps/bleuart
newt target set bleuart_blenano bsp=@apache-mynewt-core/hw/bsp/nrf51-blenano
newt target set bleuart_blenano build_profile=debug
#
newt build bleuart_blenano
#
newt create-image bleuart_blenano 1.0.0
# HEX イメージ作成.
srec_cat bin/blenano_boot/apps/boot/boot.elf.bin -binary -offset=0x0 -o boot.hex -intel
srec_cat bin/bleuart_blenano/apps/bleuart/bleuart.img -binary -offset=0x8000 -o img.hex -intel
srec_cat boot.hex -intel img.hex -intel -o img_OUT.HEX -intel –line-length=44

广告
将在 10 秒后关闭
bannerAds