Como se tornar um desenvolvedor de software embarcado

- por Sergio Prado

Categorias: Carreira Tags: , , , , ,

Nas últimas semanas tenho recebido alguns emails de pessoas com intenção de entrar ou se aprimorar na área de desenvolvimento de software para sistemas embarcados. Isso me motivou a escrever este post, e passar um pouco da minha experiência sobre como se desenvolver numa área tão dinâmica como a nossa.

Primeiramente, gostaria de ressaltar que não existe uma “receita de bolo”. O que descrevo aqui foi o que funcionou (e continua funcionando) para mim. Isso não significa que vai funcionar para qualquer um. Adapte-se à sua forma de trabalho, às suas atitudes, ao tempo que você tem disponível, e principalmente aos seus objetivos de carreira.

Então vamos lá. Você quer ser um profissional extremamente competente na área de desenvolvimento de software para sistemas embarcados. Então você precisa se desenvolver em três esferas diferentes:

1. Conhecimento: você precisa conhecer a teoria envolvida em sistemas embarcados. Isso significa hardware e software. É impossível ser um competente desenvolvedor de software embarcado sem conhecer a fundo a arquitetura de hardware a qual esta trabalhando.

2. Habilidade: você precisa obter experiência na área. Precisa de prática. Você pode decorar todos os mnemônicos do assembler do PIC, mas de nada vai adiantar se você não souber acionar um led com este conhecimento.

3. Atitude: acima de tudo, você precisa de atitudes que vão te fazer crescer nesta área. É uma área muito dinâmica, com mudanças e evoluções frequentes. Voce precisa estar sempre motivado(a), ser auto-didata, gostar de aprender, “fuçar” e entender como as coisas funcionam. Sem atitudes deste tipo você vai desistir logo. Porque nesta área você precisa ser muito, mas muito persistente.

Mas como colocar tudo isso em prática? Conforme disse, não existe uma regra ou sequência a ser seguida, vai depender muito também das oportunidades que aparecerem para você, além da sua capacidade de criá-las. Mas você vai precisar desenvolver seu conhecimento para então aplicá-los, e as dicas abaixo são um bom começo.

1. O que você precisa aprender de hardware (pelo menos)

Conheça bem pelo menos uma arquitetura de 8 bits. Eu comecei com o 8051 e depois acabei aprendendo PIC. Aprenda como funciona sua arquitetura interna, como ele gerencia a memória e os I/Os. Faça alguns programas simples e brinque com o Assembly dele. Se você não tem condições de comprar ou montar um kit de desenvolvimento, você pode baixar gratuitamente o ferramentas da IAR e usar o simulador integrado à IDE para testar sua aplicação.

Saiba como interfacear alguns dispositivos de I/O normalmente utilizados: switchs, leds, teclados, displays, interfaces seriais e paralelas, etc. Invista em você mesmo e monte ou adquira um kit de desenvolvimento, como os da Microgenius. Vai valer a pena.

Aprenda pelo menos uma, e se possível duas, arquiteturas de 32 bits. Eu comecei com o x86 mesmo, depois aprendi PPC, ARM e agora trabalho mais com MIPS. São arquiteturas bem mais complexas, vale a pena uma leitura detalhada no datasheet para entender toda sua estrutura. Não é essencial conhecer todo seu conjunto de mnemonicos Assembly (você vai ficar louco e ser internado provavelmente se fizer isso), mas vale a pena dar uma passada para conhecer as possibilidades da arquitetura.

Na maioria dos casos estas CPUS rodam algum SO (RTOS, Linux, Windows, etc), então não se preocupe muito com o Assembly. Talvez você precisa consultar o datasheet de vez em quando, mas na maioria das vezes você vai desenvolver em C ou C++ nestas CPUs.

Com um pouco de experiência e persistência, você vai poder avançar e começar a trabalhar com interfaces mais avançadas, como USB, Ethernet, Bluetooth, etc.

2. O que você precisa aprender de software (pelo menos)

