Notre présentation à l’Open Source Summit – 15 jours pour trouver 2600 euros

Le design de notre carte mère PPC64

La date limite provisoire pour Phase1B est le 18 novembre, il reste donc deux semaines pour faire don des 2600 euros restants. Si nous atteignons l’objectif, le PCB avec simulation de bus SI devrait être prêt d’ici la mi-décembre.

Dans ce cas, avant la fin de 2020, nous commençons à travailler sur la production des prototypes avec la campagne de don de prototypes.

Il faut donner un nom à la carte mère, les suggestions restent encore ouvertes quelques jours de plus sur notre forum.

Nos suggestions sur les licences Open Hardware et l’endianness au OSS 2020

A l’Open Source Summit + Embedded Linux Conference en Europe, nous avons parlé de la licence Open Hardware du Cern et d’endianness

Licence Open Hardware du Cern

Pourquoi pas une licence logicielle telle que GPL ?
Les licences hardware sont spécifiques pour le matériel donc elles sont écrites avec les mots qui conviennent : fabriquant, appareils, outils de CAD…

Pourquoi avons-nous choisi la licence open matérielle du CERN v1.2 ?
Nous pensons qu’elle offre une meilleure protection pour celui qui concède la licence par rapport aux autres licences matérielles telles que la licence TAPR Open Hardware.

Alors, qui sont le concédant de la licence et le licencié ?
– Dans notre projet, nous – Power Progress Community – sommes le concédant et le licencié est le fabriquant du matériel.
Le Licencié peut fabriquer ou distribuer des Produits
– Le Licencié peut modifier notre travail mais la modification doit être disponible sous la même licence ou une licence équivalente
Le concédant est protégé
– La qualité et les responsabilités du matériel sont à la charge du licencié

Autre notes importantes
– Le micrologiciel, les pilotes et tout autre logiciel nécessiteraient leur propre licence
– La propriété intellectuelle appartient au concédant de licence
– La documentation doit être fournie dans le bon format pour être modifiée en utilisant des outils de CAD

Endianness

Qu’est-ce que l’Endianness

C’et la façon dont les données sont placées dans la mémoire de l’ordinateur.
Affecte les données entières supérieures à 1 octet
Peut être un problème lorsque deux architectures différentes échangent des données.
C’est l’un des principaux problèmes qu’un développeur de logiciels doit garder à l’esprit lors de l’écriture de logiciels portables.

Endianness en mémoire : Big Endian

Les données sont lues de gauche à droite
L’octet le plus significatif se trouve à gauche.
Le mot à l’adresse 0x101 est :
0x0203 = 515
Le mot double à l’adresse 0x100 est :
0x01020304 = 16909060

Endianness en mémoire : Little Endian

Les données sont lues de droite à gauche
L’octet le plus significatif se trouve à droite.
Le mot à l’adresse 0x101 est :
0x0302 = 770
Le mot double à l’adresse 0x100 est :
0x04030201 = 67305985

Conversion d’Endianness

Il existe plusieurs méthodes pour changer d’endianness :
– permutation manuelle
– permutation automatique

Permutation manuelle

Permutation de 16 bit non signés :
Permutation = (num>>8) | (num<<8);

Permutation de 32 bit non signés :
Permutation = ((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

Voici les fonctions prêtes à l’emploi qui ont le même comportement :
bswap_16(x);
bswap_32(x);
bswap_64(x);

Détection de l’architecture

La permutation manuelle doit être évitée :
Cela implique de prendre en compte l’architecture en cours d’exécution.
L’architecture doit être détectée et des cas spécifiques doivent être implémentés, sinon le code ne sera pas indépendant de l’architecture.

Des outils utiles pour aider à la détection d’architecture.

#if __BYTE_ORDER == __LITTLE_ENDIAN
<LITTLE ENDIAN SWAP DEFINITION>
#elif __BYTE_ORDER == __BIG_ENDIAN
<BIG ENDIAN SWAP DEFINITION>
#end

Par exemple, si du little endian est demandé sur une plateforme little endian, la «fonction #if defined» retournera les données telles quelles, sinon une procédure de permutation sera appelée.

Fonctions de conversion

POSIX a des outils utiles pour la conversion automatique d’endianness appelés hôte-réseau et réseau-hôte :

#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);

Ces fonctions sont utilisées chaque fois que vous devez faire face à un problème d’endianess. Gardez à l’esprit que l’ordre du réseau est « Octet le plus important en premier », en d’autres termes, c’est Big Endian.

Il y a d’autres fonctions pour les conversions big/little endian.
Ce ne sont pas des fonctions standard mais elles sont très utiles :

#include <endian.h>

uint16_t htobe16(uint16_t host_16bits);
uint16_t htole16(uint16_t host_16bits);
uint16_t be16toh(uint16_t big_endian_16bits);
uint16_t le16toh(uint16_t little_endian_16bits);

uint32_t htobe32(uint32_t host_32bits);
uint32_t htole32(uint32_t host_32bits);
uint32_t be32toh(uint32_t big_endian_32bits);
uint32_t le32toh(uint32_t little_endian_32bits);

uint64_t htobe64(uint64_t host_64bits);
uint64_t htole64(uint64_t host_64bits);
uint64_t be64toh(uint64_t big_endian_64bits);
uint64_t le64toh(uint64_t little_endian_64bits);

La disposition des composants de la carte est conçue pour s’adapter à l’intérieur d’un boitier Slimbook Eclipse. La conception du PCB est effectuée avec le logiciel Mentor Xpedition.

En septembre 2020 nous avons publié dans notre dépot gitlab le fichier source Orcad avec la dernière version (v 0.6) des schémas électriques, Vous pouvez voir plus en profondeur ces documents en utilisant les fichiers Orcad.

Disposition de la carte mère d’ordinateur portable PowerPC Open Hardware pour Slimbook Eclipse – HAUT

Disposition de la carte mère d’ordinateur portable PowerPC Open Hardware pour Slimbook Eclipse – BAS

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.