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
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
Área Compartilhada
Janela Inferior
Estrutura do projeto
A estrutura de um projeto Simplicity Studio é muito simples e facilita o seu entendimento.
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
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
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!


.png)
.png)
.png)
.png)
.png)


.png)
.png)
.png)

.png)
.png)
.png)


.png)
.png)

.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)
.png)