Desenvolvimento de software em geral, e para sistemas embarcados em específico, é uma arte. E é a arte de fazer mais com menos.

Você precisa de habilidades para trabalhar com recursos limitados. Você não tem um Duo Core de 2GHz em mãos, e sim um PIC de 4MHz. Você não tem 4G de RAM, mas apenas 4K bytes para sua aplicação. O seu display não á um LCD de 19″, e sim um LCD de 2×16 caracteres.

Seu código precisa ser mais eficiente e confiável. Você confiaria em um software que você desenvolveu rodando em um marca-passo se sua vida dependesse deste marca-passo? É mais ou menos assim que você deve se sentir quando desenvolve uma aplicação de missão crítica em sistemas embarcados.

Você precisa então conhecer pelo menos Linguagem C e Assembly.

Assembly é tão voltada ao hardware que a mencionei no tópico acima. Você precisa ser, mais do que tudo, um “mestre” em linguagem C. Conhecer todas as suas nuances. Conhecer cada palavra-chave e saber utilizá-la. Saber quando usar const, volatile, static. Saber a diferença entre heap e stack. Saber desenvolver rotinas de tratamento de interrupção (ISR). Saber o que é e como desenvolver funções reentrantes. E por aí vai.

Mas como desenvolver tudo isso? Muito estudo, leitura e prática. Eu comecei estudando pelo “C Completo e Total“. É um ótimo livro para começar, para conhecer a linguagem, mas não é focado em sistemas embarcados.

Os livros do Fabio Pereira também são muito bons para estudar determinada arquitetura.

Focados em sistemas embarcados, dois muito bons são “Programming Embedded Systems in C and C++” e “An Embedded Software Primer“, e gosto muito destes 2 livros do Jack Ganssle: “The Art of Designing Embedded Systems” e “The Firmware Handbook (Embedded Technology)“.

