[참고] 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 (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

      파일 준비 및 패치


    • Git Bash 시작

    • 이하 실행

      이하 코피페
      # 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/
      


    • 패치를 맞추고,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)
      }
      ...
      

    • 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
      

    좋은 웹페이지 즐겨찾기