Pi Pico でマルチコアを使ってみる(base)
コア 1 に別の 8K スタックを割り当てて、両方のコアで 8K スタックを利用できるようにするには、スケッチで次の変数を定義して true に設定するだけです。 bool core1_separate_stack = true; 他のボードの環境下(例:ArducamPico4ML)だと以下の様にmulticoreライブラリをincludeして使います。この場合はCore0からCore1を起動しています(pico-SDK のC/C++ のコードと同じ)。
#include "pico/stdlib.h" #include "pico/multicore.h" void core1_entry ( ) < Serial . begin ( 115200 ) ; Serial . println ( "core 1" ) ; sleep_ms ( 1000 ) ; void setup ( ) <multicore_launch_core1 ( core1_entry ) ; // Start core 1 - Do this before any interrupt configuration
Serial . println ( "core 0" ) ; sleep_ms ( 100 ) ;C/C ++ SDK
pico-sdkのインストール
sudo apt update sudo apt install - y build - essential cmake gcc - arm - none - eabi git curl mkdir ~ / pico git clone https : //github.com/raspberrypi/pico-sdk cd pico - sdk git submodule update -- init echo "export PICO_SDK_PATH=$HOME/pico/pico-sdk" >> ~ / . bashrcpico-examplesをクローン してcmakeまでやっておき、makeは各サンプルで個別に実行することにします。
git clone https : //github.com/raspberrypi/pico-examples.git --branch master cd pico - examples mkdir buildマルチコア でHello Core 1 とCore 2 をやってみます。
Hello World サンプルではUSBのシリアルからそのままメッセージを取れるので便利で確認しやすいです。
#include "pico/multicore.h" void core1_entry ( ) < // Core1で動作させる処理 // main関数はCore0で動作する // Core1でcore1_entry関数を動作させる multicore_launch_core1 ( core1_entry ) ; // 以下Core0で動作させる処理まず、Hello World のソースを改変します。
~/pico/pico-examples/hello_world/usb/hello_usb.c
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd. * SPDX-License-Identifier: BSD-3-Clause #include "pico/stdlib.h" #include "pico/multicore.h" void core1_entry ( ) < while ( true ) < printf ( "Hello, core1!\n" ) ; sleep_ms ( 2000 ) ; //init USB port stdio_init_all ( ) ; multicore_launch_core1 ( core1_entry ) ; while ( true ) < printf ( "Hello, core0!\n" ) ; sleep_ms ( 1000 ) ;~/pico/pico-examples/hello_world/usb/CMakeLists.txt
target_link_libraries(hello_usb pico_stdlib pico_multicore)
cd ~ / pico / pico - examples / build / hello_world / usb~/pico/pico-examples/build/hello_world/usb/hello_usb.uf2
Arduino IDE インストール済ならシリアルモニターも簡単に使えます。
Arduino IDE がインストールされていない場合は、minicomを使ってみます。シリアルポートをモニターできます。
sudo apt install minicom - y minicom - b 115200 - o - D / dev / ttyACM0MicroPython
ラズパイ4ではプレインストールされているThonny をMicroPython のコーディング環境に使います。
MicroPython の界隈ではマルチスレッドと呼んでいるようですが、Pico に限ってはThread = Core と考えていいようです。
import _thread Basic multi thread example from time import sleep import _thread def core0_thread ( ) : counter = 0 while True : print ( "core0:" + str ( counter ) + "\n" ) counter += 2 def core1_thread ( ) : counter = 1 while True : print ( "core1:" + str ( counter ) + "\n" ) counter += 2 second_thread = _thread . start_new_thread ( core1_thread , ( ) ) core0_thread ( )Next
Reference
Be the first to comment Leave a Reply コメントをキャンセル 新着・更新- ラズパイ5+Ollama + ローカルLLM + Difyでチャットボット+RAGを実行 2026年3月25日
- ラズパイ5にOllama + ローカルLLM + Dify を導入 2026年3月22日
- ラズパイ5にGPUを外付けしてローカルでLLMを動かしてみる(LLM編) 2026年3月19日
- ラズパイ5にGPUを外付けしてローカルでLLMを動かしてみる(GPU編) 2026年3月19日
- RP2040-Zero をUART経由でラズパイZeroから制御してみる(PWM制御ーメモ) 2026年1月21日
- USB赤外線リモコン ADVANCE を使ってみます に なかの人 より
- ExcelとGoogle Mapsで巡回セールスマン問題をやってみる(TSPソルバー) に WisteriaHill より
- ExcelとGoogle Mapsで巡回セールスマン問題をやってみる(TSPソルバー) に odagiri より
- docomo dtab Compact d-01 J を強制初期化 に WisteriaHill より
- docomo dtab Compact d-01 J を強制初期化 に えみり より
- ●OSMタイルサーバーにしたラズパイをWi-Fiのアクセスポイントにしてみる(改)
- ●Quantum GIS(QGIS)を使ってみよう
- ●シングルボードコンピューターにOpenStreetMapのタイルサーバーを立ててみる
- ●ラズパイ 4 Model B (Ubuntu 20.04 LTS Server)にQGIS3をインストール
- ●ラズパイで経路探索ーpgRoutingの構成ファイル(XML)について
- ●ラズパイにOpenStreetMapの最小構成タイル配信サーバをセットアップ
- ●ラズパイ(Ubuntu 20.04 LTS Server)で空間データベース(大阪編)
- ●ラズパイ(Ubuntu 20.04 LTS Server)にOpenStreetMapのタイルサーバーを構築
- ●ラズパイ(Ubuntu 20.04 LTS Server)にpgAdmin4をインストール
- ●ラズパイ(Ubuntu 20.04.1 LTS Server)- PHPでPostgreSQLに接続してクエリー発行
- ●ラズパイ(Ubuntu 20.04.1 LTS Server)でpgRoutingを使って経路探索
- ●AI用語 メモ
- ●Google VR Viewでホットスポットを使ってみる(on the web)
- ●勾配とテンソル(メモ)
Copyright © 2026 | WordPress Theme by MH Themes