Rodando FreeRTOS na Milk-V Duo 

Milk-V Duo 

 
Com a ascensão de plataformas de hardware RISC-V inúmeros microprocessadores, SoM e SBC’s estão surgindo em consonância com a arquitetura. Uma delas é a pequena SBC ou eSBC (Embeddedable single Board Computer) Milk-V Duo da empresa Milk-V. 

Um dos recursos mais interessantes da eSBC Duo é a divisão do processador em dois núcleos: um núcleo principal – executando um SO Linux – e um núcleo secundário. Essa divisão permite que a placa execute duas aplicações simultaneamente, o que pode ser útil para uma variedade de tarefas.
Neste tutorial, veremos como habilitar o núcleo secundário da SBC Milk-V Duo para rodar uma aplicação com FreeRTOS. O FreeRTOS é um RTOS (Real-Time Operating System) de código aberto que é amplamente utilizado em aplicações embarcadas. 

Setup do SDK e Alterando a Imagem

Alguns detalhes mais aprofundados de como usar o SDK podem ser encontrados no repositório oficial do duo-buildroot-sdk, mas à título de praticidade passarei algumas instruções resumidas de como configurar o sdk:

sudo apt install -y pkg-config build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils jq python3-distutils scons parallel tree python3-dev python3-pip device-tree-compiler ssh cpio fakeroot libncurses5 flex bison libncurses5-dev genext2fs rsync unzip dosfstools mtools tcl openssh-client cmake
 
git clone https://github.com/milkv-duo/duo-buildroot-sdk.git 

Com isso temos o diretório com os arquivos necessários para compilar uma imagem customizada para a Duo, para habilitar o FreeRTOS e descrever as rotinas do co-processador é necessário alterar alguns arquivos dentro do sdk:

Começando pelo freertos/cvitek/kernel/include/riscv64/FreeRTOSConfig.h onde é necessário desabilitar um dos macros que por padrão vem habilitado. Basta alterar o configUSE_TICK_HOOK para 0.

O segundo passo agora é desenvolver as tasks que serão executadas pelo co-processador. Acessando o arquivo freertos/cvitek/task/comm/src/riscv64/comm_main.c encontra-se a função main_cvirtos que é o entry point do scheduler e onde devem ser iniciadas todas as tasks adicionais.

No nosso exemplo criaremos uma task que printa na UART0 o famoso “Hello World”, para isso basta criar nossa função my_task_test e iniciaremos ela dentro do entry point principal.

Feito isso temos nosso código pronto para ser compilado!

Compilando Imagem e Gravando SD Card

  • Para compilar a imagem seguiremos o Tutorial de compilação passo-a-passo.
  • A imagem pode ser encontrada em install/soc_cv1800b_milkv_duo_sd/milkv-duo.img.
  • Agora é só gravar seu arquivo .img em um sd card e inserir na sua eSBC!

Testando

Para testar é necessário conectar nosso conversor Serial-USB na UART0 (GP12 e GP13), essa porta serve tanto como debug do sistema operacional como saída padrão do printf do co-processador.

Uma vez fisicamente conectado, é possível acessar a saída da UART com qualquer software serial com um baudrate de 115200. Nesse caso utilizaremos o minicom por questões de praticidade.

Já que a UART0 é também a saída padrão de debug do sistema uma vez conectada à placa é possível ver o output de inicialização do processador e do sistema operacional. Uma vez que tudo foi inicializado o scheduler entra em ação e começa a executar a task criada anteriormente printando na tela “Hello Risc-V!”.

Conclusão

Neste tutorial, vimos como habilitar o núcleo secundário da SBC Milk-V Duo para rodar uma aplicação com FreeRTOS. O processo é relativamente simples, mas requer alguns conhecimentos básicos de desenvolvimento de firmware.

Com essa configuração, é possível executar tarefas de alta prioridade ou tarefas que exigem acesso direto aos periféricos da placa no núcleo secundário, enquanto o núcleo principal pode ser utilizado para executar tarefas de baixa prioridade ou atuar como um sistema operacional genérico.

Essa configuração pode ser útil para uma variedade de aplicações, como:

  • Controle de dispositivos embarcados
  • Real-time processing
  • Machine learning
  • Edge computing

A SBC Milk-V Duo é uma plataforma de hardware RISC-V acessível e versátil que oferece um grande potencial para aplicações embarcadas. Com a habilitação do núcleo secundário, essa plataforma torna-se ainda mais poderosa e flexível.

Referências -FreeRTOS na Milk-V Duo 

Este texto foi escrito por Guilherme Freire de Almeida.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Mailson
Mailson
09/01/2024 11:34

Muito bom o artigo

Home » Hardware » Rodando FreeRTOS na Milk-V Duo 

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: