Introdução ao Simplicity Studio


Introdução

O Simplicity Studio é o ambiente de desenvolvimento para dispositivos e tecnologias da Silicon Labs. Neste artigo veremos como criar instalar e configurar o Simplicity Studio e como utilizar algumas de suas principais ferramentas.

Para isso, utilizaremos a placa BRD4002A Rev A06 com o microcontrolador EFR32MG22 para criar um projeto simples de um pisca-led PWM.

Instalação

Primeiro, acesse o site da Silicon Labs [1] para fazer o download do software. No site, selecione o sistema operacional correspondente e clique no link de instalação. Para prosseguir com o download, você precisará criar uma conta no site. Após fazer login, o download será iniciado automaticamente.

Após concluir o download, extraia os arquivos e execute o setup. Em seguida, siga as instruções passo a passo para concluir a instalação.

Quando a instalação for finalizada, o Simplicity Studio será iniciado automaticamente, exibindo uma tela com os termos de licença. Aceite os termos e clique em "Done".


Após a instalação, será exibida uma tela sugerindo que você faça login. No entanto, é possível fazer login mais tarde clicando em "Skip for now".

Em alguns sistemas operacionais, o Simplicity Studio fará o download dos drivers necessários para o funcionamento das ferramentas.

Por fim, aparecerá a tela do Installation Manager. Nesta etapa, você pode fazer o download de Software Development Kits (SDKs), Toolchains e outras ferramentas de interesse.

Se você já tiver o dispositivo conectado à sua máquina, é possível clicar em "Install by connecting device(s)". No entanto, faremos a instalação clicando em "Install by technology type (wireless, Xpress, MCU, sensors)".


Optarei por não instalar todas as ferramentas neste momento, mas é possível fazer o download delas futuramente, caso surja a necessidade.

Em "Select Technology Type", selecione a primeira opção (32-bit and Wireless MCUs).

Em "Package Installation Options", temos duas opções: Auto e Advanced. Na opção Advanced, é possível escolher quais pacotes serão instalados. No entanto, deixarei selecionada a opção Auto, que seleciona automaticamente os pacotes para instalação.

Caso seja necessário instalar uma versão específica de uma ferramenta, toolchain ou SDK, selecione a opção Advanced.

Em seguida, clique em "Next", aceite os termos e aguarde a conclusão da instalação.

Se ocorrer algum erro durante o download, recomendo reiniciar a sua máquina e abrir o Installation Manager novamente para baixar os pacotes necessários.

O Installation Manager pode ser acessado a qualquer momento através do menu "Install", localizado na barra superior esquerda da tela.


Criando um projeto

Para criar um projeto primeiramente conecte a placa à máquina. Ao fazer isso o software já deverá reconhecer a placa e exibi-la na ambiente do Launcher.

Clique em "Start" para iniciar a configuração do projeto. Na tela seguinte, você verá as informações principais da placa e do target utilizados.

Além disso, você terá acesso à documentação, exemplos e ferramentas compatíveis com a placa.

Ainda nessa tela, em General Information, devemos escolher a versão de SDK. Para o projeto estaremos utilizando a Gecko SDK Suite v4.4.3.

Após a configuração, clique em "Create New Project" no canto superior direito da tela.

Em "Examples", selecione o projeto que será utilizado como base. Para este projeto, utilizaremos "Platform - Blink PWM". Selecione este exemplo e clique em "Next".

Na tela seguinte, dê um nome ao projeto, selecione o diretório onde ele será salvo e clique em "FINISH". O Simplicity Studio te levará a um novo ambiente: Simplicity IDE.

É possível voltar ao ambiente anterior clicando em “Launcher", no canto superior direito.

Ambiente de desenvolvimento

Nesse novo ambiente o Simplicity Studio é organizado de maneira semelhante a outras IDEs baseadas em Eclipse. Aqui estarei destacando os seus principais espaços.

Project Explorer

O Project Explorer é onde podemos ver o diretório do projeto, bem como seus arquivos e diretórios.


Debug Adapters

Nesse espaço podemos ver os dispositivos conectados à sua máquina, podendo fazer configurações e seleção de target.


Área Compartilhada

É a área principal do projeto. Aqui é onde podemos ver os arquivos e janelas abertas.


Janela Inferior

Nessa tela, também comum em IDEs Eclipse, destacamos o console de build, aba de resultado de pesquisa e aba de problemas.
 


Estrutura do projeto

A estrutura de um projeto Simplicity Studio é muito simples e facilita o seu entendimento.



