quarta-feira, 2 de outubro de 2024

MILK-V MAILBOX - 2 NUCLEOS CONVERSANDO - RISC-V 1Ghz LINUX com RISC-V 700Mhz Arduino

 

,

EXEMPLO DE USO DA CAIXA POSTAL (MAILBOX) - COMUNICAÇÃO ENTRE NUCLEOS

Compile e grave o código a seguir no pequeno núcleo do Arduino. Este programa pode ler as informações enviadas pelo núcleo grande (large core) da  MailBox  e imprimi-las na porta serial. Para fiação da porta serial, consulte o exemplo de uso de UART neste capítulo.


#include "mailbox.h"

struct valid_t {
uint8_t linux_valid;
uint8_t rtos_valid;
} __attribute__((packed));

typedef union resv_t {
struct valid_t valid;
unsigned short mstime; // 0 : noblock, -1 : block infinite
} resv_t;

typedef struct cmdqu_t cmdqu_t;
/* cmdqu size should be 8 bytes because of mailbox buffer size */
struct cmdqu_t {
uint8_t ip_id;
uint8_t cmd_id : 7;
uint8_t block : 1;
union resv_t resv;
unsigned int param_ptr;
} __attribute__((packed)) __attribute__((aligned(0x8)));

void showmsg(MailboxMsg msg) {
cmdqu_t *cmdq;
Serial.print("Get Msg: ");
Serial.println(*(msg.data), HEX);
cmdq = (cmdqu_t *)msg.data;
Serial.printf("cmdq->ip_id = %d\r\n", cmdq->ip_id);
Serial.printf("cmdq->cmd_id = %x\r\n", cmdq->cmd_id);
Serial.printf("cmdq->block = %d\r\n", cmdq->block);
Serial.printf("cmdq->para_ptr = %x\r\n", cmdq->param_ptr);
*(msg.data) = 0;
}

void setup() {
Serial.begin(115200);
mailbox_init(false);
mailbox_register(0, showmsg);
mailbox_enable_receive(0);
Serial.println("Mailbox Start");
}

void loop() {

}

Compile o programa de teste mailbox_test e execute-o em Linux de grande porte. O programa de teste foi armazenado no armazém duo-examples. Você pode consultar o README para compilação.

Após a execução, a saída do grande núcleo do Linux:


Impressão de porta serial de núcleo pequeno:


A SMARTCORE FORNECE CHIPS E MÓDULOS PARA IOT, COMUNICAÇÃO WIRELESS, BIOMETRIA, CONECTIVIDADE, RASTREAMENTO E AUTOMAÇÃO. NOSSO PORTFÓLIO INCLUI MODEM 2G/3G/4G/NB-IOT, SATELITAL, MÓDULOS WIFI, BLUETOOTH, GPS, SIGFOX, LORA, LEITOR DE CARTÃO, LEITOR QR CCODE, MECANISMO DE IMPRESSÃO, MINI-BOARD PC, ANTENA, PIGTAIL, BATERIA, REPETIDOR GPS E SENSORES. 


Nenhum comentário:

Postar um comentário