hyperref dans ta gueule
authorPaul Kocialkowski <contact@paulk.fr>
Wed, 13 May 2015 18:35:35 +0000 (20:35 +0200)
committerPaul Kocialkowski <contact@paulk.fr>
Wed, 13 May 2015 18:35:35 +0000 (20:35 +0200)
annexes.tex
aspects-informatique.tex
credits.tex
introduction.tex
memoire.tex

index 5de0133..2f16d37 100644 (file)
@@ -17,6 +17,7 @@
 \pagestyle{annexes}
 
 \chapter{Synthèse culturelle}
+\label{synthese-culturelle}
 
 \begin{minipage}{\textwidth}
 \includepdf[pages=1]{annexes/synthese.pdf}
index d4df1a8..1bab8ae 100644 (file)
@@ -111,12 +111,12 @@ Une photographie des deux cartes connectées est reportée en annexe \ref{ardui2
 
 Du point de vue du logiciel, on utilisera directement la ligne de commande du chargeur de démarrage \bsc{U-Boot}. Il s'agit du premier logiciel exécuté par la carte (avant le chargement du système d'exploitation) et qui offre un interpréteur de commandes proposant de multiples fonctionnalités, y compris la gestion du bus \iic. Cependant, au jour de réalisation de l'expérience, \bsc{U-Boot} ne prenait en charge que le premier contrôleur \iic, noté $TWI0$ (utilisé pour communiquer avec le PMIC \emph{AXP209}).\\
 