- autogen
    - Diretório gerado automaticamente. Tenha cuidado ao editar os arquivos dentro dessa pasta.
config
    - Configurações do projeto.
gecko_sdk_4.4.3
    - Link para a SDK do projeto.
blink_pwm_baremetal.pintool e blink_pwm_baremetal.slcp
    - Interfaces gráficas de configuração do projeto.
- app.c e app.h
    - Código fonte e header da aplicação do projeto.
blink_pwm_app.c e blink_pwm_app.h
    - Aplicação específica do LED pwm.
main.c
    - Função principal do projeto.

Rotina principal

A função "main()" é estruturada de maneira simples e pode ser usada como padrão para a maioria dos projetos baremetal com MCUs da Silicon Labs. Esta estrutura básica pode ser expandida para incluir a inicialização de tasks, se estiver utilizando um RTOS, e também pode incorporar processamento de baixo consumo, caso esteja desenvolvendo aplicações de baixo consumo de energia.

Observando o código em C é fácil identificar essa estrutura.

```C
int main(void)
{
  // Initialize Silicon Labs device, system, service(s) and protocol stack(s).
  // Note that if the kernel is present, processing task(s) will be created by
  // this call.
  sl_system_init();

  // Initialize the application. For example, create periodic timer(s) or
  // task(s) if the kernel is present.
  app_init();

#if defined(SL_CATALOG_KERNEL_PRESENT)
  // Start the kernel. Task(s) created in app_init() will start running.
  sl_system_kernel_start();
#else // SL_CATALOG_KERNEL_PRESENT
  while (1) {
    // Do not remove this call: Silicon Labs components process action routine
    // must be called from the super loop.
    sl_system_process_action();

    // Application process.
    app_process_action();

#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)
    // Let the CPU go to sleep if the system allows it.
    sl_power_manager_sleep();
#endif
  }
#endif // SL_CATALOG_KERNEL_PRESENT
}
```

As funções sl_system_init() e sl_system_process_action() são responsáveis pela inicialização das stacks e periféricos. Ambas são geradas automaticamente e só devem ser editadas manualmente se for estritamente necessário.

As funções app_init() e app_process_action() constituem a aplicação principal do seu projeto e podem (e na maioria das vezes devem) ser ajustadas para garantir o bom funcionamento do projeto.

Neste projeto, a aplicação é bastante simples e se concentra apenas no controle do LED. No app_init(), a função para inicializar o blink_pwm é chamada, e no app_process_action(), o processamento do blink_pwm é realizado, como ilustrado abaixo.

```C
/***************************************************************************//**
 * Initialize application.
 ******************************************************************************/
void app_init(void)
{
  blink_pwm_init();
}

/***************************************************************************//**
 * App ticking function.
 ******************************************************************************/
void app_process_action(void)
{
  blink_pwm_process_action();
}
```

Arquivo .slcp

O arquivo com a extensão .slcp é um arquivo de configuração do projeto, oferecendo uma interface gráfica que facilita a adição de componentes de software, a alteração de ferramentas, e a configuração de clocks e periféricos, entre outras funcionalidades. Em comparação com outros fabricantes, pode ser comparado ao arquivo .ioc da STM32CubeIDE da STMicroelectronics ou ao menuconfig do ESP-IDF da Espressif.

A tela inicial desse arquivo apresenta um resumo das principais ferramentas e configurações que podem ser editadas, conforme observado abaixo.


Software Components

A segunda aba do arquivo .slcp, chamada SOFTWARE COMPONENTS, exibe os componentes de software que podem ser adicionados e/ou modificados no projeto.

É através desta aba que você pode incluir componentes como comunicação serial, Bluetooth, configuração de rádio, RTOS, Wi-Fi, entre outros. Vale a pena explorar essa aba antes de começar a desenvolver qualquer aplicação ou middleware manualmente.

Aqui, por exemplo, você pode visualizar o componente do driver do LED (led0) utilizado no projeto. Nesta seção, é possível consultar um resumo da documentação relacionada a este componente.

Nesta janela, ao clicar em "Configure" (no canto superior direito), será aberta uma janela de configuração para o componente.

Todas as configurações feitas no arquivo .slcp são automaticamente refletidas em um arquivo .h, localizado na pasta "config". Por exemplo, ao modificar as configurações do led0, o arquivo sl_pwm_init_led0_config.h também será atualizado.

Ao contrário de outras IDEs, no Simplicity Studio, se você alterar manualmente algum parâmetro na pasta "config", essas alterações também serão refletidas no arquivo .slcp. No entanto, vale ressaltar que essa prática não é recomendada.

