[참고] apache mynewt: 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.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.cvoid
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
bleuartnewt 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
Reference
이 문제에 관하여([참고] apache mynewt: Windows에서 빌드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mt08/items/e8b53851b6c2efdc385b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)