Alcance o sucesso nos negócios preenchendo a lacuna entre software e h – Contec eShop
Pular para o conteúdo

Notícias

Alcance o sucesso nos negócios preenchendo a lacuna entre software e hardware em sistemas embarcados

por Contec Americas 08 Feb 2023 0 comentários
Achieve business success by bridging the gap between software and hardware in embedded systems

As fases de projeto e prototipagem de soluções tecnológicas costumam ser longas e cruciais para o sucesso dos negócios. Os investimentos iniciais de capital podem ser elevados nesses projetos. Consequentemente, os riscos e as expectativas são altos! Como ainda estamos sofrendo as consequências da pandemia em termos de atrasos nas entregas e escassez de componentes eletrônicos, muitas empresas estão enfrentando uma enorme pressão para chegar ao mercado e enviar os estoques contratados dentro do prazo.

Há também a constante disputa por recursos de hardware, pois os aplicativos frequentemente exigem capacidades de processamento cada vez maiores. Isso significa que o hardware provavelmente será superdimensionado inicialmente e se tornará obsoleto com o tempo. Portanto, você precisará revisar seu projeto para adicionar constantemente mais recursos de hardware aos seus produtos tecnológicos, aumentando desnecessariamente os custos e investimentos.

Por fim, encontrar profissionais experientes com conhecimento em sistemas embarcados, hardware e software simultaneamente nem sempre é fácil. Em algumas empresas, engenheiros sem experiência em sistemas embarcados lideram e desenvolvem projetos tecnológicos. Como resultado, podem optar por kits de desenvolvimento (Jetson Nano, Arduino, Raspberry Pi) devido à familiaridade com esses sistemas e aos recursos padrão que facilitam a integração com outros sistemas. As placas de desenvolvimento têm aplicações industriais exclusivas, e você pode ler mais sobre elas neste post do blog. Mas isso pode não ser o caso para a produção em massa.

Todos esses fatores podem influenciar negativamente a decisão sobre a linguagem de programação, a arquitetura do algoritmo e o desenvolvimento geral do software aplicativo. Às vezes, a decisão se resume a usar um sistema operacional padrão em vez de um personalizado ou especializado, ou um código improvisado em vez de um algoritmo proprietário. Isso leva a recursos subutilizados, componentes de hardware superdimensionados, atrasos desnecessários e custos adicionais de redesenho ou recertificação. Portanto, inicialmente, essa pode parecer a solução mais econômica, mas você pode descobrir, mais tarde, que não era a mais eficiente. Pior ainda, durante a operação normal, o hardware trabalhando em sua capacidade máxima pode superaquecer, reduzir o tempo médio entre falhas e aumentar os custos de reparo.

Arquitetura de Algoritmo

Vamos analisar o caminho comum que as empresas seguem em relação à arquitetura de algoritmos. Infelizmente, alguns engenheiros que trabalham com sistemas embarcados começam a programar sem nenhum planejamento ou projeto. O problema é que você só descobrirá depois se o seu algoritmo é eficaz ou ineficiente.

Vamos descrever dois exemplos de algoritmos ideais: linear e logarítmico. Suponhamos que cada operação básica leve um segundo. No caso de algoritmos lineares, à medida que as entradas aumentam, o tempo de execução também aumenta, como pode ser visto na Tabela 1. Se esse algoritmo se comportasse de forma logarítmica, à medida que tivéssemos mais entradas, seu tempo de execução permaneceria estável (Tabela 2). Por exemplo, os algoritmos de busca binária exibem um comportamento logarítmico.

Tabela 1. Relação entre entradas e tempo de execução de um algoritmo linear.

Entrada

Tempo de execução

10

0,00000001

100

0,0000001

1.000

0,000001

1.000.000.000

1

Tabela 2. Relação entre entradas e tempo de execução do algoritmo logarítmico.

Entrada

Tempo de execução

10

3.3E-09

100

6.6E-09

1.000

1.0E-08

1.000.000.000

3.0E-08

