Je recherche une pile TCP/IP qui peut être utilisée sans système d'exploitation. Notre client a une "aversion" pour les interruptions et ne veut pas de vrai OS sur une carte embarquée que nous sommes en train de construire. Il est souhaitable de déplacer autant de fonctionnalités que possible vers un FPGA en raison du fait que nous n'utiliserons qu'un Arm de 50 à 100 MHz. Et je suis assez sûr que les logiciels sous licence GPL ne seront pas acceptables pour ce client. (En raison du bourbier juridique associé à cela. Ils s'attendent à avoir des droits illimités sur le logiciel une fois qu'il est complet.)
Réponses
Trop de publicités?uIP (micro IP) et lwIP (lightweight IP) sont tous deux des candidats qui valent la peine d'être pris en considération. Selon le développeur original des deux piles - Adam Dunkel - l'une des principales différences entre les deux est : "lwIP est plus grand que uIP, mais fournit un meilleur débit". Les deux piles utilisent une licence BSD modifiée et ont été utilisées dans des produits commerciaux.
Cela ne répond pas nécessairement à votre question de la manière dont vous le souhaitez (ce n'est pas dans la section des commentaires car mon diatribe sera probablement trop longue). Cependant, je pense que cela peut toujours être utile.
Quelques points. Je pense que vous devriez rééduquer vos clients sur les avantages et les coûts des interruptions. Les interruptions sont un moyen très efficace de gérer le contrôle des appareils et, à moins d'être méticuleux dans votre codage, vous ne devriez pas pouvoir égaler les performances avec un code non basé sur les interruptions.
De plus, l'utilisation d'un logiciel GPL leur donnera des droits complets et illimités sur le logiciel, mais ne leur permettra pas de limiter les autres. Si vous voulez dire qu'ils veulent limiter les autres, je me demanderais pourquoi ils pensent qu'ils devraient avoir le droit d'utiliser le travail des autres sans rien donner en retour.
Vous pourriez bien trouver une pile TCP sous une licence plus permissive que la GPL (leur permettant de la rendre effective en code fermé). Si vous avez un compilateur C pour votre FPGA, vous pouvez éventuellement vous renseigner sur uIP qui semble avoir une licence très permissive d'après un bref examen :
Droits d'auteur (c) 2001-2006, Adam Dunkels et l'Institut suédois de science informatique
Tous droits réservés.
La redistribution et l'utilisation sous forme de code source et binaire, avec ou sans modification, sont autorisées à condition que les conditions suivantes soient respectées :
Les redistributions du code source doivent conserver le droit d'auteur ci-dessus, cette liste de conditions et l'avis de non-responsabilité suivant.
Les redistributions sous forme binaire doivent reproduire le droit d'auteur ci-dessus, cette liste de conditions et l'avis de non-responsabilité suivant dans la documentation et/ou dans d'autres matériaux fournis avec la distribution.
Le nom de l'auteur ne peut pas être utilisé pour promouvoir des produits dérivés de ce logiciel sans autorisation écrite spécifique préalable.
CE LOGICIEL EST FOURNI PAR L'AUTEUR `TEL QUEL' ET TOUTES GARANTIES EXPRESSES OU IMPLICITES, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D'ADAPTATION À UN USAGE PARTICULIER SONT REJETÉES. EN AUCUN CAS, L'AUTEUR NE SERA TENU RESPONSABLE DE DOMMAGES DIRECTS, INDIRECTS, FORTUITS, SPÉCIAUX, EXEMPLAIRES, OU CONSÉCUTIFS (Y COMPRIS, MAIS SANS S'Y LIMITER, L'APPROVISIONNEMENT DE BIENS OU DE SERVICES DE SUBSTITUTION, LA PERTE D'UTILISATION, DE DONNÉES, DE PROFITS, OU L'INTERRUPTION D'ACTIVITÉ COMMERCIALE) PROVOQUÉS DE N'IMPORTE QUELLE MANIÈRE ET SUR N'IMPORTE QUELLE THÉORIE DE RESPONSABILITÉ, QU'IL S'AGISSE DE CONTRAT, DE RESPONSABILITÉ STRICTE OU DE TORT (Y COMPRIS LA NÉGLIGENCE OU AUTREMENT) DÉCOULANT DE L'UTILISATION DE CE LOGICIEL, MÊME SI L'AUTEUR A ÉTÉ INFORMÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.
C'est tout, pas de "doit être publié sous GPL" ou d'autres clauses virales, et la seule attribution est l'inclusion de l'avis de droit d'auteur.
Actuellement, j'utilise la bibliothèque lwIP sur un ARM Cortex-M3 à 50 MHz sans système d'exploitation. Il s'agit d'un projet basé sur le kit de conception de référence Luminary Micro (maintenant TI) Stellaris Serial to Ethernet (http://www.luminarymicro.com/products/rdk-s2e.html).
Ce kit comprend le code source et les schémas, et nous fournit une base solide pour développer certains produits.
Je n'ai aucun lien avec TI ou Luminary, juste un client très satisfait.
J'ai écrit une pile Ethernet+TCP sur du "bare metal" pour un DSP Texas Instruments 16 bits. Le manque d'adressage sur un octet était plutôt gênant; certaines structures de données stockent des données emballées deux octets par mot, tandis que d'autres stockent un octet par mot (dans le compilateur C, à la fois 'char' et 'int' sont des types sur 16 bits signés). Aucun des codes Ethernet ou TCP n'utilise d'interruptions; les deux sont gérés dans une routine "appeler aussi souvent que possible" qui tourne généralement autour de 100x par seconde. Les performances ne sont pas extraordinaires, mais elles sont généralement adéquates. Peut-être que la plus grande faiblesse de ma pile est qu'elle ne gère pas les paquets hors séquence (les paquets arrivant dans le désordre seront ignorés; ils seront probablement retransmis après l'arrivée des paquets attendus). Ce que vous cherchez est certainement faisable, même si cela ne signifie pas nécessairement que cela vaut l'effort.
En passant, ma pile TCP prend en charge un serveur d'« écho » plutôt intéressant sur le port 23. Un nombre quelconque de clients telnet peuvent se connecter au port 23, et les données qu'ils envoient leur seront renvoyées. Bien que ce serveur se contente d'échoer des données, il pourrait être adapté pour envoyer des choses comme des documents de manière totalement sans état. Quelqu'un a-t-il déjà vu quelque chose de semblable ?
Ajoutons simplement une note indiquant qu'il existe une pile TCP/IP open source relativement récente destinée aux MCUs dans le FNET de Freescale. Elle est sous licence LGPL/GPLv3, ce qui la distingue de certaines autres sous licences BSD, donc elle peut ne pas être adaptée au projet du créateur original, mais elle peut quand même être pertinente pour d'autres utilisateurs. Elle répertorie actuellement le Kinetis (Cortex-M4) comme plateforme supportée ainsi que certaines pièces ColdFire.
- Réponses précédentes
- Plus de réponses