-Afin de réaliser l'expérience, nous avons modifié le code source (écrit en langage C) d'\bsc{U-Boot}, ce qui a été possible comme il s'agit d'un logiciel libre. En particulier, il aura été nécessaire de mettre en place une gestion dynamique de l'index du bus à utiliser, de configurer les points d'entrée/sortie dédiés à l'\iic\ et de définir l'emplacement en mémoire de ces contrôleurs. Le développement d'\bsc{U-Boot} est conduit de manière communautaire (comme c'est souvent le cas pour un logiciel libre) et les contributions externes sont les bienvenues, ce qui nous aura poussé à proposer notre modification aux mainteneurs du logiciel, au travers de la liste de discussion\footnote{Liste de discussion du projet \bsc{U-Boot} : http://lists.denx.de/mailman/listinfo/u-boot} prévue à cet effet. Après 5 différentes itérations de la proposition\footnote{Archives de la liste de discussion du projet \bsc{U-Boot} pour le mois d'Avril 2015 : http://lists.denx.de/pipermail/u-boot/2015-April/}, résultats des commentaires émis par la communauté et les mainteneurs des parties du code concernés par la modification, celle-ci a finalement été approuvée et intégrée au code source officiel du projet\footnote{Modification "i2c: mvtwsi: Support for up to 4 different controllers" : http://git.denx.de/?p=u-boot.git;a=commit;h=dd82242b4dd7d251ef9ba43563cf9a0017d6f98e}\footnote{Modification "sunxi: Complete i2c support for each supported platform
-" : http://git.denx.de/?p=u-boot.git;a=commit;h=6c739c5d8a3466f8ef2f8543636484957bcca6ee}. On aura vérifié le bon fonctionnement du code en utilisant l'analyseur logique et en lançant un sondage du bus avec la commande $i2c\ probe$, qui fait apparaître des signaux sur la ligne de donnée et la ligne d'horloge.
+Afin de réaliser l'expérience, nous avons modifié le code source (écrit en langage C) d'\bsc{U-Boot}, ce qui a été possible comme il s'agit d'un logiciel libre. En particulier, il aura été nécessaire de mettre en place une gestion dynamique de l'index du bus à utiliser, de configurer les points d'entrée/sortie dédiés à l'\iic\ et de définir l'emplacement en mémoire de ces contrôleurs. Le développement d'\bsc{U-Boot} est conduit de manière communautaire (comme c'est souvent le cas pour un logiciel libre) et les contributions externes sont les bienvenues, ce qui nous aura poussé à proposer notre modification aux mainteneurs du logiciel, au travers de la liste de discussion\footnote{Liste de discussion du projet \bsc{U-Boot} : \url{http://lists.denx.de/mailman/listinfo/u-boot}} prévue à cet effet. Après 5 différentes itérations de la proposition\footnote{Archives de la liste de discussion du projet \bsc{U-Boot} pour le mois d'Avril 2015 : \url{http://lists.denx.de/pipermail/u-boot/2015-April/}}, résultats des commentaires émis par la communauté et les mainteneurs des parties du code concernés par la modification, celle-ci a finalement été approuvée et intégrée au code source officiel du projet\footnote{Modification "i2c: mvtwsi: Support for up to 4 different controllers" : \url{http://git.denx.de/?p=u-boot.git;a=commit;h=dd82242b4dd7d251ef9ba43563cf9a0017d6f98e}}\footnote{Modification "sunxi: Complete i2c support for each supported platform
+" : \url{http://git.denx.de/?p=u-boot.git;a=commit;h=6c739c5d8a3466f8ef2f8543636484957bcca6ee}}. On aura vérifié le bon fonctionnement du code en utilisant l'analyseur logique et en lançant un sondage du bus avec la commande $i2c\ probe$, qui fait apparaître des signaux sur la ligne de donnée et la ligne d'horloge.
 
 \subsubsection*{Réalisation du programme}
 
-Une fois les aspects matériels et logiciels en place, on peut commencer la réalisation du programme propre à l'Arduino. Celui-ci sera réalisé en langage C natif, c'est à dire sans sur-couche propre à l'Arduino. Il existe en effet un IDE\notetraduction{Integrated Development Environment}{environnement de développement intégré} propre à l'Arduino, contenant un certain nombre de sur-couches au langage C++ utilisé. Comme notre application est fortement dépendante du temps, on cherchera à écrire du code au plus proche du langage machine afin de ne pas ralentir l'exécution. Le système de compilation sera basé sur de traditionnels $Makefiles$, très couramment utilisés pour le développement au sein de systèmes de type \bsc{Unix}. Le compilateur utilisé est une variante de \bsc{GCC} propre à l'architecture matérielle \bsc{AVR} : \bsc{avr-gcc}. On utilisera une librairie C standard propre à l'\bsc{AVR}, qui fournit également des définitions propres au microcontrôleur : l'\bsc{avr-libc}. De plus, le logiciel sera envoyé sur la carte en utilisant l'utilitaire \bsc{avrdude}. Enfin, on utilisera l'outil de gestion de code source \bsc{git} pour garder trace des modifications. Tous ces logiciels sont des logiciels libres et on donne d'ailleurs comme licence d'utilisation à notre logiciel, astucieusement nommé $ardui2c$, la Licence Publique Générale GNU en version 3 ou plus récente\footnote{Texte complet de la licence : https://www.gnu.org/licenses/gpl.html}, ce qui en fait également un logiciel libre.\\
+Une fois les aspects matériels et logiciels en place, on peut commencer la réalisation du programme propre à l'Arduino. Celui-ci sera réalisé en langage C natif, c'est à dire sans sur-couche propre à l'Arduino. Il existe en effet un IDE\notetraduction{Integrated Development Environment}{environnement de développement intégré} propre à l'Arduino, contenant un certain nombre de sur-couches au langage C++ utilisé. Comme notre application est fortement dépendante du temps, on cherchera à écrire du code au plus proche du langage machine afin de ne pas ralentir l'exécution. Le système de compilation sera basé sur de traditionnels $Makefiles$, très couramment utilisés pour le développement au sein de systèmes de type \bsc{Unix}. Le compilateur utilisé est une variante de \bsc{GCC} propre à l'architecture matérielle \bsc{AVR} : \bsc{avr-gcc}. On utilisera une librairie C standard propre à l'\bsc{AVR}, qui fournit également des définitions propres au microcontrôleur : l'\bsc{avr-libc}. De plus, le logiciel sera envoyé sur la carte en utilisant l'utilitaire \bsc{avrdude}. Enfin, on utilisera l'outil de gestion de code source \bsc{git} pour garder trace des modifications. Tous ces logiciels sont des logiciels libres et on donne d'ailleurs comme licence d'utilisation à notre logiciel, astucieusement nommé $ardui2c$, la Licence Publique Générale GNU en version 3 ou plus récente\footnote{Texte complet de la licence : \url{https://www.gnu.org/licenses/gpl.html}.}, ce qui en fait également un logiciel libre.\\
 
 Le code source lui-même est rédigé avec une terminologie (noms des fonctions, des variables) en Anglais, afin qu'il soit techniquement compréhensible (et modifiable) par le plus grand nombre, mais on attache tout de même des commentaires en Français, afin de faciliter sa compréhension dans le cadre de notre projet. Afin d'analyser l'exécution étape par étape du programme au cours de son écriture, on cherche à utiliser un dispositif d'entrée/sortie simple à utiliser. L'Arduino dispose d'un contrôleur UART permettant d'envoyer au cours de l'exécution des informations de débogage (typiquement, des chaînes de caractères) à un ordinateur relié à la carte par USB (un convertisseur UART/USB est déjà intégré à la carte Arduino). Cependant, la vitesse de transmission des informations est au maximum de $115200$ bits/s (on parle de bauds), qui n'est pas suffisante pour transmettre suffisamment rapidement ces informations tout en relevant les changements des lignes du bus. En effet, une première expérience montre que le microcontrôleur n'arrive pas à correctement détecter les changements d'états de la ligne d'horloge, qui a une fréquence que l'on a fixée à $50$ kHz, soit $2 * 50 000 = 100 000$ changements d'état logique par seconde. Il est donc évident que cette solution n'est pas utilisable.\\
 
@@ -128,7 +128,7 @@ Les entrées/sorties sont effectuées par des lectures ou des écritures sur des
 
 Avec le protocole \iic, les données de l'esclave sont référencées par des adresses : on parle alors de registres, dont la taille vaut un octet. Le maître pourra lire ou écrire les données d'un registre en spécifiant son adresse. Notre implémentation dispose de $5$ registres, contenant la chaîne de caractères $CPBx$ au format ASCII\notetraduction{American Standard Code for Information Interchange}{code américain normalisé pour l'échange d'information} avec un octet final nul pour marquer la fin de la chaîne.\\
 
-L'ensemble du code source ainsi réalisé est reporté en annexe \ref{ardui2c}. Il est également disponible sur Internet\footnote{Le code source d'Ardui2c est disponible à l'adresse : http://git.paulk.fr/gitweb/?p=ardui2c.git;a=summary} au travers du système de gestion de version $git$, qui garde trace des modifications et permet de dupliquer aisément le code source. C'est un outil de gestion de code source aux visées communautaires, initialement développé par \bsc{Linux Torvalds} pour la gestion du code du noyau \bsc{Linux}, dont il est également l'auteur initial.
+L'ensemble du code source ainsi réalisé est reporté en annexe \ref{ardui2c}. Il est également disponible sur Internet\footnote{Le code source d'Ardui2c est disponible à l'adresse : \url{http://git.paulk.fr/gitweb/?p=ardui2c.git;a=summary}} au travers du système de gestion de version $git$, qui garde trace des modifications et permet de dupliquer aisément le code source. C'est un outil de gestion de code source aux visées communautaires, initialement développé par \bsc{Linux Torvalds} pour la gestion du code du noyau \bsc{Linux}, dont il est également l'auteur initial.
 
 \subsubsection*{Utilisation du programme}
 
index f1368c8..efb0b47 100644 (file)
@@ -6,11 +6,11 @@
 Images provenant de sources extérieures :
 \begin{itemize}
 \item[--] Figure \ref{induction}, Gigowatts, licence \emph{Creative Commons BY-SA 3.0} :\\
-http://commons.wikimedia.org/wiki/File:Lenz-faraday.svg
+\url{http://commons.wikimedia.org/wiki/File:Lenz-faraday.svg}
 \item[--] Figure \ref{cubieboard-photo}, Gareth Halfacree, licence \emph{Creative Commons BY-SA 2.0} :\\
-https://www.flickr.com/photos/120586634@N05/14673300334
+\url{https://www.flickr.com/photos/120586634@N05/14673300334}
 \item[--] Figure \ref{arduino-photo}, Snootlab, licence \emph{Creative Commons BY 2.0} :\\
-https://www.flickr.com/photos/snootlab/6052455554\\
+\url{https://www.flickr.com/photos/snootlab/6052455554}\\
 \end{itemize}
 
 Les autres images (y compris les schémas et les photos) ont été réalisées par Paul Kocialkowski et Raphaël Tapia avec des logiciels libres et sont sous licence \emph{Creative Commons BY-SA 4.0} :
@@ -37,7 +37,7 @@ L'ensemble des traductions des termes techniques sont issues de Wikipédia, disp
 \includegraphics[width=8cm]{creativecommons.png}
 \end{figure}
 
-Ce document est placé sous licence \emph{Creative Commons BY-SA 4.0} par les auteurs :
+Ce document est placé sous licence \emph{Creative Commons BY-SA 4.0}\footnote{Texte complet de la licence : \url{https://creativecommons.org/licenses/by-sa/4.0/}.} par les auteurs :
 \begin{itemize}
 \item[--] Paul Kocialkowski
 \item[--] Raphaël Tapia
index 7a41a82..1fe5941 100644 (file)
@@ -9,7 +9,7 @@ quelqu’un pose la question et que je veuille expliquer, je ne sais plus. »
 \r
 \vspace{0.5cm}\r
 \r
-Cette citation de Saint-Augustin qui remonte au \siecle{5} résume efficacement en quelques mots tout le problème lié à la définition de la notion du temps. C'est en effet un concept familier de tous, dont on fait l'expérience en permanence, mais qui pose une difficulté immédiate dès qu'il s'agit de le formaliser. C'est bien là un problème qui aura occupé (et occupe encore) des générations de philosophes et scientifiques, échinés au travail de définition du temps\footnote{Cet aspect est plus détaillé au travers de la synthèse culturelle, reportée en annexe.}. Ces travaux ont donné jour à de grandes théories scientifiques : que ce soit la mécanique Newtonienne ou la relativité d'Einstein. L'aspect d'entité fondamentale que revêt le temps est un obstacle constant à sa définition et le vocabulaire qu'on lui associe se révèle bien souvent insuffisant, tant ce concept est fondamental. Scientifiquement, on s'accorde à dire que le temps n'est pas une grandeur quantifiable au même titre que l'énergie par exemple. La seule quantification apparaît dans la volonté de mesurer une sorte de \og distance \fg{} entre deux événements, quand on parle de mesurer le temps, on veut implicitement faire référence à des durées, car c'est la seule grandeur que l'on peut décompter.\\\r
+Cette citation de Saint-Augustin qui remonte au \siecle{5} résume efficacement en quelques mots tout le problème lié à la définition de la notion du temps. C'est en effet un concept familier de tous, dont on fait l'expérience en permanence, mais qui pose une difficulté immédiate dès qu'il s'agit de le formaliser. C'est bien là un problème qui aura occupé (et occupe encore) des générations de philosophes et scientifiques, échinés au travail de définition du temps\footnote{Cet aspect est plus détaillé au travers de la synthèse culturelle, reportée en annexe \ref{synthese-culturelle}.}. Ces travaux ont donné jour à de grandes théories scientifiques : que ce soit la mécanique Newtonienne ou la relativité d'Einstein. L'aspect d'entité fondamentale que revêt le temps est un obstacle constant à sa définition et le vocabulaire qu'on lui associe se révèle bien souvent insuffisant, tant ce concept est fondamental. Scientifiquement, on s'accorde à dire que le temps n'est pas une grandeur quantifiable au même titre que l'énergie par exemple. La seule quantification apparaît dans la volonté de mesurer une sorte de \og distance \fg{} entre deux événements, quand on parle de mesurer le temps, on veut implicitement faire référence à des durées, car c'est la seule grandeur que l'on peut décompter.\\\r
 \r
 L'instinct de l'Homme qui le pousse à s'organiser en sociétés l'a inévitablement conduit à la réalisation d'outils favorisants cette organisation et savoir se repérer dans le temps en est un trait essentiel. Très tôt dans l'Histoire, l'Homme a su tirer à son avantage des phénomènes naturels pour mesurer des durées entre des événements, puis au fur et à mesure des progrès techniques et technologiques les méthode d'acquisition se sont améliorées, passant de l'horloge solaire à la clepsydre, puis du sablier aux horloges mécaniques. La précision n'a cessé de croître au fil des années et considérant le progrès effréné des techniques, le \siecle{20} a vu une énorme avancée en ce qui concerne la précision de la mesure du temps. L'avènement de l'électronique a conduit au développement d'horloges très précises et les progrès en mécanique quantique ont eux abouti à la conception d'horloges atomiques, qui sont aujourd'hui la référence en terme de précision\footnote{La définition de la seconde se fait aujourd'hui à l'aide d'horloges atomiques, comme on le détaille dans la synthèse culturelle en annexe}.\\\r
 \r
index 13a7c91..c0ab886 100644 (file)
@@ -14,6 +14,7 @@
 \usepackage{appendix}
 \usepackage{cite}
 \usepackage[backend=biber,style=numeric,citestyle=numeric,sorting=none]{biblatex}
+\usepackage{hyperref}
 \usepackage{caption}
 \usepackage{subcaption}
 \usepackage{graphicx}
@@ -58,6 +59,8 @@
 \addbibresource{references.bib}
 \defbibheading{typereference}{\section*{#1}}
 
+\hypersetup{hidelinks}
+
 \graphicspath{{images/}}
 
 \lstset{language=C, numbers=left, basicstyle=\small, frame=lines, tabsize=2, breaklines=true, aboveskip=0.5cm, belowskip=0.5cm}