FreeSoc2

Complément à la page https://learn.sparkfun.com/tutorials/freesoc2-introduction#using-the-arduino-ide
et https://www.hackster.io/sfuptownmaker/freesoc2-introduction-520416
pour l’utilisation de la carte FreeSoc2 avec l’outil Arduino :

 

    1. Du côté PsocCreator :
      • Installer PSocCeator pour cela il faudra activer le framework .net 3.5 avec Windows Features.
      • Récupérer les fichiers supports fournit par Gagan Luthra :
        https://halckemy.s3.amazonaws.com/uploads/document/file/50623/PSoC_Arduino_Support-master.zip. Ce fichier contient un projet pour PsocCreator qui hélas ne fonctionne pas sur des versions récentes de l’outil.
      • Certains fichiers dont on aura besoin pour la compilation Arduino sont manquants, il va donc falloir construire le projet complet avec une version plus récente de PsocCreator. Hélas, les versions des composants ne correspondent pas
      • Après avoir décompressé <PsoC_Arduino_Support-master.zip>, ouvrir le projet <Arduino_Support_Master/Arduino_Support.cywrk> avec Psoc
        Creator. Il faudra enlever la propriété « lecture seule » pour tous les dossiers.
      • Dans la page 2 du TopDesign du projet Bootloader activer l’UART.
      • Effectuer un premier <BuildAll>, des erreurs apparaissent. Double cliquer sur la première erreur concernant une version de composant et qui fait apparaitre « Component update tool » . PsocCreator vous propose de mettre à jour les composants. Il faut garder certaines versions notamment celle du bootloader à 1.3, USBUART dans USB : 2.80.
        updating component :

         

      • Nous allons d’abord construire le bootLoader seul pour cela enlever la dépendance qui lie le projet BootLoader et le projet Uno_blocks ( clique droit sur le projet Depencies.). Vous pourrez la rétablir ultérieurement.
      • La construction du projet BootLoader devrait se passer correctement.
      • Puis nous construisons le projet Uno_block.
      • Des erreurs apparaissent pour y remédier suivre les indication de PsocCreator. Changer le dossier de dépendencie pour le composant bootloadable .hex et .elf.
      • Changer les adresses de chargement des composants BootLoadable.
      • Les codes sources pour certaines librairies manquent ( pe : APDS9966.cpp) : enlever du projet les librairies qu’il ne trouve pas. Elles sont indiquées en grisé avec point d’interrogation.Pour la fonction utoa en double en supprimer une des deux.
      • La version Debug ne fonctionnera pas car elle ne respecte pas le timing de AvrDude donc il faut construire en mode release. Clique droit sur le Worspace ->properties -> changer active build configuration de Debug en Release.
      • Nettoyer la solution puis faites une reconstruction complète.
      • Programmer votre carte Psoc.
      • PsocCreator doit vous avoir générer l’ensemble des fichiers utiles à la
        compilation dans l’environnement Arduino.
      • Eventuellement passer TIMEOUT_PERIOD à 480000000UL dans le main.c de Bootloader pour avoir 20 secondes avant le boot.

 

  1. Du côté Arduino :
    • installer SamBoard avec le gestionnaire de carte de l’IDE Arduino.
    • Choisir Arduino ARM boards.
    • Avec le kit généré par PSocCreator :
    • Copier le dossier <Hardware> contenu dans <PsoC_Arduino_Support-master.zip> fourni par sparkfun et coller le dans « …..\Arduino\Hardware\ ».
    • Compléter le avec les fichier générés par PsocCreator :
    • Prendre dans C:\Users\XXX/Documents\Arduino\PSoC_Arduino_Support-master\PSoC_Arduino_Support-Master\Uno_blocks.cydsn\Generated_Source\PSoC5\ tous les fichiers générés.et coller dans C:\Program Files (x86)\Arduino\Hardware\SparkFun\psoc\cores\arduino .
    • Dans C:\Users\XXX/Documents\Arduino\PSoC_Arduino_Support-master\PSoC_Arduino_Support-Master\Boot_loader.cydsn\ Prendre le .hex.et coller dans C:\Program Files (x86)\Arduino\Hardware\SparkFun\psoc\ .
    • copier le Uno_blocks.a généré par PSocCreator dans C:\Users\fm\Documents\PSoC Creator\PSoC_Arduino_Support-master\PSoC_Arduino_Support-master\Uno_blocks.cydsn\CortexM3\ARM_GCC_541\Release et le coller dans C:\Program Files (x86)\Arduino\hardware\SparkFun\psoc\variants\standard .
    • cycodeshareexport.ld est vide ? Commenter les import dans C:\Program Files (x86)\Arduino\hardware\SparkFun\psoc\cores\arduino\cm3gcc.ld
    • Relancer l’environement Arduino.
    • commenter la ligne #define PWM_1_UseOneCompareMode (0u) dans PWM_1.h puis PWM_2.h puis PWM_3.h et ajouter ces 3 includes dans project.h
    • Essayer une compilation de Blink sous Arduino.NB : Si on a pas mis à jour les fichiers .a et .hex : Il y a encore un problème d’adresse mémoire car nous avons mis notre bootloader en 4800h !
      section .text loaded at [00002800,00011daf] overlaps section .cybootloader loaded at [00000000,000041ff]
    • Programmation :
    • brancher sur l’USB Target.
    • Appuyer sur le bouton de la carte Target-reset, le Bootloader se lance et la diode clignote.
    • Lancer le téléchargement Arduino. Quand le téléchargement commence. La Diode Arduino clignote rapidement pendant 10 seconde et avrdude trouve le bon port tout seul
    • C’est ici que je me suis rendu compte qu’il y avait un gros bug dans main.c du bootloader du projet PSocCreator dans la la fonction CyBtldrCommWrite : *count = 0; alors que count=NULLIl faut donc corriger le main.c dans la fonction CyBtldrCommWrite en prenant en compte le cas où le pointeur count est NULL :
      uint16 aCountAux;
      if (count==NULL)
      count = &aCountAux;

Les fichiers générés se trouvent ici.