Poulet industriel ou poulet bio ?

Twitter est un éleveur de poulets en batterie. L’objectif principal de cet éleveur est que ça piaille et que ça se batte dans la basse cour.
Pour cela Twitter multiplie les contraintes pour vous énerver et vous faire réagir : limitation des messages à 140 caractères, mise en valeurs des messages les plus polémiques, publicité incessante, …
L’utilisation de twitter est mauvaise pour les nerfs et produit de la mauvaise viande.
 
Mais il existe un autre système basé sur de l’élevage de poulets en liberté avec des restrictions moindre et moins d’énervement : mastodon
https://joinmastodon.org/
Du bon poulets de Loué ™ 😉
Pour utiliser mastodon il faut choisir parmi les nombreux élevages disponibles dans le monde:
Et si l’on se sent l’âme d’un éleveur il est même possible de monter le sien.
Du point de vue du poulet, mastodon fonctionne comme twitter (l’énervement en moins). Les messages sont limités à 500 caractères, on peux faire des «hashtag» comme dans twitter.
On ne parle pas de twit mais de pouet (toot) et re-pouet. Il est possible de suivre les pouets des autres poulets, même quand ils sont dans un autre élevage.
Si vous souhaitez me suivre, mon poulet se trouve dans l’élevage du parti pirate et se nomme Martoni :
https://mastodon.partipirate.org/@Martoni
Bon pouet !

Publié dans Non classé | Laisser un commentaire

«Il vaut mieux avoir l’état d’urgence même s’il ne se passe rien, que de risquer qu’il se passe quelque chose de pire sans état d’urgence.»

[Via mastodon]

Publié le par admin | Laisser un commentaire

Sortie de l’opos6ul_nano, version micro de l’opos6ul

La nouvelle Opos6ul_nano qui tien entre deux doigts

La nouvelle Opos6ul_nano qui tient entre deux doigts

 

L’OPOS6UL est une petite carte Linux embarqué à base d’i.MX6UL permettant de faire tourner ses applications Raspberry-Pi(TM) sur un produit industriel.

l’opos6UL sodimm board avec le Wifi/Bt et 4GB eMMC

Cette carte est déjà relativement petite au format SODIMM, mais visiblement elle était encore trop grande pour certain. C’est pourquoi Armadeus Systems sort maintenant la version ultra-mini de cette carte au format NGFF (M.2) : l’OPOS6UL_NANO.

Carte quasiment 3 fois plus petite que sa grande sœur, mais avec les même caractéristiques qui ont fait le succès de l’opos6ul :

  • Linux embarqué bien sûr
  • i.MX6UL ou i.MX6ULL
  • Wifi
  • BT
  • Ethernet
  • USB2
  • SPI
  • I²C
  • GPIO
Un aperçu de la taille de l'opos6ul_nano à coté de sa grande sœur.

Un aperçu de la taille de l’opos6ul_nano à coté de sa grande sœur.

Le module est compatible avec la carte de développement de l’opos6ul en utilisant un adaptateur.

Bien sûr il est possible de monter la nouvelle opos6ul_nano sur la carte de développement de l'opos6ul.

Bien sûr il est possible de monter la nouvelle opos6ul_nano sur la carte de développement de l’opos6ul.

Il est donc toujours possible de faire un développement «Raspberry-Pi compatible» grâce au connecteur Raspberry-Pi(TM) présent sur cette carte de développement.

-> Fiche technique de l’opos6ul_nano sur le site officiel.

Publié dans embarqué, informatique | Laisser un commentaire

Theresa May

« Si les lois des droits de l’homme entravent la lutte contre l’extrémisme et le terrorisme, nous changerons ces lois pour protéger le peuple britannique. »

Publié dans Non classé | Laisser un commentaire

Tablette Wacom Intuos Draw sous Debian Jessie

Salut,

Je viens de claquer mon fric sur un coup de tête d’investir dans une tablette graphique Wacom Intuos Draw. L’objectif est de pouvoir faire sur ordinateur les petits dessins que j’ai appris à faire en suivant le bouquin «you can draw in 30 days».

J’ai quand même cherché une tablette qui soit compatible avec Linux. L’idéal aurait-été que TuBranchesÇaMarche sur une Debian Jessie.

Mais ça n’a pas tout à fait été le cas puisqu’il a tout de même fallu recompiler le driver. Bon on en est finalement pas très loin la recompilation du driver est vraiment très simple et se fait très vite.

L’explication est donnée sur le wiki du projet input-wacom pour les distri Debian, Ubuntu, Mint, Suse et Redhat.

