Il est assez pénible de devoir lancer l’interface graphique vivado et d’ouvrir un projet juste pour aller «flasher» un bitstream sur un FPGA. Surtout quand on est sorti du «mode développement» pour passer en «mode usage» de notre FPGA. Voici donc une méthode pour pouvoir configurer son FPGA par JTaG en mode «console».
C’est finalement plutôt bien expliqué dans le document UG835 (page 934). Mais je le poste quand même ici par soucis de référencement. Car je n’ai pas trouvé directement le howto quand j’ai cherché la méthode.
Une fois qu’on a alimenté son FPGA et que la sonde USB-Jtag est branchée et reconnue par le système, on peut lancer Vivado en mode console via la commande :
On tombe sur l’invite de commande suivante :
Il faut ensuite démarrer le serveur et s’y connecter :
On peut connaître le nom de la sonde qui sera utilisée par défaut via la commande current_hw_target.
Et s’y connecter avec open_hw_target :
Le nom du FPGA de destination est donné par la commande current_hw_device :
Il faut ensuite configurer le path du bitstream que l’on veut charger avec la commande set_property:
Et envoyer le bousin dans le tuyau avec la commande program_hw_device:
Et le tour est joué, le FPGA est configuré.
Et si on ne veut pas se prendre la tête, on peut mettre tout ça dans un script configure_fpga.tcl comme ci dessous:
Ça y est, Armadeus sort sa carte Opos6ul à base d’imx6ul. Cette carte intéressera tous les bricoleurs de Raspberry Pi qui cherchent à industrialiser leur produit.
The new opos6UL sodimm board with a Wifi/Bt and 4GB eMMC
En effet, l’un des principal problème de la raspberry pi est la difficulté d’un approvisionnement pérenne dans le temps.
Armadeus garantit un approvisionnement de ses modules pendant au moins 10 ans. Ce qui donne une marge confortable pour concevoir son produit et le sortir sur le marché.
Cerise sur le gâteau, le kit de développement minimal pour commencer à jouer avec n’est qu’à 49€ht. Plus d’excuse pour se lancer dans le Linux embarqué et monter en gamme ses produits.
Je n’ai pas trouvé de listes des primaires ouvertes sur le web pour les élections présidentielles. Alors je pose ça là
Laprimaire.org : Gratuit ! Mais vous pouvez faire un don pour encourager le concept. Il faut 100 000 personnes inscrites pour que la primaire ait lieu, inscrivez vous vite c’est gratuit. Il y a déjà 62000 inscrits
Écolos : 5€ (tain c’est cher), s’inscrire avant le 1 octobre 2016 et vote par correspondance (internet ?)
Alors voila, vous avez bien avancé dans votre projet FPGA avec Vivado. Mais vous souhaiteriez le conserver et surtout le versionner de manière à pouvoir le reproduire et le réutiliser ailleurs.
Le document xapp1165 de Xilinx donne la marche à suivre, il suffit de lire le chapitre «project mode».
Voici un petit résumé:
write_project_tcl
Tout d’abord il faut bien sûr lancer vivado et ouvrir son projet. Une fois cela fait, il faut se rendre dans la console tcl et lancer la commande write_project_tcl:
write_project_tcl monprojetperso_project
INFO: [Vivado-projutils-8] Tcl script 'monprojetperso_project.tcl' generated in output directory '/usr/local/opt/Xilinx/Vivado/2016.2/bin'
INFO: [Vivado-projutils-15] Please note that by default, the file path for the project source files were set wrt the 'origin_dir' variable in the
generated script. When this script is executed from the output directory, these source files will be referenced wrt this 'origin_dir' path value.
In case this script was later physically moved to a different directory, the 'origin_dir' value MUST be set manually in the script with the path
relative to the new output directory to make sure that the source files are referenced correctly from the original project. You can also set the
'origin_dir' automatically by setting the 'origin_dir_loc' variable in the tcl shell before sourcing this generated script. The 'origin_dir_loc'
variable should be set to the path relative to the new output directory. Alternatively, if you are sourcing the script from the Vivado command line,
then set the origin dir using '-tclargs --origin_dir '. For example, 'vivado -mode tcl -source monprojetperso_project.tcl -tclargs --origin_dir ".."
WARNING: [Vivado-projutils-10] Found source(s) that were local or imported into the project. If this project is being source controlled, then
please ensure that the project source(s) are also part of this source controlled data. The list of these local source(s) can be found in the generated script
under the header section.
Un message d’information nous indique où se trouve le script tcl ainsi généré (ici : /usr/local/opt/Xilinx/Vivado/2016.2/bin). Il suffit donc de copier ce script dans le répertoire que nous souhaitons versionner.
cd ~/monprojet/
cp /usr/local/opt/Xilinx/Vivado/2016.2/bin/monprojetperso_project.tcl
Mais ça n’est pas le seul fichier que nous devons versionner si nous souhaitons pouvoir le reconstruire. Les autres fichiers à sauvegarder son indiquer dans l’entête du script :
#*****************************************************************************************
# NOTE: In order to use this script for source control purposes, please make sure that the
# following files are added to the source control system:-
#
# 1. This project restoration tcl script (monprojetperso_project.tcl) that was generated.
#
# 2. The following source(s) files that were local or imported into the original project.
# (Please see the '$orig_proj_dir' and '$origin_dir' variable setting below at the start of the script)
#
#
#
# 3. The following remote source files that were added to the original project:-
#
# "/usr/local/projects/monprojetperso/hardware/monprojetpersomonoproc/monprojetperso/monprojetperso.srcs/sources_1/bd/pea_monprojetperso/pea_monprojetperso.bd"
# "/usr/local/projects/monprojetperso/hardware/monprojetpersomonoproc/monprojetperso/monprojetperso.srcs/sources_1/imports/hdl/pea_monprojetperso_wrapper.vhd"
# "/usr/local/projects/monprojetperso/hardware/monprojetpersomonoproc/monprojetperso/monprojetperso.srcs/sources_1/bd/pea_monprojetperso/ip/pea_monprojetperso_mig_7series_0_0/mig_a.prj"
# "/usr/local/projects/monprojetperso/hardware/monprojetpersomonoproc/monprojetperso/monprojetperso.srcs/sources_1/bd/pea_monprojetperso/ip/pea_monprojetperso_mig_7series_0_0/mig_b.prj"
# "/usr/local/projects/monprojetperso/hardware/monprojetpersomonoproc/monprojetperso/monprojetperso.srcs/constrs_1/new/monprojetperso_constraints.xdc"
#
#*****************************************************************************************
… pour un cerveau en bonne santé et un web plus propre, nous vous conseillons d’en installer un.
Étant un peu fatigué de me faire traiter de voleur quand je navigue sur le web, j’avais envie de faire passer le message inverse aux (rares) personnes qui s’aventureraient sur mon site sans bloqueur la publicité.
La publicité est un fléau qui perturbe notre esprit et manipule l’information soit disant «indépendante» des supports qui l’utilisent. De plus, elle impose une «taxe privée» sur tous les produits que l’on achètent (la pub n’est pas du tout gratuite, c’est bien le consommateur qui paye).
L’idée est donc d’afficher un message en encart à gauche sur mon site qui se fasse bloquer si la personne bloque la pub. Comme c’est un wordpress mon but est aussi de faire le moins de code php/javascript/html possible en utilisant les outils intégrés.
Ajout de l’encart
Pour ajouter cet encart il suffit simplement de se rendre dans l’interface d’administration de son wordpress et d’ouvrir le menu «apparence->widget». Dans la liste des widgets disponibles par défaut se trouve normalement un widget «texte». Il suffit de le faire glisser dans la zone où l’on souhaite voir apparaitre le texte.
Pour que le texte se fasse bloquer par votre bloqueur de publicité l’astuce est de l’encadrer par une balise div nommé «blogads» tout simplement.
Et voila ! Si vous bloquez la publicité vous ne verrez pas l’encart en haut à droite de ce site. Sinon vous aurez le message.
Par contre je doit avoir un peu trop de bloqueurs de publicités d’installés sur mon firefox car même si je désactive ublock origin et ghostery je ne vois pas l’encart. Je suis obligé de tester avec Konqueror pour le voir 😉
Quand on lance le script d’installation de Vivado 2016.2 téléchargé ici, on obtient l’erreur suivante :
$ ./Xilinx_Vivado_SDK_2016.2_0605_1_Lin64.bin
Verifying archive integrity... All good.
Uncompressing Xilinx Installer.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
ERROR: This installation is not supported on 32 bit platforms.
Alors qu’on est bien sur une debian 64bits.
Pas la peine d’aller demander à Xilinx ils vous enverrons chier en vous disant qu’ils ne supportent que redhat !
Donc il faut sortir sa b*$# et son couteau et lancer le script en mode «confirm» :
$ ./Xilinx_Vivado_SDK_2016.2_0605_1_Lin64.bin --confirm
Verifying archive integrity... All good.
About to extract 19 KB in /tmp/selfgz968619493 ... Proceed ? [Y/n] y
Uncompressing Xilinx Installer.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
OK to execute: ./xsetup ? [Y/n]
On répond ‘Y’ à la première question, cela nous permet de récupérer le path de téléchargement de l’archive – ici /tmp/selfgz968619493 – et de pouvoir modifier le script xsetup avant qu’il soit lancé:
# Dans un autre terminal éditer le script :
$ vim /tmp/selfgz968619493/xsetup
Et virer le code suivant :
# ERROR out if this installation is running on 32 bit OS
# and does not support 32 bit installation
if [ "$(uname -i)" != "x86_64" ]; then
# check that the 32 bit library directory exist or not
lnx32LibDir="${workingDir}/lib/lnx32.o"
if [ ! -d $lnx32LibDir ]; then
# terminate with an ERROR
echo "ERROR: This installation is not supported on 32 bit platforms."
exit 1;
fi
fi
Qui ne fonctionne pas correctement.
Il suffit ensuite de retourner dans la première console et faire ‘y’ pour lancer xsetup ainsi modifié.
Si on nous rabâche les oreilles sur cette Allemagne qui va bien mieux que les autres pays d’europe c’est parce que nos média et politique on les yeux rivés sur de mauvais indicateurs.
En effet les seuls indicateurs qui les importent sont : la Sainte Croissance du PIB qui détruit nos ressources naturelles et le taux de chômage, quitte à revenir à l’esclavage pour que tout le monde travail (pas de smic, faire faire du bénévolat aux chômeurs, …).
Pourtant il existe d’autres indicateurs tout à fait pertinent pour mesurer la «bonne santé» du pays.
Par exemple on pourrait parler de l’indice de pauvreté qui est meilleur en France qu’en Allemagne. Et la tendance est à l’aggravation pour l’Allemagne.
Certain me répondrons que l’indice de pauvreté est un pourcentage du salaire médian du pays, donc il ne mesure pas la même chose suivant le pays. Mais justement, le salaire médian en France est plus élevé que le salaire médian en Allemagne !
Du coup, non seulement l’Allemagne a plus de pauvres, mais ils sont plus pauvre que les pauvres Français.
Et je ne parlerais pas du désastre écologique allemand (Électricité au charbon, parc automobile monstrueux, une des émission de CO² par habitant la plus élevée d’europe, …).
Bref arrêtons de citer l’Allemagne en exemple, elle va plus mal que nous.
Armadeus has changed its trademark name to OposSOM after the ARM company asked it. The company can still be called Armadeus, but all new communications will be done with the new name OposSOM.
OposSOM is a contraction of the animal opossum and the acronym SOM (System On Module). And futur module will be named with OPOS prefix now.
The new opos6UL sodimm board with a Wifi/Bt and 4GB eMMC
For example, the new raspberry-Pi compatible module with an i.MX6UL will be named opos6UL.
Pour équiper une chambre d’enfant, nous venons de recevoir cette superbe armoire deux portes Pinolino commandée sur le site Natiloo/greenweez.
L’armoire a été livrée en 3 colis sur une palette en deux semaines comme promis. L’armoire étant en bois assez massif, les 3 colis sont super lourd et nécessite de les ouvrir pour les monter dans la chambre de destination.
Tout allait bien jusqu’à ce que nous commencions le montage de l’armoire. Rendu à la moitiée du montage, nous nous sommes rendu compte qu’une pièce avait été échangée dans le colis : le montant latéral gauche à été remplacé par un montant latéral droit.
Impossible de terminer le montage de l’engin qui reste planté à moitié fini au milieu de la chambre :
Début de la quête
Commence donc le parcours du combattant avec le site Natiloo. N’ayant aucune envie de démonter l’armoire pour la renvoyer en garantie, le but est de pouvoir se faire renvoyer la bonne pièce.
Le premier réflex est bien sur de se rendre sur la page de la commande sur le site Natiloo et de chercher à les contacter via le … formulaire de contact !
Sauf que lorsque l’on clique sur «contact» le lien nous envois sur un autre site nommé greenweez qui a exactement la même architecture que Natiloo, mais qui oblige à recréer un nouveau compte pour pouvoir accéder au contact.
Même avec le compte créé, le formulaire de contact n’est pas si facile d’accès, il faut trouver la bonne question qui permettra de laisser un mot. Car la plupart des questions du menu ne donne que des réponses types et ne permettent pas d’envoyer un message.
Une fois le message envoyé on reçois un mail automatique nous promettant que la réponse arrivera dans les 24Heures, 48heures maximum promis …
48heures passent sans réponse.
72heures passent sans réponse.
N’ayant toujours pas de réponse nous devons donc nous résoudre à appeler le numéro (en 04) donné sur le site de greenweez. À notre grande surprise on arrive à joindre un opérateur rapidement : il envoi un message au fournisseur et nous aurons une réponse dans les 24heures promis …
2 jours passe et nous rappelons … l’opérateur contact son supérieur qui va nous répondre dans la journée, évidemment pas de réponse.
[edit]
Fin de la quête : Pinolino nous a envoyé la bonne pièce sans discuter. Le problème venait de greenweez qui se fout de la gueule de ses clients en les baladant de messageries téléphoniques en centres d’appels délocalisés sans résoudre le problème: à fuir !
Dans la série que faire avec des blancs d’œufs, voici un truc de bouffeurs de graines : faire des meringues avec du jus de boite.
Bon, pas avec n’importe quel jus de boite, il faut pour cela des boites de légumes secs comme les pois chiches, haricots blancs, …
Perso j’ai mis la boite au frigo la veille car je crois qu’il faut que ça soit bien froid pour monter en neige.
Une fois le jus des pois chiches versé dans un cul de poule, il suffit de les battre comme pour les blancs d’œufs. Et ça se comporte exactement de la même manière la seule différence étant l’odeur : ça sent le pois chiche !
Quand les blancs d’œufs le jus battu est bien ferme il suffit d’incorporer le sucre délicatement comme on fait d’habitude pour les meringues.
On met ensuite la pâte en petits tas sur du papier sulfurisé et on enfourne à 110-120°C pendant 1h30 ou plus.
Alors c’est très surprenant à faire, le jus de pois chiche se comporte exactement comme le blanc d’œuf. Par contre c’est pas terrible, il faut bien charger en sucre pour faire disparaitre le goût et celui qui les a cuisiné est dégouté d’en manger.
This repository shows how to convert a complex VHDL design into a single, synthesizable, plain-Verilog module using GHDL's synthesis feature. — Permalink
Pour lister les boites à livres sur Colmar dans openstreet map : [out:json][timeout:25]; // Définir la zone autour de Colmar ( node["amenity"="public_bookcase"](http://48.044,7.311,48.116,7.398); way["amenity"="public_bookcase"](http://48.044,7.311,48.116,7.398); relation["amenity"="public_bookcase"](http://48.044,7.311,48.116,7.398); ); out body; >; out skel qt; `` — Permalink
Votre shell n'a pas la completion ni le rappel des commandes de l'historique ? Pas grave, avec rlwrap vous pouvez les ajouter sans rien modifier au programme. Exemple avec tclsh: $ rlwrap tclsh % puts "c'est fastidieux sans rappel de l'historique" c'est fastidieux sans rappel de l'historique %[flèche haut] % puts "c'est fastidieux sans rappel […]