1 points par GN⁺ 22 시간 전 | 1 commentaires | Partager sur WhatsApp
  • ESP32-S31 est un microcontrôleur RISC-V 32 bits double cœur cadencé jusqu’à 320 MHz, destiné aux applications IoT avancées nécessitant une connectivité multiprotocole et une IHM riche
  • La connectivité combine le Wi-Fi 6 2,4 GHz, Thread et Zigbee basés sur IEEE 802.15.4, le Bluetooth 5.4 LE et le Bluetooth Classic, ainsi qu’un Ethernet MAC 1000 Mbps
  • Le système et la mémoire comprennent 60 GPIO, une MMU, 6,86 CoreMark/MHz, 512 KB de SRAM, une connexion PSRAM DDR 8 bits à 250 MHz, l’accès simultané à la flash et à la PSRAM, ainsi qu’une interface SPI dédiée compatible Octal SPI haut débit
  • L’IHM et l’audio associent une caméra DVP, des écrans LCD parallèles RGB/I8080/MOTO6800, un codec JPEG, PPA et 2D-DMA, jusqu’à 14 canaux tactiles, ainsi que la synchronisation audio Bluetooth matérielle du LE Audio basé sur LC3 et du double I2S
  • La sécurité et le logiciel incluent un TRNG, un PUF basé sur la RAM, secure boot, le chiffrement de la flash et de la PSRAM, des accélérateurs AES/RSA/ECDSA/ECC, TEE/APM, avec une intégration prévue avec ESP-IDF, ESP-Matter, ESP-BLE-AUDIO, ESP-GMF et ESP Private Agents

Vue d’ensemble

  • L’ESP32-S31 est un microcontrôleur RISC-V 32 bits double cœur haute performance, fonctionnant jusqu’à 320 MHz, ciblant les applications IoT avancées qui nécessitent une connectivité multiprotocole complète et une interface homme-machine riche
  • Avec ses 60 GPIO, il offre de la flexibilité pour les conceptions complexes intégrant plusieurs protocoles sans fil, diverses interfaces d’affichage et un large éventail de périphériques
  • Il convient aux charges de travail d’edge AI et de machine learning, avec une orientation vers l’inférence de réseaux neuronaux, le traitement avancé du signal, la vision par ordinateur et les applications audio intelligentes, dans l’efficacité propre à une plateforme embarquée

Connectivité et performances de traitement

  • Le Wi-Fi 6 2,4 GHz (802.11ax) vise à améliorer l’efficacité de transmission et à réduire la consommation d’énergie, ce qui en fait une option adaptée aux appareils sur batterie et toujours connectés
  • IEEE 802.15.4 permet les protocoles Thread et Zigbee, tandis que le Bluetooth 5.4 LE prend en charge LE Audio, Direction Finding et Bluetooth Mesh 1.1
  • Le Bluetooth Classic (BR/EDR) assure la compatibilité avec les appareils audio existants et les applications IHM à faible latence, tandis que l’Ethernet MAC 1000 Mbps fournit une connexion filaire stable et à haut débit
  • Le système repose sur une architecture RISC-V 32 bits double cœur avec prise en charge de la MMU, offrant 6,86 CoreMark/MHz de performances de traitement et 60 GPIO
  • L’un des cœurs dispose d’un chemin de données 128 bits et d’instructions SIMD pour accélérer le traitement parallèle
  • La mémoire se compose de 512 KB de SRAM, d’une connexion PSRAM DDR 8 bits à 250 MHz, d’un accès simultané à la flash et à la PSRAM, ainsi que d’une extension mémoire externe via une interface SPI dédiée compatible avec le mode Octal SPI haut débit

IHM et audio

  • L’entrée caméra utilise une interface caméra DVP 8 à 16 bits, tandis que les écrans LCD prennent en charge les interfaces parallèles RGB 8 à 24 bits, I8080 et MOTO6800
  • Les conversions entre RGB565, YUV422, YUV420 et YUV411 sont prises en charge, et les accélérateurs matériels du codec JPEG, de PPA et du 2D-DMA améliorent l’efficacité du traitement d’image et des mises à jour de l’affichage