Une fois le driver compilé et installé, il n’y a même pas à tripoter des fichiers de config, ça marche direct.

Voici mes premiers ébats dessinatoire avec MyPaint :

Bref, ça marche bien et c’est plutôt rigolo. L’avenir nous dira si ça reste un gadget.

[edit] Quelques trucs utiles sous Linux:

Pour voir les options de la tablette

xsetwacom list dev
xrandrLangage du code : PHP (php)

Pour mapper la tablette sur un seul écran

xsetwacom --set 20 MapToOutput VGA-1Langage du code : JavaScript (javascript)

Autres conseils utiles:

Publié dans dessin | Marqué avec | Laisser un commentaire

Comment indiquer la version de son projet dans le bitstream vivado ?

En règle générale on aime bien avoir la version du firmware générée sur lequel tourne notre FPGA. Cependant, pour intégrer une date de compile, une version de logiciel ou autre dans un bitstream, cela ne se fait pas très simplement.

L’exemple ici est certainement quick&dirty, mais c’est une solution possible pour résoudre ce problème. Le système est conçu via le «blocs designer» de vivado et contient un microblaze.

Pour pouvoir ajouter des «registres» spécifiques sans avoir à coder en HDL on intégrera un bloc de ROM nommé «Distributed Memory Generator». Pour intégrer ce bloc dans l’espace mémoire du Microblaze on ajoutera un contrôleur de ram AXI comme le montre la saisie d’écran ci-dessous:

Ce bloc peut être configuré via un fichier texte avec l’extension «.coe» qui contiendra les valeurs.


memory_initialization_radix=10;
memory_initialization_vector=1562 1490616824 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

La variable memory_initialization indique la base (ici du décimal) des valeurs données dans le vecteur memory_initialization_vector. Dans cet exemple, trois valeurs sont données : la période de l’horloge du contrôleur de DDR, la date en secondes unix et la version.

Plutôt que d’avoir à modifier notre fichier *.coe à chaque synthèse, nous allons écrire un script tcl qui sera appelé automatiquement par vivado à chaque synthèse/placement-routage. Le TCL est un langage de script que beaucoup de logiciels d’électronique sont capable d’éxecuter, c’est le cas de vivado (tcl version 8.5).

Le répertoire du projet est donné par la commande tcl :


set current_project_dir [get_property DIRECTORY [current_project]]

On peut l’afficher au besoin dans la console «Messages» de vivado avec puts :


puts $current_project_dir

période du contrôleur de DDR

L’idée ici est d’aller chercher l’information dans le fichier datasheet.txt généré par le fucking MIG. La méthode Quick&Dirty pour récupérer l’info dans le fichier est de découper le texte à coup de split et de lindex pour se focaliser sur la «Design Clock Frequency».

...
/*******************************************************/
/*                  Controller 0                       */
/*******************************************************/
Controller Options :
   Memory                        : DDR3_SDRAM
   Interface                     : AXI
   Design Clock Frequency        : 1562 ps (  0.00 MHz)
   Phy to Controller Clock Ratio : 4:1
   Input Clock Period            : 5077 ps
   CLKFBOUT_MULT (PLL)           : 13
   DIVCLK_DIVIDE (PLL)           : 2
   VCC_AUX IO                    : 1.8V
   Memory Type                   : Components
   Memory Part                   : MT41K1G8SN-125
   Equivalent Part(s)            : --
   Data Width                    : 8
   ECC                           : Disabled
   Data Mask                     : enabled
   ORDERING                      : Normal
...

La période est ainsi stockée dans la variable $period :


# Get DDR period
set fp [open "$current_project_dir/../../../projet.srcs/sources_1/bd/ {...} /datasheet.txt"]
set filedata [read $fp]
set data [split $filedata "\n"]
foreach line $data {
	if {[regexp {Design} $line]} {
		set period [expr [lindex [split [lindex [split $line ":"] 1] "ps"] 0]]
	} 
}

version

Pour la version c’est à nous de définir un «generic» dans le projet avec le nom que nous voulons (par exemple ProjectVersion). Ce generic se définit dans le menu setting du projet, pour cette exemple il sera défini à ‘1’, quelle originalité !

Ce generic se retrouve ensuite dans le fichier xml du projet au format *.xpr. De la même manière que pour la period du contrôleur de DDR, nous allons lire ce fichier au moyen d’une savante boucle de découpage split et lindex:


