Do tradutor: Librem 5 (on render) - um smartphone seguro para Linux do Purism, criado no hardware e software mais aberto devido ao crowdfunding .Hoje falaremos sobre o desenvolvimento do Librem 5 Developer Kit e como usamos apenas 100% de software livre em seu desenvolvimento.
O design do devkit é publicado sob os termos da licença GNU GPLv3 +, o repositório de hardware Git
está aqui .
KiCad - a escolha óbvia para a EDAAntes de iniciar o desenvolvimento, não estava claro qual caminho desenvolver o projeto. Em particular, qual ferramenta escolher para a
automação do design eletrônico (EDA) . Inicialmente, a idéia era mudar a placa i.MX 6QP OpenRex da FEDEVEL para atender a todos os requisitos do devkit, mas imediatamente enfrentamos dois problemas principais: o processador i.MX 6QP foi usado lá e, pior ainda, a placa foi desenvolvida no sistema proprietário Altium . Felizmente, eu já tinha experiência em projetar eletrônicos usando o EDA KiCad, por isso conseguimos criar um design de kit de desenvolvimento usando software 100% gratuito.
O KiCad é uma escolha óbvia, não apenas por causa da licença gratuita (GNU GPLv3 +), mas também por ser um kit de design eletrônico muito funcional que ultrapassa até algumas ferramentas proprietárias caras.
Seleção de componentes que atendem aos requisitos
A primeira etapa no desenvolvimento do devkit é encontrar componentes que atendam aos requisitos identificados durante a campanha. Além de observar as especificações declaradas, ao procurar componentes, decidimos adicionar alguns sinos e assobios adicionais; incluindo:
- controlador de carregamento (BQ25896)
- Suporte de bateria 18650 para bateria de íon de lítio opcional
- USB-C
- mini HDMI
- Controlador de cartão SD e slot micro-SD (como o i.MX 8M possui apenas dois controladores uSDHC)
- Ethernet / RJ45
- codec de áudio
- alto-falante do fone de ouvido
- o microfone
- Conector de fone de ouvido CTIA / AHJ de 4 pólos e 3,5 mm (com opção entre microfone interno e externo)
- Leitor de cartão inteligente GPG
- motor de vibração
- LED programável
- botões de volume e energia
- comutadores de hardware e comutador do modo de inicialização
- memória flash 16Mb SPI NOR
- relógio em tempo real (RTC)
Conforme planejado, adicionamos orifícios para os contatos de depuração do UART que não estão ocupados por padrão (serial sobre USB é executado na imagem padrão que acompanha o devkit). Dica: se você não gosta de soldar, as cabeças suportam o encaixe na impressora, procure o número de peça de autosplice 23-1063. Na placa existe uma superfície de suporte SMD 2 × 5 JTAG, e sua funcionalidade foi testada no protótipo; Se você estiver interessado em brincar, procure o número da peça GRPB052VWQS-RC.
Para o modem WWAN / banda base e WiFi + BT, ficou claro que você precisa encontrar alguns módulos prontos, por exemplo, com montagem em superfície. Em um estágio inicial, Nicole teve a brilhante idéia de usar os módulos mPCIe e M.2 para que os devkits se tornassem modulares, com a possibilidade de uma atualização no futuro. No final, decidimos pelo módulo de modem mPCIe SIMCom SIM7100A / E e pelo módulo M.2 RedPine RS9116 Wi-Fi + BT.
Iniciar desenho
No final da fase de pesquisa, devemos começar a implementar nossas idéias. O processador i.MX 8M Quad acaba de aparecer no mercado. Para obter uma inovação desde o início do desenvolvimento, além de adicionar modularidade e a possibilidade de futuras atualizações, escolhemos a opção
sistema no módulo (SOM) , incluindo SoC, SDRAM, eMMC e PMIC. Mas mesmo nos estágios iniciais de desenvolvimento, quando estávamos começando a desenhar diagramas, a produção em série de alguns dos SOMs de interesse para nós ainda não havia começado. Por volta de meados de abril, estabelecemos boas relações com a EmCraft, que havia acabado de iniciar o primeiro grande ciclo de produção do SOM e estava perto de lançar uma especificação de arquitetura de hardware. Decidimos que o SOM da EmCraft e seus recursos são exatamente o que precisamos. Assim que um SOM específico foi selecionado, imediatamente começamos a desenhar diagramas.
O processo de seleção de componentes específicos para o devkit foi realizado simultaneamente com a preparação dos esquemas. Todo o trabalho foi realizado no sistema de controle de versão Git.
Fig. 1. Revisão antecipada do esquema de 2 de maio (hash do commit git 023915d5)Após a conclusão dos esquemas, exportamos o arquivo
netlist , o que nos aproximou significativamente da implementação do devkit na vida.
Modelando HP_DET
Além do KiCad, do software livre, também usamos uma ferramenta chamada
Qucs-S e uma
ferramenta de emulação
Xyce compatível com SPICE para emular um chip sensor de fone de ouvido, que inclui um diodo zener para proteger o GPIO correspondente da tensão de entrada muito alta ou muito baixa da emissão do HP DAC codec de áudio. A combinação de Qucs-S e Xyce tornou possível usar o modelo MMS-SP4
do diodo MMSZ4688T1G no chip , o que melhor representa o estado físico do conector em
branco de 3,5 mm com o HP DAC ativo simultaneamente.
Fig. 2. Modelando o esquema HP_DET usando Qucs-S e XyceEssa imitação, bem como um simples gabinete CC, em que o comutador interno do conector de 3,5 mm está aberto e 1MΩ atinge apenas a tensão padrão de 3V3_P, garantiu que o método de proteção específico realmente funcionasse.
Criar sites
Por volta de meados de junho, concluímos a compilação da
Lista de materiais (BOM) , começamos a fazer pedidos de componentes e começamos a criar os contornos de todos os sites no dispositivo (chips, conectores, módulos etc.). Pegamos as características recomendadas na documentação e verificamos quatro vezes se tudo estava correto.
Fig. 3. A plataforma do controlador de carregamento BQ25896 (U301 na placa de desenvolvimento, localizada sob o SOM)No impressionante modo de visualização 3D do KiCad, criamos contornos tridimensionais de quase todos os componentes.
Fig. 4. Modelo 3D do controlador de carregamento BQ25896Planejamento, fiação e atualização nível a nível do KiCad
No estágio inicial, foi elaborado
um plano de nível aproximado para descobrir rapidamente qual área do circuito integrado estaria envolvida (90 × 180 mm) e onde colocar os componentes maiores (conectores, soquetes, slots de cartão, soquetes mPCIe e M.2, módulos, etc.). d.). Após a colocação na placa de ensaio, alguns detalhes ainda foram movidos, mas rapidamente se fixaram em locais específicos.
No final de junho, iniciamos a fiação, começando com USB-C (commit a1bfc689). Isso marcou o início da prototipagem.
Fig. 5. Primeiro confirme com a fiação
Fig. 6. Qual foi o layout do USB-C no final?
Fig. 7. Uma versão inicial do circuito antes de colocar componentes e fiaçãoO processo de fiação exigia um delicado equilíbrio entre a velocidade de trabalho e a verificação de que tudo foi feito corretamente, sem erros, incluindo a fiação cuidadosa dos trilhos de controle de resistência e linhas analógicas sensíveis.
Inicialmente, não havia certeza de quantas camadas eram necessárias e se os componentes deveriam ser colocados nos dois lados da placa. Sabíamos que a placa i.MX 8M tinha oito camadas e componentes em ambos os lados, mas tínhamos certeza de que poderíamos reduzir o número de camadas. Percebemos rapidamente que, no verso da placa, você definitivamente terá que colocar os componentes, porque no telefone alguns módulos estão localizados na parte "traseira" da placa (lado da tela), incluindo conectores de tela, sensor de proximidade / luz, LED programável, alto-falante e microfone. A presença de componentes nos dois lados facilitou um pouco o processo de layout, pois liberou um pouco de espaço onde é possível colocar memória flash SPI NOR, leitor de cartão, RTC, 2,8V LDO, vários ICs e outros componentes. Quanto ao número de camadas, decidimos reduzi-lo para seis. Decidimos adicionar mais duas camadas adicionais apenas se ficarmos presos em um beco sem saída e não pudermos colocar nenhuma corrente. Felizmente, isso não aconteceu e houve um design de seis camadas.
Decidimos usar um layout comum que forneça um equilíbrio ideal entre a facilidade de instalação elétrica e reduz as emissões não intencionais. Como substrato dielétrico, usamos o laminado de folha de cobre NP-180TL da NAN YA, que possui uma permissividade relativa de cerca de 4,11 na nossa frequência operacional média de cerca de 1,7 GHz. Nossos cálculos da linha de alimentação de RF para linhas de alimentação de placas de guia de onda (CPW) micro e trips e coplanares usando esse arranjo podem ser encontrados no repositório Git.
Fig. 8: Layout das camadas do devkitAntes de implementar o devkit no KiCad, não sabíamos se lançávamos versões alfa ou seguíamos as versões clássicas mais estáveis como a 4.0.7. Embora as "compilações noturnas" possuam vários recursos úteis, ainda decidimos manter as versões estáveis para que não precisássemos atualizar o KiCad frequentemente e arriscar a aparência de várias versões simultâneas.
Quando começamos o trabalho, o KiCad versão 5.0.0 foi lançado! Em 16 de julho, atualizamos o projeto para o KiCad 5.0.0 (em particular, os commits 4f70b865 e a4e3de8a) sem problemas. Felizmente, esta atualização coincidiu com a transição da maioria dos nossos componentes passivos de 0603 para 0402, uma vez que as novas pastilhas no KiCad são ligeiramente diferentes dos antigos valores padrão, e as pastilhas possuem cantos arredondados que são mais eficazes para solda sem chumbo.
Após a atualização para a 5.0.0, nos concentramos na prototipagem - e em um mês (14 de agosto, com confirmação de 9b4dd2e0), zeramos o número de circuitos não diluídos.
Fig. 9: O candidato a liberação de 14 de agosto com confirmação 9b4dd2e0 registrou um número zero de circuitos não diluídosDepois de concluir o layout e verificar o Design Rules Check (DRC), limpamos o layout por uma semana.
Ao prototipar uma placa, os recursos mais úteis foram um guia de referência para prototipagem de circuitos integrados da documentação oficial e um
guia de prototipagem Toradex .
Fig. 10. Layout final (áreas revestidas de cobre estão ocultas)Exportar arquivos e enviar para produção
Após a conclusão do layout, foi necessário exportar todos os arquivos necessários para a produção e montagem das placas. A exportação de
arquivos Gerber para o KiCad é bastante simples. No entanto, o contratante solicitou outro esquema e layout para montagem, o que exigiu algum esforço.
Para arquivos de visualização de exportação, geralmente usamos o Gerbv do gEDA.
Aqui está a
aparência do nosso devkit no Gerblook - essa ferramenta usa o Gerbv e o ImageMagick para renderização na web.
Fig. 11. arquivos devber do Gerber quando visualizados no GerbvPara criar o desenho do tipo desejado, usamos as camadas F.Fab / B.Fab. Eles exibem os locais, contornos, polaridade e símbolos de referência de todos os componentes no quadro. Usando as camadas F / B.Fab para cada site, conseguimos criar o desenho final imprimindo F.Fab e B.Fab em arquivos PDF separados e combinando-os em um documento.
Fig. 12. Esquema do SOMAinda mais tiveram que trabalhar em um esquema de produção. Para fazer isso, você precisava exportar notas da camada Cmts.User junto com a placa de circuito como um arquivo DXF e depois exportar todas as marcas de furos como outro arquivo DXF. Depois de criar esses dois arquivos, eles são combinados no desenho do site inteiro (área de cobertura). Tendo recebido essa "pegada" especial, que combina dois arquivos DXF, ocultamos quase tudo no layout - e importamos essa pegada especial "para a fábrica" (sem salvar o layout temporário). No momento, tudo o que você precisa está na camada Dwgs.User; portanto, você pode imprimi-lo junto com o quadro no PDF final para produção.
Fig. 13. Tags para furosJuntamente com todos esses arquivos e documentos, é usada a lista de conexões IPC-D-356, com a qual a planta pode realizar um
teste usando o método "sonda voadora" e verificar se não há curto-circuito ou circuito aberto. Também preparamos um arquivo CSV (para que a fábrica saiba onde colocar e como orientar todos os componentes) e, finalmente, um arquivo GenCAD editado manualmente (para programar um robô de solda de fábrica).
Teste de protótipo
Enviamos os arquivos finais para produção, respondemos a todas as perguntas do contratado e mudamos tudo o que eles pediram. Os arquivos foram enviados no final de agosto - e esperávamos quando nosso projeto chegasse à linha de montagem em Shenzhen. Infelizmente, como
dissemos no blog , ocorreram atrasos significativos na produção de protótipos devido a circunstâncias imprevistas, como clima severo e Semana Dourada [feriado nacional na China - aprox. trans.]. Devido a esses atrasos, decidimos encomendar a produção de protótipos em uma planta doméstica, que nos entregou placas duas semanas mais rápido que os chineses.
Fig. 14. O painel de protótipo devkita v0.1.2 (antes da montagem)Depois de montar um pequeno lote de protótipos, eles foram rapidamente enviados aos nossos engenheiros para depuração e desenvolvimento de software. Felizmente, graças à discussão pública e uma análise abrangente do design, houve muito poucos erros no hardware (três ajustes relativamente pequenos no layout / lista de circuitos e uma correção mecânica). Nos dois meses seguintes, protótipos foram usados para aprimorar o software.
Produção final e entrega
Por volta do início e meados de novembro, depois de fazer pequenos ajustes no design e na
verificação de quase todos os subsistemas de hardware, reexportamos e relançamos os arquivos para produção e montagem final. Alguns de nossos funcionários passaram de 10 a 22 de dezembro, ajudando na montagem, teste, embalagem e envio de devkits para nossos padeiros (muitos entregues antes do Natal!)
Fig. 15. A visão final do painel do devkit v1.0.0 (antes da montagem)

Fig. 16. Devkit totalmente montado em comparação com o modelo 3D (lado da tela)
Fig. 17. Devkit totalmente montado em comparação com o modelo 3D (lado do SOM)Todo o processo exigiu muito esforço, mas valeu a pena. Especialmente quando vimos quão frutuosamente a comunidade pode usar os resultados do nosso trabalho. Alguns já começaram a desenvolver casos impressos em 3D para o devkita. Estou ansioso para ver qual software bacana e quais casos de uso você criará para essas placas incríveis! Sinta-se à vontade para relatar todas as novidades por email para
feedback@puri.sm
. Se for realmente super, falaremos sobre o seu desenvolvimento em futuras postagens do blog.
Agora, sempre gastamos no envio de telefones Librem 5. Portanto, até a próxima vez, não perca sua criatividade!