2024年11月号特集「ゼロから作るマルチコアOS」特設ページ

ダウンロード・データ

関連ファイル(Try Kernelソースコード+アプリケーション)一式

第1部 Appendix 1 tasks.json,launch.json

Try Kernelを配布しているGitHub

 

記事内のコマンドライン・URL

第1部 Appendix 1 マルチコアOSの開発環境

● 各種開発ツールのインストール

Node.js https://nodejs.org/en
xpm https://xpack.github.io/xpm/
The xPack GNU Arm Embedded GCC
https://xpack.github.io/dev-tools/arm-none-eabi-gcc/
The xPack Windows Build Tools
https://xpack.github.io/dev-tools/windows-build-tools/
The xPack OpenOCD
https://xpack.github.io/dev-tools/openocd/

注:xPackのツールをインストールした後にはxpacks\.binにPATHを通してください.参考:https://xpack-dev-tools.github.io/arm-none-eabi-gcc-xpack/docs/install/ のInstall into the project→PATH setup

● インストールの確認

arm-none-eabi-gcc --version
make --version
arm-none-eabi-gdb --version
openocd --version

● CMSIS-SVDファイルの入手

https://github.com/raspberrypi/pico-sdk/blob/master/src/rp2040/hardware_regs/RP2040.svd

● VSCode

https://code.visualstudio.com/download

● Eclipse

https://www.eclipse.org/downloads/packages/

● プログラムのデバッグ

[Config option]
-f interface/cmsis-dap.cfg -target/rp2040.cfg

 

記事の補足

 (1) 第1部 Appendex 1 マルチコアOSの開発環境

 

環境によってはVSCodeからビルドを行うときに下記のようなメッセージが出てビルドができないことがあります(makeで実行すべきコマンドがそのまま画面に出力されている).

'Building file: ../boot/boot2.c'; arm-none-eabi-gcc -mcpu=cortex-m0plus
 -mthumb -ffreestanding -std=c99 -O0 -g3 -I"../include" -MMD -MP
 -MF"boot/boot2.d" -MT"boot/boot2.o" -c -o "boot/boot2.o"
 "../boot/boot2.c"; echo 'Finished building: ../boot/boot2.c'; echo ' '
(中略)
 * ターミナル プロセス "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
 -Command make all" が終了コード 1 で終了しました。

 

Makefileの先頭で下記のようにsh.exeを呼び出すよう設定するとビルドできます.

 

SHELL := sh

 

 

記事の訂正

 (1) 第1部 Appendex 1 マルチコアOSの開発環境

「リスト2 Try Kernel 2.0(シングルコア版)のsources.mk」に,以下のように3ファイル(interrupt.c, gpio.c, messagebuf.c)を追加してください.第1部のmakefileとしては問題ありませんが,第2部以降の記事やメッセージ・バッファが含まれる場合にビルドできないことがあります.

------------------------------------------------------
CSRCS = \
(一部省略)
kernel/interrupt.c \
kernel/gpio.c \
kernel/messagebuf.c \
(一部省略)
application/usermain.c 
------------------------------------------------------

(2) 第2部第3章 割り込み機能を使ってみる

 

(2-1) 「リスト1 ECHO信号の割り込みハンドラ」を以下のように訂正します(ウェブで配布しているプログラムは修正済みです)

(誤)
/* ECHO割り込みエッジH */
#define INTNO_ECHO_EDGE_HIGT 19
/* ECHO割り込みエッジL */
#define INTNO_ECHO_EDGE_LOW 18
(正)
/* ECHO割り込みエッジH */
#define INTNO_ECHO_EDGE_HIGT 21
/* ECHO割り込みエッジL */
#define INTNO_ECHO_EDGE_LOW 20

 

(2-2) 本文を以下のように訂正します

(誤) ECHO端子からの信号による立ち上がりエッジの割り込みはINTR1レジスタのビット19,立ち下がりエッジの割り込みは同じレジスタのビット18にセットされます.

(正) ECHO端子からの信号による立ち上がりエッジの割り込みはINTR1レジスタのビット21,立ち下がりエッジの割り込みは同じレジスタのビット20にセットされます.

 

(2-3) 「リスト2 センサ制御タスク」を以下のように訂正します(ウェブで配布しているプログラムは修正済みです)

 

(誤) tim_val = tim1 – tim0;
(正) tim_val = tim2 – tim1;