Esses dois exemplos geralmente não são encontrados na vida real, pois os algoritmos raramente se comportam de forma linear ou logarítmica. O algoritmo "Stupid Sort" pode ser usado como exemplo dos resultados obtidos quando não há planejamento ou projeto prévio à programação. Trata-se de um algoritmo de estruturação baseado em um teste aleatório em um conjunto de cartas com comportamento fatorial (Tabela 3). Nele, se tivermos 100 entradas, teremos 3,2E+183 anos para resolvê-lo. De acordo com a NASA, a idade do Universo é de 13,7E9 anos, o que implica que, se executássemos o algoritmo na data de criação do Universo, ele ainda estaria em execução sem solução. É recomendável evitar algoritmos fatoriais, como o "Stupid Sort", para não desperdiçar recursos de hardware.

Tabela 3. Relação entre entradas e tempo de execução de um algoritmo fatorial.

Entrada

Tempo de execução

Duração em anos

10

10

3,171E-7

100

1,0E+191

3,2E+183

1.000

?

?

1.000.000.000

?

?

Na verdade, o hardware tem suas limitações. Em geral, as escalas de tempo de sistemas embarcados são difíceis de compreender para os humanos. Por esse motivo, vamos definir uma escala mais fácil de entender para esta análise. Para o processador típico de 3,9 GHz presente em computadores comuns de 2014, podemos dizer que um ciclo de CPU leva 1 segundo, conforme os tempos mostrados na Tabela 4. Nesses casos, a leitura de um arquivo no disco rígido poderia levar, no pior cenário, 1,5 anos, ou a leitura de um arquivo na memória RAM poderia levar 32 segundos. Como você pode ver, um algoritmo mal projetado desperdiçará recursos. Consequentemente, você pode pensar que precisa de um hardware mais robusto com capacidades aprimoradas ao revisar o desenvolvimento do software.

Tabela 4. Tempos de execução de processos regulares em um computador, em uma escala mais fácil de entender.

Atividade

Tempo

Escala Humana

Ciclo da CPU

0,256 ns

1 segundo

Cache L1

1,026 ns

4 segundos

Cache L2

3,077 ns

12 segundos

Cache L3

6,154 ns

24 segundos

R.A.M. Memória

8,4 ns

32 segundos

Disco rígido – melhor cenário

2,9 ms

132 dias

Disco rígido – pior cenário

12 ms

1.5 anos

SDD

85 μs

3 dias e 20 horas

Mudança de contexto

10 μs

10,8 horas

Quântico

100 ms

12,4 anos

Como alcançar o sucesso empresarial ao desenvolver produtos tecnológicos?

Com uma arquitetura de algoritmos cuidadosa, você precisa montar uma equipe que inclua pelo menos um engenheiro experiente em sistemas embarcados. Esse profissional estará mais bem preparado para arquitetar algoritmos que funcionem em um hardware específico. Basicamente, essa pessoa aprimorará o software para que ele se adapte melhor ao hardware (e não o contrário), o que, por sua vez, proporcionará um melhor retorno sobre o investimento e evitará muitos problemas operacionais e de fabricação.

Um engenheiro de sistemas embarcados irá elaborar estratégias, planejar e programar para evitar erros comuns no desenvolvimento de software e será capaz de prever as capacidades do hardware. Isso significa que os desafios podem ser reduzidos e será mais fácil alcançar o sucesso nos negócios. Quem sabe! Você pode até se tornar o herói da Indústria 4.0, da Internet das Coisas, da Robótica ou do Processamento de Imagens em sua empresa.

Se você quiser continuar lendo sobre este assunto, pode conferir... este blog. Você também pode Confira esta página Para obter mais informações sobre Sistemas Embarcados.

Postagem anterior
Próxima postagem

Deixe um comentário

Observe que os comentários precisam ser aprovados antes de serem publicados.

Obrigado por se inscrever!

Este e-mail foi cadastrado!

Compre o visual

Escolha opções

Opção de edição
Back In Stock Notification
Comparar
Produto SKU Descrição Coleção Disponibilidade Tipo de produto Outros detalhes

Escolha opções

this is just a warning
Conecte-se
Carrinho de compras
0 unid