Usar periféricos em um aplicativo de alto nível
Aplicativos de alto nível podem mapear periféricos para uso exclusivo. Para usar um ou mais periféricos em um aplicativo de alto nível:
- Adicione o periférico ao manifesto do aplicativo.
- Adicione um manipulador de interrupção (se necessário) e outro código de suporte ao aplicativo.
- Adicione código para garantir que cada periférico esteja em um bom estado conhecido na inicialização.
Todos os recursos que um aplicativo de alto nível usa devem ser especificados no manifesto do aplicativo. Em um aplicativo de alto nível, você pode usar o nome do recurso atribuído ao AppManifestValue no arquivo JSON de definição de hardware para o chip de destino ou o nome de alto nível atribuído ao recurso no arquivo de cabeçalho de definição de hardware. Por exemplo, para encontrar o valor para identificar o I2C no ISU0 no hardware MT3620, procure no arquivo mt3620.json na pasta HardwareDefinitions instalada na pasta SDK do Microsoft Azure Sphere. Este periférico é definido da seguinte maneira no arquivo JSON:
{"Name": "MT3620_ISU0_I2C", "Type": "I2cMaster", "MainCoreHeaderValue": "(0)", "AppManifestValue": "ISU0", "Comment": "MT3620 ISU 0 configured as I2C"},
Observe que o valor atribuído a AppManifestValue para o periférico I2C é "ISU0", enquanto o nome de alto nível é "MT3620_ISU0_I2C".
Aplicativos carregados simultaneamente não podem compartilhar recursos; O uso de recursos é exclusivo para um único aplicativo. O sistema operacional do Azure Sphere executa várias tarefas importantes quando carrega o aplicativo:
- Configura o multiplexing para que os pinos associados ao periférico sejam configurados para a funcionalidade solicitada.
- Configura o mapeamento principal, que envolve a configuração de firewalls para que o aplicativo tenha acesso aos registros associados aos periféricos solicitados.
- Verifica o manifesto e falha ao carregar o aplicativo se ele reivindicar recursos que já foram reivindicados por outro aplicativo.
O restante desta seção fornece detalhes sobre como usar periféricos específicos.
Nota
O sistema operacional do Azure Sphere não redefine periféricos na inicialização. Seus aplicativos devem garantir que os periféricos estejam em um estado conhecido na inicialização ou após a reinicialização.
Uma reinicialização de dispositivo é disparada quando um novo aplicativo que usa periféricos é instalado e as seguintes condições são atendidas:
- O estado de fabricação do dispositivo é definido como DeviceComplete.
- A funcionalidade appDevelopment não está presente no dispositivo. Para obter mais informações, confira Bloqueio de configuração periférico.
Se uma reinicialização do dispositivo for iniciada, aguarde até que a reinicialização seja concluída e o dispositivo se torne responsivo.
Tópico | Descrição |
---|---|
Usar ADCs em aplicativos de alto nível | Descreve como usar conversores analógicos para digitais (ADCs) com o Azure Sphere. |
Usar GPIO em aplicativos de alto nível | Descreve como usar o GPIO (entrada/saída) de uso geral com o Azure Sphere. |
Usar I2C em aplicativos de alto nível | Descreve como usar Inter-Integrated Circuit (I2C) para comunicação serial. |
Usar PWM em aplicativos de alto nível | Descreve como usar a PWM (modulação de largura de pulso) com o Azure Sphere. |
Usar SPI em aplicativos de alto nível | Descreve como usar a SPI (Interface Periférica Serial) para comunicação serial. |
Usar UARTs em aplicativos de alto nível | Descreve como usar UARTs para comunicação serial. |
Usar temporizadores de watchdog em aplicativos de alto nível | Descreve como usar um temporizador de cão de guarda. |