1 commentaires

 
Avis sur Hacker News
  • Espressif cartonne vraiment, et il y a même des instructions SIMD dans le CPU
    Les cœurs RISC-V ont une vraie importance dans l’embarqué. En effet, compiler pour un SoC ne consiste plus à télécharger une toolchain et un SDK propriétaires à moitié cassés, mais se rapproche désormais d’une simple ligne comme rustup target add riscv32imac-unknown-none-elf
    Pour se lancer dans le développement embarqué moderne en Rust, on peut consulter https://kerkour.com/introduction-to-embedded-development-wit... et https://kerkour.com/rust-esp32-pentest

    • Les instructions SIMD, oui, mais il ne semble pas y avoir de virgule flottante matérielle. La description du module CORDIC pointe aussi vers des calculs en virgule fixe, ce qui est cohérent avec l’absence de toute mention de la virgule flottante
      Les modules CAN-FD et Motor PWM sont bienvenus, mais le temps de conversion ADC n’apparaît nulle part. En contrôle moteur, il faut un temps de conversion inférieur à 1 µs, et après environ 15 ans de reports, on est passé l’an dernier de la virgule fixe à la virgule flottante
    • Malgré tout, dès qu’on a besoin de blocs IP comme le Wi‑Fi, l’Ethernet ou l’USB, on revient à la case départ
    • Je me demande ce que signifie imac dans le nom de cible de l’architecture
    • Il faudrait quelque chose comme Claude Code pour les projets matériels, afin de pouvoir réellement construire tous les projets qu’on imagine avec l’ESP32
      Avec de l’impression 3D, de l’approvisionnement automatique en composants, de l’écriture de logiciels sur mesure, et peut-être même un bras robotique, l’idéal serait un objet posé sur le bureau, une jolie boîte dans laquelle on dépose les composants comme dans une boîte aux lettres. PROFIT
    • J’ai essayé d’utiliser Rust sur ce genre d’appareil, mais jusqu’ici, ce que j’ai vu du côté RISC-V m’a semblé étrange, comme si ARM et RISC-V étaient mélangés
  • J’aimerais qu’on n’appelle pas tout ESP32. Le passage de l’ESP8266 et de l’ESP8285 à l’ESP32 avait du sens, mais maintenant il existe plus de dix versions aux fonctions et architectures différentes
    C’est un peu comme dans chaque fil sur le Raspberry Pi Pico (RP2030/RP2350), où quelqu’un finit toujours par le confondre avec la version ordinateur monocarte
    Quand j’entends ESP32, je pense encore d’abord à l’ESP32 Classic, généralement le WROOM-32E

    • Il semble y avoir ici un malentendu fondamental sur la façon dont une gamme de microcontrôleurs est structurée
      Il ne s’agit pas de plus de dix « versions » avec des fonctionnalités différentes. Le mot version suggère fortement une évolution progressive dans le temps, gâchée par le fait d’ajouter et de retirer des modules
      En réalité, il existe 4 à 5 lignes de produits qui partagent le même SDK, la même philosophie de conception, la même structure tarifaire, la même chaîne d’approvisionnement et les mêmes canaux de support. Pour les équipes d’ingénierie qui conçoivent des produits, chacune de ces lignes est très importante. Ce n’est pas seulement une question pour les amateurs autodidactes, même si je trouve qu’ils sont aussi très bien pris en charge
      À l’intérieur de ces lignes, il y a de vraies versions. Par exemple, aujourd’hui on a surtout les lignes S, C, H et P, et l’ESP32-S2 n’est plus recommandé pour les nouvelles conceptions, il faut utiliser l’ESP32-S3
      Au fond, le critère pour comprendre cela est simple : peut-on mettre une puce portant le nom ESP32 sur un PCB et la programmer avec le même SDK ?
      C’est pareil pour la série de microcontrôleurs RP2XXX. Si l’on confond microcontrôleur et ordinateur monocarte, on n’est peut-être pas à sa place dans cette discussion
      Plus largement, face à ce genre de sujet, on apprend plus vite en ne partant pas du principe que « j’ai déjà compris et les autres ont tort ». Mieux vaut garder l’esprit ouvert et poser beaucoup de questions ; c’est un âge d’or pour les autodidactes, mais seulement pour ceux qui savent conserver longtemps une curiosité humble
    • C’est le même schéma de dénomination que STM32, EFM32, GD32, etc.
    • Ce nom indique la compatibilité avec ESP-IDF
    • D’autres familles de produits sont similaires. Il y a STM32, et en dessous toute une gamme allant du STM32C0 d’entrée de gamme jusqu’à des puces Linux complètes comme le STM32MP2
    • Amusant : tu viens justement de mélanger Pico, qui est une carte de développement, et RP2040, qui est la puce
  • Je fais des projets artistiques à LED en amateur avec WLED, qui repose uniquement sur la plateforme ESP32. C’est vraiment amusant, et je suis toujours impressionné par les performances de ces petites cartes et par la communauté open source
    Ma plateforme de contrôleur préférée est la gamme QuinLED. Elle intègre la distribution d’alimentation, des régulateurs de tension, des pistes cuivre épaisses, des résistances de ligne de données configurables et la prise en charge de matériel auxiliaire intelligent, le tout pour environ 30 à 50 dollars par contrôleur, ce qui reste abordable. quinled.info
    <https://kno.wled.ge/> est le site de WLED, et à titre personnel je trouve que c’est l’une des URL les plus astucieuses de tous les temps

    • Je suis curieux de savoir quel matériel tu utilises. J’aimerais savoir quels LED ou matrices tu achètes, et quel modèle de contrôleur QuinLED tu utilises. Je m’amuse pas mal en ce moment avec des écrans HUB75, donc j’aimerais aussi regarder d’autres options et projets
    • Je fais beaucoup de projets LED, mais j’utilise simplement des WS2812. Je me demande pourquoi il faut un contrôleur. C’est à cause d’une forte luminosité ?
    • cr.yp.to/ est aussi une URL assez classe, et elle existe depuis très longtemps
  • En regardant la fiche technique, j’ai vu le périphérique BitScrambler, qui semble très proche du PIO du Raspberry Pi Pico en termes de flexibilité

    Les opérations au niveau du bit peuvent consommer pas mal de CPU, et comme le DMA est justement conçu pour décharger le CPU de ce type de travail, l’ESP32-S31 intègre deux périphériques dédiés appelés BitScrambler. Ces modules sont conçus pour transformer le format des données lors des transferts entre la mémoire et les périphériques. Un BitScrambler gère les transferts de la mémoire vers un périphérique ou de mémoire à mémoire, tandis que l’autre est réservé aux transferts d’un périphérique vers la mémoire. Le BitScrambler peut prendre en charge les opérations au niveau du bit mentionnées plus haut, mais il s’agit en réalité d’une machine à états flexible et programmable capable d’effectuer des transformations plus avancées.
    J’espère que ce sera aussi utile que le PIO du Pi Pico

  • Les spécifications ont l’air bonnes, et il reste à voir combien de temps il faudra avant qu’il arrive dans le format Espressif que je préfère, en module WROOM ou en petite carte de développement. Je suis aussi curieux du prix, mais jusqu’ici c’était impressionnant de voir que, pour un tarif similaire, chaque génération apportait beaucoup plus de choses
    Si vous attendez surtout avec intérêt le cœur RISC-V relativement rapide et le SIMD, le P4, déjà disponible, vaut aussi le détour. L’horloge est un peu plus rapide, mais il n’a pas de connectivité sans fil : https://products.espressif.com/#/product-comparison?names=ES...
    Il existe aussi des projets intéressants qui exploitent les fonctions DSP et le traitement d’image intégré pour manipuler beaucoup de données de pixels, et cela devrait fonctionner de façon similaire sur le S31 : https://www.reddit.com/r/WLED/comments/1ry2jd7/wledmmp4_with...

    • Si le prix reste relativement proche, le rapport qualité-prix pourrait être énorme. Je vais peut-être devoir remettre encore à plus tard le side project sur lequel je travaille en ce moment, pour revenir à d’autres side projects que j’avais laissés de côté à cause de problèmes d’optimisation sur l’ancien ESP32
    • Les ESP32-S31-WROOM-3 sont déjà sortis, ainsi que deux cartes de développement basées dessus, l’ESP32-S31-Function-CoreBoard-1 et l’ESP32-S31-Korvo-1. Tout cela est disponible sur la boutique officielle Espressif sur Aliexpress
  • Discussion précédente au moment de l’annonce il y a deux mois : https://news.ycombinator.com/item?id=47561678

  • C’est bien de voir le retour du Wi-Fi et de l’Ethernet filaire dans le même composant
    En revanche, il a perdu le support MIPI présent sur la gamme P4 à double cœur RISC-V

    • Ce serait vraiment bien d’avoir les deux sur la même puce
    • Je me demande comment l’Ethernet filaire fonctionne techniquement sur ce genre de puce. Ça utilise quelque chose comme 8 broches GPIO dédiées ?
  • Ces petits appareils sont vraiment fascinants. J’ai un side project que je lancerai peut-être un jour : disposer 32 SoC, ou un plus petit nombre de SoC avec davantage de cœurs, les relier à un hub Ethernet via le routage du PCB, puis laisser un ou plusieurs ports réseau en amont pour pouvoir connecter plusieurs cartes
    Chaque cœur serait chargé d’allumer une LED rouge sur la face avant de la carte via un support de LED à 90 degrés
    J’aimerais regrouper 16 de ces cartes pour fabriquer un petit cube Connection Machine
    Cela dit, je ne sais pas vraiment à quoi servirait un cluster de 512 serveurs très faibles. Probablement à apprendre à gérer un nombre absurdement élevé de nœuds

    • J’ai toujours voulu construire une machine n-cube. Personnellement, je préfère le RP2350, et l’idée de ce qu’on pourrait faire en PIO↔PIO entre puces m’intéresse beaucoup
      L’objectif principal est de comprendre comment programmer ce genre de chose en trouvant un équilibre entre facilité d’utilisation et performances
      Des idées comme des jonctions de PSRAM sont aussi intéressantes. Chaque cœur aurait sa propre PSRAM, tout en pouvant échanger la propriété avec ses voisins
      Je me suis aussi demandé ce qui arriverait aux bandes de fréquences sans fil si on faisait ça avec des ESP32. Dans un petit espace, cela reviendrait à avoir 512 appareils qui se crient dessus
  • Je me réjouis de voir l’adoption de RISC-V progresser dans toute la gamme ESP32. Les anciens composants basés sur Xtensa étaient très bien, mais avec RISC-V, les outils, le support des compilateurs et l’écosystème à long terme devraient être plus propres

  • Je joue un peu de musique, donc je m’intéresse à la sortie audio
    Je me demande où en est aujourd’hui la sortie audio Bluetooth sur microcontrôleur. Peut-on obtenir une faible latence et une sortie de bonne qualité ?

    • La faible latence de l’audio Bluetooth dépend du codec, et les meilleurs codecs sont propriétaires
      Si vous voulez vraiment minimiser la latence sur ce type de matériel tout en restant en sans-fil, une solution consiste à utiliser un autre ESP32 pour envoyer un flux binaire directement entre les deux
    • Les produits Espressif ne sont pas idéaux pour l’audio Bluetooth. La prise en charge du Bluetooth Classic, encore majoritairement utilisée pour l’audio Bluetooth, est irrégulière, et sur certains modèles récents elle a même complètement disparu
    • Je me demande s’il y a une raison particulière de vouloir du sans-fil. À ma connaissance, l’audio Bluetooth est catastrophique, au point que je ne voudrais pas l’utiliser pour la musique. Il vaut mieux rester en filaire, et l’espace radio est déjà bien trop encombré
    • Pour des usages musicaux sérieux, de la lecture audio à l’entrée MIDI, j’ai envie d’être d’accord sur le fait que le Bluetooth sous Windows est une catastrophe
      Il y a quelques années, j’ai essayé de monter un environnement de composition sur DAW de loisir en déplacement avec un ordinateur portable Windows haut de gamme. La latence réelle de l’audio BT entre le portable et un casque ou des écouteurs était déjà inutilisable, et séparément la latence d’entrée d’un contrôleur MIDI BT était elle aussi inutilisable. En combinant les deux, la latence totale devenait ridicule
      À l’époque, le problème était largement connu et abondamment déploré. Certains blogs techniques, y compris des blogs MSFT, expliquaient qu’il y avait des problèmes à tous les niveaux de la pile — pilotes, firmware, silicium, etc. — et qu’un travail était en cours pour régler ce chaos de bout en bout
      La seule solution Windows réellement utilisable mentionnée en ligne consistait à employer un appareil sans fil spécifique non Bluetooth. Il fallait brancher un dongle USB dédié sur le portable, puis soit choisir un appareil précis, soit choisir un dongle récepteur prenant en charge tous les appareils, ce qui était tout simplement moins attrayant que d’utiliser un câble
      Depuis, je reviens vérifier à peu près une fois par an, mais je n’ai toujours pas vu de rapport de progrès significatif, et il y a même moins de discussions sur les travaux en cours. C’est extrêmement décevant. Du côté de la qualité audio BT non plus, cela ne semble pas avoir beaucoup progressé
      Pour éviter une dégradation de la qualité audio, il faut choisir des appareils spécifiques qui prennent en charge des codecs BT propriétaires, ou passer à du matériel avec dongle sans fil non BT. On parle tout de même d’améliorations de la qualité audio, mais il n’y a pas de signe clair qu’une meilleure qualité minimale par défaut va être imposée dans la norme de l’audio BT
      Si quelqu’un a des informations sur une amélioration de la latence par défaut, de la qualité ou des entrées/sorties des appareils BT standard dans les configurations Windows, je serais vraiment preneur