Expand description
§cyw43-setup
Wrapper de commodité au-dessus de cyw43-firmware.
cyw43-firmware inclut les blobs binaires du CYW43439 mais n’expose aucune API Rust alignée.
Cette crate expose FW, CLM, NVRAM et BTFW comme constantes statiques directement utilisables avec cyw43.
Projet communautaire non-officiel. Non affilié à Raspberry Pi Ltd, Broadcom ou Infineon, pensé uniquement pour améliorer l’expérience développeur et simplifier l’intégration.
§Le problème résolu
Avant dans chaque projet :
// Cloner le repo firmware manuellement, gérer les chemins relatifs...
let fw = aligned_bytes!("../cyw43-firmware/43439A0.bin");
let clm = aligned_bytes!("../cyw43-firmware/43439A0_clm.bin");
let nvram = aligned_bytes!("../cyw43-firmware/nvram_rp2040.bin");Après avec cette crate qui wrappe la crate cyw43-firmware :
use cyw43_setup::{FW, CLM, NVRAM};
// C'est tout.§Aucun repo à cloner, aucun chemin relatif à gérer, aucun aligned_bytes!, aucun binaire à copier.
Ajoute la dépendance dans Cargo.toml et c’est prêt.
§📦 Installation
[dependencies]
cyw43-setup = "0.1"
cyw43 = "0.3"Pour le support Bluetooth :
[dependencies]
cyw43-setup = { version = "0.1", features = ["bluetooth"] }§🚀 Utilisation
#![no_std]
#![no_main]
use embassy_executor::Spawner;
use cyw43::JoinOptions;
use cyw43_setup::{FW, CLM, NVRAM};
#[embassy_executor::main]
async fn main(spawner: Spawner) {
let p = embassy_rp::init(Default::default());
// ... init PIO, SPI, etc. ...
let (net_device, mut control, runner) =
cyw43::new(STATE.init(cyw43::State::new()), pwr, spi, &FW, &NVRAM).await;// & est requis car cyw43::new attend une référence alignée
spawner.spawn(cyw43_runner_task(runner)).unwrap();
control.init(CLM).await;
control.join("mon-wifi", JoinOptions::new(b"mon-mdp")).await.ok();
}§Constantes exposées
| Constante | Feature | Type | Usage |
|---|---|---|---|
FW | wifi (défaut) | Aligned<A4, [u8; 231077]> | cyw43::new(..., &FW, NVRAM) |
CLM | wifi (défaut) | &[u8; 984] | control.init(CLM).await |
NVRAM | wifi (défaut) | Aligned<A4, [u8; 742]> | cyw43::new(..., &FW, &NVRAM) |
BTFW | bluetooth | &[u8; 6164] | firmware Bluetooth |
§⚠️ Licences firmware
Les blobs 43439A0.bin, 43439A0_clm.bin et nvram_rp2040.bin sont la propriété de
George Robotics Pty Ltd. Sources :
Ils sont disponibles sous deux licences au choix :
| Licence | Usage |
|---|---|
LICENSE.RP | Utilisation avec matériel RP2040/RP2350 uniquement |
LICENSE.NC | Utilisation non-commerciale uniquement |
➡️ Pour un usage Pico W / Pico 2W personnel : tu es couvert par les deux.
§🛡 Licences
| Composant | Licence |
|---|---|
| Code Rust de cette crate | Unlicense (domaine public) |
Wrapper cyw43-firmware | Unlicense |
| Blobs firmware | George Robotics Pty Ltd (LICENSE.RP / LICENSE.NC) |
§À propos
Développé par Jorge Andre Castro.
Tout crédit revient à KizzyCode / George Robotics / embassy-rs pour les blobs firmware et le wrapper original.