A melhor forma de desenvolver novas técnicas de codificação é lendo códigos. Então procure sempre ler o máximo possível de códigos open-source disponiveis. Eu costumo analisar trechos das implementações do kernel do linux e de seus device drivers e de pacotes opensource.
3. Além disso, estude sistemas operacionais
A partir de certo nivel, você terá contato com algum tipo de sistema operacional. E se não tiver oportunidade, crie uma.
A uns seis anos atrás, eu queria aprender a arquitetura de um RTOS, mas onde trabalhava não existia nenhuma possibilidade de utilização. Então eu pensei em estudar sozinho. Mas eu precisava de um ambiente, de preferencia um kit de desenvolvimento para estudá-lo. Então tive a idéia de entrar em contato com algumas empresas com o intuito de portar um RTOS (escolhi o FreeRTOS) para sua arquitetura, e em troca eles me emprestariam uma placa de desenvolvimento para realizar o trabalho. Eles sairiam ganhando, pois teriam um RTOS livre portado para a plataforma deles, e eu sairia ganhando com a possibilidade de aprendizado. Recebi uma resposta da NXP, que tem um escritório de R&D aqui em São Paulo, e o trabalho com um ARM LPC2138 levou em torno de 3 meses. No fim, acabei aprendendo bastante sobre ARM e RTOS, fiz alguns contatos com a NXP, com a IAR que forneceu o kit e com o desenvolvedor do FreeRTOS, o que possibilitou ainda o desenvolvimento do meu networking.
Além de conhecimentos em sistemas de tempo real, sugiro que estude bastante linux, e em especial linux embarcado. Temos hoje linux rodando em dispositivos tão diversos como relógios, roteadores, set-top-boxes e smartphones. Em especial os smartphones, com os sistemas operacionais linux-based Android(Google), Maemo(Nokia), Moblin(Intel) e LiMo (consórcio de empresas) brigando de frente com a Apple e a Microsoft e seus respectivos sistemas operacionais.
4. Você precisa de uma formação
Conheço muitos hobbystas que são extremamente competentes, até mais do que alguns graduados, pois gostam do que fazem, são auto-didatas e muito inventivos. Mas considero uma formação algo essencial para se desenvolver na carreira, seja em engenharia elétrica ou ciencias da computação. Você não vai aprender tudo em uma faculdade, na verdade vai aprender apenas uma pequena parte. Mas você vai poder desenvolver seu networking, e um diploma, principalmente em uma faculdade conceituada, vai ajudar a abrir muitas portas no mercado de trabalho.
5. Não pare, continue aprendendo e desenvolvendo seu networking!
Não pare no tempo. É bem provável que o que você aprendeu hoje não vai lhe servir no ano que vem!
Os sites que acesso diariamente são o Embedded.com e o Embarcados. Assino as newsletters de players do mercado (NXP, Atmel, Microchip, Freescale, etc), uso o Google Reader para assinar blogs e ler posts de profissionais da área.
Uso também este blog como mecanismo de dissertar sobre algum tema e refrescar minha memória, o que ajuda a fixar conceitos e teorias, e me mantém aprendendo diariamente e interagindo com pessoas da área.
6. Lição final: compartilhe!
De nada adianta você ter capacidade e conhecimento em determinada área, se você não pode compartilhar este conhecimento e experiencia, e aprender com as experiencias de outras pessoas.
Foi com esta idéia que criei o grupo sis_embarcados no Yahoo, e junto com o Diego criamos o Portal Embarcados.
Ninguém mais sobrevive neste mercado sem capacidade de comunicação. Portanto, desenvolva-a, Escreva bastante, leia bastante, e troque experiencias. Faça 1 + 1 ser igual a 3. Nossa comunidade de sistemas embarcados agradece!
Um grande abraço,
Sergio Prado

  • Parabéns por mais um ótimo post Sergio.

    Suas dicas estão sendo valiosas tanto para quem está começando quanto para quem já tem experiência e começa a ver as coisas de uma ótica diferente.

    Um forte abraço,

    *dS

  • Rodrigo De Presbiteris

    Jão, você é o cara.

    Como não é a minha área de desenvolvimento, nem me arrisco a ir fundo na leitura de códigos técnicos, mas sobre os conceitos que você disse, em geral, serve também para outras áreas de desenvolvimento.

    Ótimo post.

  • Vitor Bicca

    Parabéns. Parabéns pela clareza com que transmitiste as informações.
    Trabalho desde 1981 com programação… 8 bits, 16, 32, 64, DOS e Windows, e mais recentemente desenvolvi projeto com microcontrolador HCS08 da Freescale.
    Como sou iniciante no desenvolvimento de sistemas embarcados, realmente tive vantagem significativa por conhecer como funciona o hardware.
    A experiência em ambientes UNIX, no meu caso EDIX, e SCO-UNIX, ajudou bastante também.
    O conhecimento de “C” combinado com as décadas de desenvolvimento em COBOL, foi fundamental para o sucesso do projeto.
    O que me faltou mesmo, foi o conhecimento de eletrônica, para o projeto das placas.
    Boa Sorte

  • Sergio, muito bom o seu post. Intuitivamente venho seguindo algumas das suas orientações e venho me dedicando seriamente a ser um desenvolvedor de software embarcado. O seu post traz mais orientações nesse caminho e dicas que serão investigadas e estudadas com atenção. Valeu !!!
    Jeronimo
    http://www.blogdoje.com.br
    AVR,Arduino & ARM

  • Marcelo

    Sergio,

    Parabéns, impressionante a riqueza do conteúdo e a clareza deste post.

    – Com seu post, tenho agora uma orientação que posso seguir, o que será de grande valia para meus estudos e desenvolvimento.

    – Dividi os principais tópicos do seu post, e estarei os usando para auto avaliação, em qual área preciso melhor; hardware, software…etc.

    O Livro: Programming Embedded Systems in C and C++, já estava lendo e estou gostando.

    Novamente parabéns pelo excelente post!!!

    Abraços,
    Marcelo Guerra

  • flavio

    Um link com alguns dos livros recomendados e com a documentação de uma TCP/IP stack muito usada em sistemas embarcados:
    [link moderado]

    • Olá Flavio,

      Agradeço pelo comentário, mas infelizmente não posso divulgar seu link, já que infrige os direitos autorais dos livros com cópias não autorizadas dos mesmos.

      Um abraço e continue acompanhando o blog.

      Sergio Prado

  • Marcelo Araujo

    Flávio,

    voce não pode enviar o nome dos livros ao invés de passar esse link ?

    Marcelo

  • caio átila

    excelente post!

  • Vinicius

    Sergio, parabens  pelo post.
    Sou estudante de Engenharia de Computacao pretendo focar minha carreira em sistema embarcados e Redes. E eh bastante motivante ler posts (de qualidade) de uma pessoa que atua nessa area de embedded e compartilha com a gente a sua experiencia.
     
    Obrigado!

  • Ronaldo Z. Afonso

    Sergio,

    Excelente post. Adorei as dicas. Vou tentar praticá-las.
    Um abraço.

  • Fabiano

    Parabéns pelo post Sérgio.

    Sou recém formado em ciência da computação e estou entrando no mercado de embarcados, acredito que suas dicas serão de muita valia…
     
    vlw…
    abraço

  • weverton costa

    Cara voçê é um gênio!!!!!!!!!voce tirou minhas dúvidas de 3 anos e meio que eu estou na faculdade.eu perguntava para pessoas sobre o assunto, e todo mundo dizia que isso era besteira!! que eu ia ficar doido ,mas é algo que eu sinto ecstasy de curiosidade e vontade de aprender.eu curso sist. de informação
    gostaria que voce me ajudasse nessa missão!!!!!(apesar de já ter ajudado e muito)
    DESDE JÁ AGRADEÇO PELO SEU POST!!!!
    ABRAÇOS!!

  • Renato

    Msn ?

    • Olá Renato,

      Você pode me encontrar no skype: sergio_prado.

      Abraços!

  • Oswaldo

    Obrigado Sergio! Ótimo post!
    Já estou virando fã ^^
    abraços.
    Tudo de bom e Feliz Natal e um próspero ano novo!

  • allan castro

    Sergio, fiz curso técnico em eletrônica com ênfase na área digital,hoje sou estudante de automação industrial e sou fascinado por tecnologia.
    Estava em duvidada de qual seria o passo seguinte na minha carreira e você abriu minha visão com esse post….meu amigo eu sei que estou engatinhando nessa área ,programo um pouco em c e conheço alguns PIC da familia 16,já fiz alguns projetos com eles e acho que estou no caminho certo, fico contente quando pessoas como você possam ajudar outras a se desenvolverem nesse mundo de pura dedicação que e a programação.

  • fredericom

    Excelente !

  • Pingback: Como se tornar um desenvolvedor de Linux embarcado()

  • Pingback: Sistemas embarcados, software, carreira e filosofia de vida()

  • Anselmo

    Muito bom, acho que todos que pretendem entrar nessa area, deveriam ler esse post. vou enviar pro meu professor da faculdade. assim poderar abrir os olhos daqueles que estao comecando.

  • Marcelo

    Me fez lembrar do ditado: "those who learn and do not teach are thieves". Se todos que adquirem conhecimento tivessem a mesma iniciativa, o progresso tecnologico andaria mais rapido.

    Seus artigos sao especialmente uteis para mim. Eu trabalho ha mais de tres anos com programacao C++ em fisica, algo bem distante de embarcados. Durante todo esse periodo meu entusiasmo com embracados, linux, desenvolvimento de software etc. tem crescido, e estou tentando aprender o maximo para entrar no mercado.

    • Olá Marcelo,

      Obrigado pelos elogios! O meu objetivo é exatamente esse: dissiminar o conhecimento e motivar outras pessoas a fazerem o mesmo.

      Um abraço!

  • marcos

    Parabéns

  • Parabéns pelo post Sérgio. Tenho trilhado este caminho a pouco tempo e você é um exemplo para os novos profissionais da área.

    • Obrigado Emiliano!

      Continue acompanhando o blog!

      Abraços.

  • Antonio Caser

    Sérgio;

    Qual a noção que preciso ter do inglês, para aprender essa "programática"?

    Abraços.

    • Olá Antonio,

      No mínimo, inglês técnico para leitura de documentos e livros.

      Um abraço.

  • Silvio

     Sergio parabens pela matéria, bastante objetiva e ser rodeios.
    Silvio

  • victorino

    sou victorino angolano, sergio esta materia e a primeira para quem pretende entrar nesta area continue que Deus continue a iluminar os teus conhecimento, porque podes fazer + do fizeste.

    Abraço

  • Marcelo_curtys

    Muito obrigado, seu artigo foi muito util para min, ele abriu minha mente e acredito que farei bom uso das informações que voce apresentou, sucesso para voce e continue sempre dtendo boas ideias como essas.

  • Luís Fernando

    Muito bom seu artigo. Estudo Engenharia Elétrica e já sou graduado na área de engenharia de software e gosto bastante desenvolvimento embarcado e pretendo me especializar nesse campo.
    Suas dicas foram muito úteis pra mim.
    Obrigado.

  • LaunchRed

    Obrigado!!!!

  • Prizoca

    Muito Bom!
    Parabéns!

  • Ian Pierre

    Muito bom! Estou no segundo semestre de Sistemas de Informação na UFBA. Estou começando a decidir os rumos que vou tomar e esse é um que estou levando bastante em conta, por ser uma área versátil e de grande importância. No entando, gostaria de saber se você ver necessidade em mudar do curso de Sistemas de INformação para o de Ciência da Computação para ter um aproveitamento melhor, principalmente na parte do Hardware?

    Sei que nas TIC’s em geral, muito se aprende fora dos limites da Universidade, no entanto, você acha que mudando de curso seria melhor para aproveitar o que a faculdade pode me oferecer em relação aos Softwares embarcados? Eu não escolhi Ciência da Computação diretamente quando fiz vestibular pois tem várias matérias de matematica e física que acho um tanto desnecessária em todas as áreas que tinha como opção antes de entrar na faculdade.

    Gostaria muito das respostas! Agradeço desde já!

    • Olá Ian, como vai?

      Minha opinião é de que 30% do conhecimento do aluno é formado na faculdade, e os outros 70% vem da experiencia na “vida real”.

      Alguns dos melhores profissionais que conheci na área nem faculdade fizeram. Isso não significa que você não precisa fazer uma faculdade. Muito pelo contrário. Uma faculdade (em qualquer área) vai te dar uma base para você se desenvolver. Mas ao mesmo tempo a faculdade é só o começo.

      O que vai fazer mesmo a diferença na sua carreira é sua atitude de ir atrás e aprender sozinho. Desenvolver projetos, compartilhar. Isso é o que realmente vai fazer a diferença.

      Com relação aos cursos, pode variar de faculdade para faculdade. Normalmente, um curso de Ciencias da Computação esta muito mais próximo da área de embarcados do que o curso de Sistemas.

      Um abraço e boa sorte!

      • Ian Pierre

        Valeu, amigo. Tenho consciência da maior proximidade de CC com a área de embarcados, porém, acho que os ganhos que terei sem as matérias pesadas e um tanto inúteis de CC será maior, pois, por exemplo, posso me dedicar a cursos de um dos links que apostou nessa página. Eu pego matérias como Arquitetura de Computadores e Sistemas digitais, como também pego Sistemas operacionais em SI o que me dá uma base de hadware para que eu possa me aprofundar com o autodidatismo. Pego matérias que focam em C como laboratório de programação, além de Inteligência Artificial e Robótica Inteligente (essa última como optativa que tem na ementa introdução a sistemas embarcados), ou seja, acho que vou ter uma “base” para saber o que preciso e como vou aprender. Pensei durante essa semana e resolvi não mudar de curso, espero que esteja fazendo a coisa certa. Quanto a os estudos iniciais para a área em questão, terminei recentemente um projeto de um processador de 4 bits pra uma disciplina, estou estudando hardware e linguagem C no momento, nesse semestre pegarei a disciplina voltada para a linguagem C e também Sistemas Operacionais. Quanto mais pesquiso, mas gosto da área. Espero mesmo seguir nela. Obrigao mesmo pelo post , links e conselhos!

  • Felipe Lopes

    Parabéns! seu post é um incentivo e norteia quem deseja ingressar na área pois não é muito fácil encontrar pessoas e empresas desse segmento sem conhecer canais de comunicação como seu blog! Sou estudante de engenharia elétrica da universidade Cruzeiro do sul e sou da capital de São Paulo! Gostaria de saber se você poderia me indicar algumas empresas desse ramo dispostas a contratar estagiários de engenharia para aprender sobre a área e se especializar, pois acredito não ser fácil encontrar profissionais prontos e experientes suficientes para a imensa gama de atuação que essa área possibilita. Gosto muito de eletrônica digital e sistemas microprocessados e gostaria muito de ingressar nessa área. Desde já agradeço a atenção!

    • Olá Felipe!

      No momento não tenho nenhuma indicação de empresa para te fazer, mas gostaria de sugerir que cadastrasse no grupo sis_embarcados, Temos sempre bastante vagas sendo divulgadas por lá.

      https://groups.google.com/group/sis_embarcados

      Um abraço!

    • Vitor

      Olá! moro perto desta universidade, e gostaria de saber mais informações deste curso lá, ficarei grato quando entrar em contato, e estou pensando em cursar lá . vlw

  • Vitor

    Olá sério, parabens isso é um incentivo, para quem está começando ou que pretende começar como, tenho 16 anos estou naquela fase de decidir com que desejo ingressar, sempre me identifiquei com isso, sei como é dificil, mas queria algumas dicas sua, e acho que agora preciiso conheçer pessoar que estejam no ramo .. muito obg e se poder me responder e me ajudar ficarei grato

  • Marcelo Cunha

    Excelente post. Estou muito interessado na área de sistemas embarcados. Faço Engenharia de Controle e Automação e esse semestre estou tendo uma disciplina de sistemas embutidos e microprocessados, e as dicas e os livros recomendados pelo Sérgio são muito bons.
    Parabéns pelo trabalho Sérgio!!

  • Felipe Guedes

    Olá Gostei do Post estou interessado na área de sistemas embarcados fiz técnico em informática aprendi algumas linguagens como C, C# e PHP mas estou interessado mesmo é em alguma coisa que vá linkar programação e robótica como sistemas embarcados. Não achei muita oportunidade nessa área não sei se é por que é uma área muito complexa mas estou pensando em arriscar nela estou pensando em fazer algum dos cursos da microgenios o que vc acha? gostaria de uma opnião de quem já esta na área.
    Agradeço desde já.

    • Olá Felipe,

      Não tenho nenhum feedback de pessoas que fizeram os treinamentos da Microgenios. Mas conheço o pessoal de lá, e eles são bem competentes. A estrutura também é boa. Se você achar o conteúdo interessante, talvez valha a pena.

      Um abraço e boa sorte!

  • José Alberto

    Olá, gostei muito do post! Muito bem feito.

    Só uma duvida. Eu sou programador em .NET e trabalho com SQL Server tanto para web quanto para desktop. Queria poder entrar nessa área de sistemas embarcados.

    Você pode me dar umas dicas de o que baixar, como começar a fuçar etc?
    Usar o “Arduino” para começar, seria uma boa?

    • Olá José Alberto,

      A melhor forma de começar é partir de uma idéia ou projeto pessoal. Exemplos: controlar as luzes de casa, criar um sistema de irrigação das plantas do quintal, criar um emulador de games, etc.

      Um projeto pessoal vai te dar a motivação necessária para estudar e colocar a idéia em prática.

      Escolha então uma plataforma, pode ser o próprio Arduino, mBed ou mesmo a Raspberry, se for algo que envolva interface gráfica ou conexão com a Internet.

      Um abraço e bons estudos!

  • Isaac

    Excelente post. De agora em diante vou seguir essas dicas.

    Você poderia me informar locais aonde eu posso buscar vagas de emprego ou estágio nessa área e quais são os melhores estados do país para aprendizado e trabalho?

  • Rafaela

    Antes mesmo de começar a Engenharia já tinha interesse nesta área pois sempre gostei muito de eletrônica. Lendo seu post vejo que ainda tem muita coisa a aprender. Deixei ele salvo no favoritos para que eu possa seguir suas dicas. Infelizmente tenho muito pouco tempo disponível, mas agora pelo menos já sei por onde começar, rsrs.

    Parabéns pelo post.

    • Obrigado Rafaela! Lembre-se de que tempo é apenas uma questão de prioridade… :-) Um abraço!

  • Caio

    Incrível cara, tirou muitas dúvidas q eu tinha sobre como iniciar meus estudos, na verdade estava que nem uma barata tonta, rsrs
    Vlws cara.
    Parabéns pelo seu trabalho.

  • Vandeilson Almeida

    Cara valeu mesmo! Vou colocar sua página aqui em favoritos pra eu não perdê-la. Estou pra começar o curso de engenharia da computação, pois me identifico e gosto de elétrica, eletrônica e programação (Delphi). Sou técnico em eletrotécnica, mas gosto de inventar coisas.

  • Pedro Vinícius

    Eu sou graduado em Análise e Desenvolvimento de Sistemas. Mas tenho interesse na área de embarcados. Pensei em fazer uma outra graduação em Engenharia da Computação. Seria uma boa idéia do ponto de vista profissional? Ou melhor aprender isso “natoralmente”?

    • Olá Pedro,

      Infelizmente não existe uma maneira fácil de responder à sua pergunta. As duas opções podem ser um bom caminho.

      Eu por exemplo tenho formação na área de sistemas, mas acabei orientando minha carreira para o lado da engenharia e em específico, desenvolvimento de software para sistemas embarcados.

      Sem dúvida que qualquer pessoa, com a devida disciplina e tempo, consegue aprender e se especializar na área.

      Um abraço e boa sorte no caminho que seguir!

  • bvim75

    Tenho 30 anos e sou técnico em eletrônica e informatica mas sempre fui hobbysta na área de embarcados, obvio que sem o conhecimento de um profissional! Quero tirar uns 2 anos pra me especializar mas sem fazer um curso superior, a idade é um problema nessa área? as empresas são muito exigentes?

    Um grande abraço!

    • Olá,

      A idade nunca é um problema. Tenho certeza de que se você se esforçar o suficiente e adquirir os conhecimentos necessários pode conseguir uma boa colocação no mercado. Talvez o único problema seja a ausencia de um diploma superior. A maioria das empresas irão exigir isso de você. Um abraço e boa sorte!

  • Roger Moschiel

    Ola, me graduei ano passado em engenharia elétrica e de forma autodidata estou tentando atuar profissionalmente com sistemas embarcados. Eu comecei desbravando o pic 16 e 1, e em um projeto pessoal aprendi a usar seus perifericos como Interrupcoes, I2C, USB, PWM, A/D etc, e agora to aplicanddo o que aprendi em outros microcontroladores como atmega, kl25, e hcs08. Depois disso acho que estudaria os 32 bits e tambem sobre rtos.
    Pretendo usar seu post como um guia do que devo estudar, porem noto que foi postado em 2010, o texto e os livros indicados ainda pode ser considerado um guia atualizado pra quem quer atuar na area?

    • Olá Roger!

      Sem dúvida que esta publicação precisa de algumas atualizações. Vou me planejar para escrever uma versão mais atualizada e te aviso assim que fizer.

      Um abraço!

      • Gabriel Magri

        Compartilho do mesmo interesse do Roger Moschiel.
        Estou cursando engenharia elétrica e pretendo me especializar em sistemas embarcados.

        • Roger Moschiel

          Gabriel Magri eu comecei a me especializar de forma autodidata porque poucas instituicoes no Brasil oferecem especializacao na area, porem recentemente o Senai Anchieta vai ter sua primeira turma de pos em sistemas embarcados, ja mandei meu CV pra eles e felizmente fui aprovado, irei la semana que vem fazer a matricula, eu verifiquei as materias a serem oferecidas e parecem satisfazer o conteudo requisitado pra area de sistemas embarcados (IoT, FPGA, RTOS(FreeRTOS) microcontroladores 32 bits, Eletronica Embarcada, etc).
          Quando se formar, se for do seu interesse a instituicao fica em Sao Paulo. segue link com dados da pos: https://eletronica.sp.senai.br/4214/sistemas-embarcados

          • Gabriel Magri

            Bacana Roger!
            Vou dar uma pesquisada no que existe para a minha região. Valeu pela dica.

  • Wilton Ribeiro

    Sergio Prado, a questão de projetista ou o formado na area da computação querer patentear uma ideia ou um produto na área de eletrônica, ele precisaria de um CREA? ou ele simplesmente registra no INPI ou teria depois que algum engenheiro elétrico tenha que assinar? como funciona essa área, no caso dos embarcados envolveria essa questão não é? sou Engenheiro de Software. Grato.

  • Marcelo Borges

    Olá Sergio.

    Assim como usuário abaixo, me formei a poucos meses em engenharia eletrônica e durante o curso consegui ter acesso a sistemas microcontrolados e gostaria de entrar na área de desenvolvimento de sistemas embarcados.
    Durante algum tempo desenvolvendo projetos simples, percebi a necessidade de aprender mais sobre o assunto, principalmente pelo curso não ser focado na área da programação, decidi realizar outra graduação mais “focada” na área e me deparei com 2 cursos que estão disponíveis Ciência da Computação e Engenharia de Computação.
    Por pesquisas verifiquei que Eng. Computação ele seria uma mistura dos cursos de Eng. Eletrônica e Ciência da Computação, vendo esse lado, seria mais proveitoso o curso de Ciência da Computação, porém ele possui um enfoque maior em desenvolvimento de sistemas em termos gerais, enquanto graduação em Engenharia de Computação possui um sistema mais voltado para embarcados.
    Atualmente estou com esse problema para decidir por qual curso realizar, visto que pretendo começar curso já no segundo semestre ou mais tardar no início do ano. Caso puder ajudar ficarei muito agradecido.

    • Olá Marcelo,

      Não me sinto muito confortável para te ajudar com uma decisão deste tipo, já que o conteúdo dos cursos podem variar muito de instituição para instituição. De forma geral, posso te dizer que:

      1. Os cursos de Engenharia de Computação costumam ter um enfoque maior no hardware, comparado aos cursos de Ciência da Computação, o que pode ajudar na área de embarcados.

      2. Seu sucesso na carreia vai depender muito mais da sua atitude de ir atrás, aprender e fazer acontecer do que o curso que escolheu para se formar na universidade.

      Um abraço e boa sorte!

  • Igor Araújo

    Olá, Sérgio! Sou técnico em eletrônica e pretendo continuar na área de sistemas embarcados no ensino superior. Seria mais indicado um curso mais generalista como Engenharia Elétrica por exemplo, ou partir para a Ciência da Computação? Desde já, obrigado! Abraços.

    • Olá Igor,

      A área de sistemas embarcados é bastante ampla, então depende muito dos seus objetivos. Cursos como Engenharia da Computação e Ciẽncias da Computação costumam ter um enfoque maior em software, enquanto que Engenharia Elétrica tem um foco maior em hardware. E este enfoque pode variar bastante também dependendo da instituição e da grade curricular do curso.

      Infelizmente esta á uma decisão que não posso ajudar muito. Meu conselho é você olhar a grade curricular dos cursos e ver quais possuem disciplinas que te interessam mais.

      Um abraço,

      Sergio Prado.

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.