set fp [open "$current_project_dir/../../project.xpr"]
set filedata [read $fp]
set data [split $filedata "\n"]
foreach line $data {
	if {[regexp {ProjectVersion} $line]} {
		set ProjectVersion [lindex [split [string trim $line] "\""] 3]
	} 
}

date

Pour la date c’est beaucoup plus simple puisqu’il existe une commande tcl (>=8.5) qui nous donne les «seconds unix» : clock seconds.


set thetime [clock seconds]

Enregistrement du fichier coe

Il suffit pour cela d’ouvrir en écriture le pathname que nous désinons écrire puis ajouter les valeurs avec puts :


# Write coe file for rom
set wfp [open "$current_project_dir/../../../../rom_version.coe" w]
puts $wfp "memory_initialization_radix=10;"
puts $wfp "memory_initialization_vector=$period $thetime $ProjectVersion 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;"

Ajout du crochet (hook)

Pour que notre script tcl soit appelé automatiquement par vivado il faut le définir comme un «hook» de pre-synthèse. Pour cela il faut se rendre dans le menu de configuration de la synthèse:

Puis sélectionner notre script name.tcl dans l’option tcl.pre (pour pre-synthèse).

Le script sera exécuté dans le répertoire :

project/project.runs/run_name/

Il suffit maintenant de lancer la synthèse pour que notre «hook» soit lancé avant la synthèse et remplisse correctement la rom de paramètres de notre design.

Publié dans informatique | Marqué avec , , , | Laisser un commentaire

Comment configurer son FPGA en mode console avec Vivado

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 :

$ vivado -mode tcl

On tombe sur l’invite de commande suivante :

$ vivado -mode tcl

****** Vivado v2016.4 (64-bit)
  **** SW Build 1756540 on Mon Jan 23 19:11:19 MST 2017
  **** IP Build 1755317 on Mon Jan 23 20:30:07 MST 2017
    ** Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.

Vivado%

Il faut ensuite démarrer le serveur et s’y connecter :

Vivado% connect_hw_server
INFO: [Labtools 27-2285] Connecting to hw_server url TCP:localhost:3121
INFO: [Labtools 27-2222] Launching hw_server...
INFO: [Labtools 27-2221] Launch Output:

****** Xilinx hw_server v2016.4
  **** Build date : Jan 23 2017-19:28:34
    ** Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.

localhost:3121

On peut connaître le nom de la sonde qui sera utilisée par défaut via la commande current_hw_target.

Vivado% current_hw_target
localhost:3121/xilinx_tcf/Digilent/210249A062D9

Et s’y connecter avec open_hw_target :

Vivado% open_hw_target
INFO: [Labtoolstcl 44-466] Opening hw_target localhost:3121/xilinx_tcf/Digilent/210249A062D9

Le nom du FPGA de destination est donné par la commande current_hw_device :

Vivado% current_hw_device
xc7k160t_0

Il faut ensuite configurer le path du bitstream que l’on veut charger avec la commande set_property:

Vivado% set_property PROGRAM.FILE {/home/martoni/mybitstream.bit} [current_hw_device]

Et envoyer le bousin dans le tuyau avec la commande program_hw_device:

Vivado% program_hw_device
INFO: [Labtools 27-3164] End of startup status: HIGH
program_hw_devices: Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 1032.965 ; gain = 0.000 ; free physical = 291 ; free virtual = 12527

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:


set bitstream [lindex $argv 0]
puts "Configuring FPGA with file $bitstream";

open_hw
connect_hw_server
refresh_hw_server
current_hw_target
open_hw_target
current_hw_device
set_property PROGRAM.FILE $bitstream [current_hw_device]
program_hw_device
puts "FPGA configured with $bitstream";

Et le lancer avec la commande :

vivado -mode batch -source configure_fpga.tcl -tclargs bitstream.bit

Publié dans fpga | Marqué avec , , , , | Laisser un commentaire

Une carte équivalente raspberry pi en industrielle pour seulement 49€

Ç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

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.

opos6ul_dev

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.

Liens:

Publié dans embarqué, informatique | Laisser un commentaire

Listes des primaires ouvertes pour 2017

Je n’ai pas trouvé de listes des primaires ouvertes sur le web pour les élections présidentielles. Alors je pose ça là

Publié dans Non classé | Laisser un commentaire

Comment versionner son projet vivado ?

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 il suffira donc de copier les fichiers indiqués dans notre répertoire projet et de modifier le script pour ajuster les path.
Une meilleurs explication sur le blog de xillibus.

Publié dans fpga, Non classé | Laisser un commentaire