A campanha almejando as fast bus simulations está quase concluída. Receberemos o design final da PCB antes do fim de 2020. Assim que o recebermos, ele será publicado no nosso Git. Abaixo, a screenshot do design da PCB em progresso:
Nossa placa-mãe PowerPC no Mentor Xpedition
Como temos feito até agora, a nossa próxima campanha de arrecadação para a produção dos 5 protótipos começará assim que a atual se finalizar. Em coordenação com a ACube Systems, estabelecemos um valor de 10.500 Euros para os protótipos, e esperamos entregá-los durante a primavera de 2021.
Freedesktop-sdk para PPC64 Big Endian compilado!
Modificamos o freedesktop-sdk para compilar perfeitamente no PPC64. Estamos coordenando com o time Freedesktop para incluir nossas modificações no repositório principal.
Compilamos com sucesso os 432 pacotes, envolvendo inclusive a última versão do go lang.
Agradecemos ao laboratório Open Source OSU e à fundação OpenPOWER por fornecer-nos acesso à uma VM Power9 com 8 cores e 16GB de RAM para que pudéssemos compilar o Freedesktop-sdk para PPC64.
Agora graças à OpenPOWER@UNICAMP, temos acesso a uma VM Power8 para recompilar o freedesktop-sdk integrado continuamente ao pipeline do gitlab do freedesktop.
Com o Flatpak e o Freedesktop-sdk rodando no Debian 10 PPC64 Big Endian, estamos um passo mais próximos de ver os pacotes flatpak preparados para PPC64.
Neste ano, a IBM lançou o núcleo de processador POWER A2I e ambiente FPGA agregado. Em 2019, a IBM abriu o ISA POWER. A comunidade Power Progress lançou a placa de circuitos impressos da placa-mãe de um notebook baseado na arquitetura Power com uma licença de código aberto do CERN. O Libre-SOC é um projeto de software-hardware que tem por meta desenvolver um SOC POWER com CPU, GPU, VPU e controlador DDR.
Por que não usar uma licença para software como a GPL? Licenças para hardware são específicas, portanto são escritas com a nomenclatura apropriada: fabricante, dispositivos, CAD, etc..
Por que escolhemos a licença CERN para Open Hardware v1.2? Achamos que oferece uma proteção melhor para quem recebe uma licença quando comparada com outras licenças para hardware como a TAPR.
Quem recebe e quem fornece a licença? No nosso projeto, nós (comunidade Power Progress) recebemos a licença e o licenciador é o fabricante do hardware.
O licenciador pode fabricar e distribuir produtos? O licenciador pode modificar nosso trabalho, mas essas modificações precisam ser disponibilizadas sob a mesma licença, ou licença equivalente.
Como somos protegidos? O licenciador é responsável pelo hardware e sua qualidade.
Outras notas importantes – Firmware, drivers e outro software precisam de suas próprias licenças. – A propriedade intelectual é nossa. – A documentação precisa ser fornecida no formato correto para que possa ser livremente modificada (usando uma ferramenta CAD).
Endianness
O que é endianness?
É a maneira com que dados são ordenados na memória de um computador. Afeta números inteiros que sejam maiores que 1 byte. Pode ser um problema quando arquiteturas diferentes compartilham informação. É um dos problemas principais que um desenvolvedor de software precisa ter em mente quando escreve software portátil.
Endianness na memória: Big Endian
Os dados são lidos da esquerda para a direita. O byte mais significante fica na esquerda. A palavra no endereço 0x101 é: 0x0203 = 515 A palavra dupla no endereço 0x100 é: 0x01020304 = 16909060
Endianness na memória: Little Endian
Os dados são lidos da direita para a esquerda. O byte mais importante fica na direita. A palavra no endereço 0x101 é: 0x0302 = 770 A palavra dupla no endereço 0x100 é: 0x04030201 = 67305985
Conversão de endianness
Existem dois metódos para trocar endianness: manual e automático.
Troca manual
16 bit unsigned swap: swapped = (num>>8) | (num<<8);
32 bit unsigned swap: swapped = ((num>>24)&0xff) | // move byte 3 to byte 0 ((num<<8)&0xff0000) | // move byte 1 to byte 2 ((num>>8)&0xff00) | // move byte 2 to byte 1 ((num<<24)&0xff000000); // byte 0 to byte 3
There are ready-to-use functions that have the same behaviour: bswap_16(x); bswap_32(x); bswap_64(x);
Detecção de arquitetura
Trocas manuais devem ser evitadas. Conhecimento da arquitetura em questão é importante. A arquitetura deve ser detectada e casos específicos implementados, senão o código não será independente de plataformas.
Por exemplo, se o programa requisita uma função little endian em uma plataforma little endian, a função retornará os dados como estão. Em caso contrário, um procedimento de troca será executado.
Conversão de funções
POSIX tem ferramentas úteis para a conversão de endianness chamadas de host-to-network e de network-to-host:
Estas funções são executadas sempre que você precisa lidar com um problema de endianness. Tenha em mente que network order é “byte mais significante primeiro”, ou seja, Big Endian.
Existem outras funções para conversão little/big endian. Elas não são padrão, mas são muito úteis: