[メモ] 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
ファイルの準備とパッチ当て
-
以下、実行
以下こぴぺ# 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.golog.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
newt
がフルに動いていた..OsTickのパッチ。あとで検討
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
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
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
Author And Source
この問題について([メモ] apache mynewt: Windowsでビルド), 我々は、より多くの情報をここで見つけました https://qiita.com/mt08/items/e8b53851b6c2efdc385b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .