LoginSignup
0
1

More than 5 years have passed since last update.

[メモ] apache mynewt: Windowsでビルド

Last updated at Posted at 2016-07-28

概要

  • Windowsで。
  • フォルダーパスの仕切り文字で問題が。。
    • \ => / とりあえず置換。
  • -Dhogehoge=\"barbar\"というとこでも問題が。
    • /"=>\"に戻す。

手順

Windows向けツールのインストール (スペースの入らないフォルダへ)

# 今回使用したもの: Git-2.9.2-64-bit.exego1.6.3.windows-amd64.msigcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe

ファイルの準備とパッチ当て

  1. Git Bash起動
    mynewt_win01.png

  2. 以下、実行

    以下こぴぺ
    # HOMEはおそらく、C:\Users\<User名>
    echo $HOME
    cd $HOME
    mkdir -p dev/go 
    cd $HOME/dev/go
    export GOPATH=`pwd`
    export PATH=$GOPATH/bin:$PATH
    #
    #
    go get mynewt.apache.org/newt/...
    #
    cd src/mynewt.apache.org/newt/newt/
    
  3. パッチを当てて、
    vi vendor/mynewt.apache.org/newt/util/util.go

    vendor/mynewt.apache.org/newt/util/util.go
    log.Debug(cmdStr)
    //#mt08:以下2行追加..
    cmdStr = strings.Replace(cmdStr, "\\", "/", -1)
    cmdStr = strings.Replace(cmdStr, "/\"", "\\\"", -1)
    
    cmd := exec.Command("sh", "-c", cmdStr)
    

    vi vendor/mynewt.apache.org/newt/util/util.go

    cli/project_cmds.go
    ...
    //"os"  #コメントアウト
    .
    .
    .
    //#mt08:Shellでrmを呼ぶことで対応
    //if err := os.RemoveAll(newDir + "/" + "/.git/"); err != nil {
    if _, err := util.ShellCommand("rm -rf "+ newDir + "/.git/"); err != nil {
        NewtUsage(cmd, err)
    }
    ...
    
  4. newtをビルドする

    cd $HOME/dev/go/src/mynewt.apache.org/newt/newt
    go install
    

ビルド: 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
    
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1