Microbit용 CMSIS-RTOS 구축
하고 싶은 일
qemu에서 마이크로비트를 이동해서 구축한 CMSIS-RTOS입니다.
컨디션
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2018-q2-update) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ qemu-system-arm --version
QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.8)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
코드
다음 2개를 활용하면 구축이 가능합니다.
_start
이후 처리도 가능하다.mdk/gcc_startup_nrf51.S210 줄당의 아래 부분.
/* Call _start function provided by libraries.
* If those libraries are not accessible, define __START as your entry point.
*/
#ifndef __START
#define __START _start
#endif
bl __START
_start
이후 처리된 코드는 newlib의libgloss/arm/crt0.S에 있다.newlib 구축
newlib도 구축됐다.
이 원본은 arm gcc 안에 포함되어 있다
원본 코드 집합을 다운로드하고 구축 스크립트를 보십시오
다음 옵션은 configure,make입니다.
각 옵션의 뜻은 여기 Docs에 나와있어요.이다.
# build-toolchain.sh 380行目あたり
saveenvvar CFLAGS_FOR_TARGET '-g -Os -ffunction-sections -fdata-sections'
rm -rf $BUILDDIR_NATIVE/newlib-nano && mkdir -p $BUILDDIR_NATIVE/newlib-nano
pushd $BUILDDIR_NATIVE/newlib-nano
$SRCDIR/$NEWLIB_NANO/configure \
$NEWLIB_CONFIG_OPTS \
--target=$TARGET \
--prefix=$BUILDDIR_NATIVE/target-libs \
--disable-newlib-supplied-syscalls \
--enable-newlib-reent-check-verify \
--enable-newlib-reent-small \
--enable-newlib-retargetable-locking \
--disable-newlib-fvwrite-in-streamio \
--disable-newlib-fseek-optimization \
--disable-newlib-wide-orient \
--enable-newlib-nano-malloc \
--disable-newlib-unbuf-stream-opt \
--enable-lite-exit \
--enable-newlib-global-atexit \
--enable-newlib-nano-formatted-io \
--disable-nls
make -j$JOBS
make install
GDB
Visual Studio Code를 자주 사용하고 있으며 디버깅 설정에 대해 살펴보겠습니다.
launch.다음 내용의 json을 준비했습니다.
요점은 설정
"miDebuggerPath": "arm-none-eabi-gdb",
과 "miDebuggerServerAddress": "localhost:1234",
이다.그 다음은 거의 기본 설정입니다.{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "microbit debug",
"type": "cppdbg",
"request":"launch",
"program": "${workspaceFolder}/build/main.elf",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "arm-none-eabi-gdb",
"miDebuggerServerAddress": "localhost:1234",
"setupCommands": [
{
"description": "Enable gdb reformatting",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
}
qemu
다음에 qemu를 시작하면 Visual Studil Code에서 디버깅을 수행합니다.
디버거(arm-none-eabi-gdb)가 시작됩니다.
$ qemu-system-arm -M microbit -device loader,file=main.hex -s -S
총결산
다음은 부팅 후 LED가 깜박이기 전의 환경을 요약한 것이다.
Reference
이 문제에 관하여(Microbit용 CMSIS-RTOS 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/saitoyutaka/articles/9d20e566f1ed8fdee0e0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)