Arduino, bibliothèques précompilées
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Arduino, bibliothèques précompilées



  1. #1
    amoniaque

    Arduino, bibliothèques précompilées


    ------

    Bonjour,

    Je suis à la recherche d'une solution pour pouvoir distribuer des bibliothèques pour ARDUINO sans fournir le code en clair.
    Est il possible de les précompiler et qu'elles soient encore interprétées par l'IDE ARDUINO ?

    Merci par avance.

    -----

  2. #2
    PA5CAL

    Re : Arduino, bibliothèques précompilées

    Bonjour

    Le principe de base du projet Arduino, c'est l'open source, édicté selon les termes de la licence Creative Commons Attribution ShareAlike 3.0.

    Tu peux donc utiliser Arduino comme tu l'entends, mais certainement pas prétendre contribuer à Arduino ou te réclamer de ce label en y apportant des logiciels fermés.


    Arduino a aussi pour vocation d'être multiplateforme. Cela signifie qu'on cherche, autant que faire se peut, à produire des éléments qui réutilisables sur des cartes et par des microcontrôleurs assez divers. Les codes précompilés posent par conséquent le problème du portage sur les différentes plateformes actuelles, et sur celles qui apparaîtront plus tard.


    Techniquement, tu peux inclure de bibliothèques compilées ou des fichiers objet dans la chaîne de compilation de ton propre IDE Arduino, mais à condition d'apporter quelques modifications à ce dernier.

    Tu peux également, sans avoir à apporter de modifications à l'IDE, inclure du code offusqué dans le code source en clair, sous forme de tableaux de constantes, de code assembleur ou d'instructions C/C++ rendues difficilement lisibles.


    Quoi qu'il en soit, ce n'est pas l'absence du code source de ta bibliothèque qui empêchera qu'on la lise, qu'on s'en inspire, qu'on la copie ou qu'on la modifie. Le logiciel fourni inclut déjà tous les outils pour en faire le reverse engineering, et la communauté Arduino présente suffisamment de motivation et de compétences pour mettre très rapidement au grand jour ce que tu souhaiterais cacher...
    Dernière modification par PA5CAL ; 04/08/2015 à 12h49.

  3. #3
    arsene de gallium

    Re : Arduino, bibliothèques précompilées

    +1
    Vive l'open source, à bas les profiteurs fainéants qui ne pense qu'à exploiter les utilisateurs.
    S'il y a une chose pour laquelle l'Arduino est utile, c'est bien celle-là => la liberté, enfin on va dire comme ça, de créer et de PARTAGER du code et des applications.
    si tu veux gagner du fric facilement, va chez la pomme ou la fenètre ou un des nombreux exploiteurs de la planète.
    A propos combien as-tu payé ton langage de programmation Arduino.
    Dernière modification par Jack ; 04/08/2015 à 13h35.

  4. #4
    PA5CAL

    Re : Arduino, bibliothèques précompilées

    Citation Envoyé par arsene de gallium Voir le message
    Vive l'open source, à bas les profiteurs fainéants qui ne pense qu'à exploiter les utilisateurs.
    Attention à ne pas tout mélanger.

    À la base, tout travail mérite salaire, sans que cela implique nécessairement qu'on en abuse en transformant cela en rentes immorales.

    Quand on passe beaucoup de temps à travailler dur pour produire un programme, un appareil électronique ou un système complexe, on ne peut pas toujours se permettre de l'offrir ensuite gratuitement, qui plus est à des gens qui souvent n'émettent aucun remerciement ni ne font aucun effort en retour (voire qui vous engueulent parce qu'ils ne sont pas contents). Les profiteurs fainéants ne sont donc pas forcément ceux qu'on pense.

    La licence open source choisie autorise qu'on utilise les éléments du projet Arduino à des fins commerciales à condition de citer leur provenance et de les laisser en open source, mais également qu'on les fasse cohabiter avec des éléments propriétaires fermés. D'ailleurs, Arduino est un projet commercial, et ses instigateurs gagnent de l'argent, contrairement aux nombreux contributeurs bénévoles.

    Mais chacun est libre de faire selon ses convictions et ses moyens, dans la limite des règles édictées.
    Dernière modification par PA5CAL ; 04/08/2015 à 14h12.

  5. A voir en vidéo sur Futura
  6. #5
    amoniaque

    Re : Arduino, bibliothèques précompilées

    Bonjour PA5CAL,

    Merci pour tes réponses claires et utiles.
    Le mieux, le plus simple et le plus rapide restera donc l'offuscation dans mon cas.



    Bonjour arsene de gallium,

    Merci de vos retours utiles et pertinents.

  7. #6
    HAYAC

    Re : Arduino, bibliothèques précompilées

    Bonjour,

    Amoniaque,
    Tu parle de bibliothèques, je développe en C# (entre autre) dans ce cas l'offuscation de bibliothèque est possible.
    Mais dans le cas présent, les bibliothèques sont partie intégrante du fichier HEX généré après compilation, je ne voie pas comment tu pourrais pré-compiler une bibliothèque puis l’intégrer dans un produit.
    Ce n'est pas le même fonctionnement qu'une application Win, Linux ... ou les bibliothèques sont externe au produit.
    Cordialement,

    PS: en dehors des problématique de l'open source (Perso pour mes besoins ARDUINO je développe sur du propriétaire Visual studio donc non open source même si la base est l'ide d'origine).
    Dernière modification par HAYAC ; 05/08/2015 à 10h01.

  8. #7
    amoniaque

    Re : Arduino, bibliothèques précompilées

    Bonjour HAYAC,

    Merci de ton retour.

  9. #8
    HAYAC

    Re : Arduino, bibliothèques précompilées

    Re,

    Par contre, si tu veux effectivement protéger tes développements le plus simple est e distribuer le produit fini soit HEX.
    Sur beaucoup de forum, c'est le moyen employé pour faire participer les gents à l'usage d'un développement tout en gardant les sources...
    (Que le produit soit gratuits ou autre).

    Cordialement,

  10. #9
    PA5CAL

    Re : Arduino, bibliothèques précompilées

    Citation Envoyé par HAYAC Voir le message
    Mais dans le cas présent, les bibliothèques sont partie intégrante du fichier HEX généré après compilation, je ne voie pas comment tu pourrais pré-compiler une bibliothèque puis l’intégrer dans un produit.
    J'ai donné le principe. On peut compiler le code de sorte qu'il soit relogeable, puis l'intégrer dans le code source dans un tableau d'entiers constants stocké en mémoire programme.

    Voici un exemple d'offuscation de code. La fonction sert à produire un signal carré à 10 kHz sur la pin 12 d'un Arduino Mega.

    Code:
    void setPin12_10kHz()
    {
    * __asm__ __volatile__(
        " .word 0x938f, 0x939f, 0x9a26, 0xe280\n"
        " .word 0x9380, 0x0080, 0xe181, 0x9380\n"
        " .word 0x0081, 0xe280, 0xe093, 0x9390\n"
        " .word 0x0087, 0x9380, 0x0086, 0xe980\n"
        " .word 0xe091, 0x9390, 0x008b, 0x9380\n"
        " .word 0x008a, 0x919f, 0x918f\n"
        ::);
    }
    Par ce moyen (utilisation de directives __asm__), on peut même passer des paramètres au code offusqué et récupérer des valeurs de retour.

  11. #10
    HAYAC

    Re : Arduino, bibliothèques précompilées

    Merci à toi PA5CAL,

    Pourrais-tu développer cette explication ?
    Je connaissait l'emploi de l’assembleur dans ce cadre mais comment compile tu une fonction ou une bibliothèque pour un usage de la sorte ?
    Je ne développe pas du tout en assembleur, par manque de temps (pour son apprentissage) sachant pourtant que c'est la façon la plus propre et la plus performante.
    Dans ce sens, il me semble complexe d'utiliser cette méthode pour des routines complexes ?!
    Cordialement,

  12. #11
    PA5CAL

    Re : Arduino, bibliothèques précompilées

    Citation Envoyé par HAYAC Voir le message
    Par contre, si tu veux effectivement protéger tes développements le plus simple est e distribuer le produit fini soit HEX.
    Sur beaucoup de forum, c'est le moyen employé pour faire participer les gents à l'usage d'un développement tout en gardant les sources...
    (Que le produit soit gratuits ou autre).
    Cela imposerait alors de créer un produit complet et non adaptable, car le format HEX n'est pas prévu pour faire coexister et lier ensemble des codes séparés (ce n'est pas impossible, mais réclame qu'on se livre à des tripatouillages du côté client).

    Ici il est question d'une bibliothèque logicielle, censée être utilisée avec un code produit plus tard par l'utilisateur.

  13. #12
    PA5CAL

    Re : Arduino, bibliothèques précompilées

    Citation Envoyé par HAYAC Voir le message
    Pourrais-tu développer cette explication ?
    Je connaissait l'emploi de l’assembleur dans ce cadre mais comment compile tu une fonction ou une bibliothèque pour un usage de la sorte ?
    Je ne développe pas du tout en assembleur, par manque de temps (pour son apprentissage) sachant pourtant que c'est la façon la plus propre et la plus performante.
    Pour l'essentiel, il ne s'agit pas de développer en assembleur (d'ailleurs, le code donné ici en exemple a été écrit en langage C). L'assembleur n'intervient que comme un moyen d'intégration du résultat au code source de l'utilisateur. On aurait pu aussi utiliser des tableaux de constantes en langage C avec la directive PROGMEM.

    Concernant le traitement, je me suis assuré que la compilation produisait un code relogeable (avec des RCALL et RJMP, mais pas de CALL ni de JMP), et précisé que je souhaitais avoir une trace de l'assembleur correspondant afin de faire des vérifications. J'ai ajouté à la liste des valeurs hexa du code généré des éléments garantissant la sauvegarde des registres utilisés (en l'occurrence je me suis contenté de mettre des PUSH et des PULL, mais la directive __asm__ propose sur ce point un mécanisme beaucoup plus souple et automatique). S'il y avait eu des paramètres ou des valeurs de retour, je les aurais d'abord repérés dans le code en assembleur, puis je les aurais remplacés par des variables dans la directive __asm__ afin qu'ils soient pris en compte et correctement adaptés lors de la recompilation par l'utilisateur.

    Citation Envoyé par HAYAC Voir le message
    Dans ce sens, il me semble complexe d'utiliser cette méthode pour des routines complexes ?!
    Je n'ai jamais prétendu que c'était simple et direct. Mais ça n'en constitue pas moins une possibilité offerte au développeur de la bibliothèque, qui n'interfère pas avec les développements réalisés par l'utilisateur.
    Dernière modification par PA5CAL ; 05/08/2015 à 11h15.

  14. #13
    HAYAC

    Re : Arduino, bibliothèques précompilées

    Merci pour toute ses explications claire et précises.

    Je n'ai jamais prétendu que c'était simple et direct.
    .
    Effectivement, à mon age je n'est plus ce type d'espoir.
    Par experience même des sujets qui semble simple peuvent ce révéler extrêmement complexe.

    Merci encore, Cordialement,

Discussions similaires

  1. Bibliothèques PSPICE
    Par Harry12 dans le forum Électronique
    Réponses: 4
    Dernier message: 17/05/2013, 18h09
  2. Installation bibliothèques
    Par invite93845cf6 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 20/04/2010, 13h55
  3. bibliotheques java
    Par ABN84 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 29/09/2007, 17h43
  4. Bibliothèques
    Par invite91a05f0b dans le forum Électronique
    Réponses: 4
    Dernier message: 11/07/2006, 11h31
  5. bibliotheques
    Par invited6b42adc dans le forum Lectures scientifiques
    Réponses: 1
    Dernier message: 28/12/2005, 16h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.