Configuration Tools

Por fim, temos a aba CONFIGURATION TOOLS. Nela, você encontrará as ferramentas editáveis do projeto. Esta aba pode incluir configurações como pinagem do MCU, editor de memória, configuração de serviços e características GATT, entre outras ferramentas, dependendo do projeto e do MCU utilizado.

Ao clicar em "Open", o arquivo blink_pwm_baremetal_2.pintool é aberto. Nesta visualização, você pode observar o footprint do microcontrolador, bem como a função atribuída a cada pino, o que é útil ao trabalhar com projetos de hardware personalizados.

Na tabela lateral, além das funções e componentes de software atribuídos a cada pino, você também pode definir um Custom Name. Isso pode facilitar a identificação e gerenciamento, especialmente quando se lida com um grande número de pinos.

Build

Para compilar um projeto, você pode clicar no ícone de martelo na barra superior ou clicar com o botão direito do mouse na pasta do projeto e selecionar "Build Project".

Um resumo do processo de compilação será exibido na tela do console.

Após o build é criada uma pasta no diretório do projeto com o nome da Toolchain utilizada. É nessa pasta que ficam armazenados os binários do projeto.

Flash

Ao fazer o upload de qualquer binário para o microcontrolador, é importante verificar se o microcontrolador já possui um bootloader carregado. Sem um bootloader apropriado, o firmware da aplicação pode não funcionar corretamente. Se você encontrar problemas ao executar a aplicação após o flash, consulte o próximo tópico para obter instruções sobre como criar e carregar um projeto básico de bootloader.

Para realizar o flash, você tem algumas opções: Run, Flash Programmer e Debug.

Run

Clicando com o botão direito no diretório do projeto, vá até a opção Run As→1 Silicon Labs ARM Program.

Esta opção faz o upload do binário da aplicação para o microcontrolador.

Flash Programmer

Entre as ferramentas disponíveis no Simplicity Studio está o Flash Programmer. Com ele, você pode fazer upload não apenas do programa que acabou de desenvolver, mas também de outros binários de forma isolada.

Para acessar o Flash Programmer, clique em Tools na barra superior e, em seguida, selecione Flash Programmer.

Dentro do Flash Programmer, clique em Browse para selecionar o arquivo binário que você deseja carregar. Em seguida, clique em Program para iniciar o upload do binário para o microcontrolador.

Debug

Por fim, ao iniciar o Debug, o binário também será carregado no microcontrolador. Para iniciar o Debug, clique no primeiro ícone (representado por um inseto) na barra superior, enquanto o diretório do projeto estiver selecionado.
O processo de debug no Simplicity Studio é semelhante ao de outras IDEs baseadas em Eclipse. Sinta-se à vontade para explorar essa funcionalidade conforme necessário.


Bootloader

Primeiramente vá na barra superior em File→New→Silicon Labs Project Wizard...

Na tela inicial, certifique-se que o Target Device seja o mesmo que o utilizado para a aplicação principal e então clique em NEXT.

Pesquise por "bootloader" e selecione o exemplo "Bootloader - SoC Internal Storage (single image on 512kB device)". Este é um bootloader simples. Para aplicações mais complexas, você pode precisar usar um projeto padrão diferente ou modificar o projeto de bootloader conforme necessário.

Então clique em NEXT novamente, escolha um nome para o projeto e clique em FINISH.

Após criado o projeto, execute o build conforme explicado anteriormente, e então clique com o botão direito do mouse na pasta do projeto, vá em “Run As → 1 Silicon labs ARM Program”, para fazer flash do binário do Bootloader.

Clique em NEXT novamente, escolha um nome para o projeto e clique em FINISH.

Após criar o projeto, execute o build conforme explicado anteriormente. Em seguida, clique com o botão direito do mouse na pasta do projeto e selecione Run As → 1 Silicon Labs ARM Program para fazer o flash do binário do bootloader.

Após realizar o flash, sua aplicação deve funcionar corretamente. No entanto, se você quiser explorar mais o projeto, recomendo revisar os arquivos com as extensões .slcp e .slpb. Bons estudos e bom projeto!

Referências

[1] Silicon Labs. Simplicity Studio Software. Disponível em: https://www.silabs.com/developers/simplicity-studio. Acesso em: 29 de jun. de 2024.




Postar um comentário

Deixe seu comentário ou sua sugestão!

Postagem Anterior Próxima Postagem

Formulário de contato