This commit is contained in:
2024-11-28 17:14:11 +01:00
parent e0dbe75df9
commit 77a9fb1935

70
tp5.md
View File

@@ -182,7 +182,7 @@ Ensuite pour faire ces actions de manière automatique on va crééer le fichier
```
sd[a-z] 0:0 777 @/etc/usb_automount.sh $MDEV
sd[a-z] 0:0 777 @/bin/usb_automount.sh $MDEV
```
Cette commande permet de dire que pour tout perpherique dans /dev qui commence par sd qui appartiendra a root et au groupe 0 et avec les permissions 777 et ca va lancer le script automount.sh avec comme argument le nom du peripherique.
@@ -251,7 +251,7 @@ glacier.jpg rhone_winter.jpg
Maintenant il faut que on fasse un script qui créée une page web et qui affiche toutes les images du repertoire pour qu'on puisse les voir depuis le site web.
```sh
#!/bin/sh
#!/bin/sh
echo "Content-type: text/html"
echo "<html>"
echo "<body>"
@@ -326,6 +326,72 @@ Ca permet de s'assurer de ou les modules sont installés.
Après juste le make sans options on peut voir avec la commande `find ./ -name "*.ko"` Que on a pleins de fichiers modules dans /lib, /fs, /crypto, /net et /drivers. On voit que certains modules parlent d'usb genre `./drivers/usb/storage/usb-storage.ko` mais je n'ai pas compris si on devait prendre juste les fichiers .ko et les mettre dans /lib/modules/version ou si il fallait conserver la même arborescence. J'ai pas tout capté honnêtement.
On va deja essayer de deployer le kernel sans les modules USB pour bien voir que ca ne marche plus. Et ensuite le but sera de les importer uns à uns jusqu'à ce que ca marche.
Sur la board dans u-boot je fais un `run update_kernel` qui est mon script qui nettoie la NAND et qui tftp le nouveau kernel dedans.
Maintenant quand on boot sur ce nouveau kernel et que on insère une clé USB il ne se passe plsu rien ! super...
`make modules_install INSTALL_MOD_PATH=/home/moi/shared_tftp/lesmodules`
Qui nous permet d'output les modules directement dans un fichier que je pourrai TFTP sur ma machine hôte qui contient le nfsroot.
Pour transfèrer le tout par tftp comme d'hab on ne peut pas transfer le repertoire directement donc on doit commencer par zipper et envoyer le fichier
La compilation des modules fait une arborescence qui commence par /lib/modules
J'ai pris le repertoire modules et je l'ai mis dans /lib/modules sur le système embarqué ce qui nous donne une arborescence `/lib/modules/6.6.56` ou on peut voir différents modules.
Sous `/lib/modules/6.6.56/kernel/drivers/usb`
On a plusieurs categories `class core host serial storage`
Sous `/lib/modules/6.6.56/kernel/drivers/usb/storage` On peut voir un fichier usb-storage.ko qui je pense sera utile.
Sous `/lib/modules/6.6.56/kernel/drivers/usb/core` on peut voir un fichier usbcore.ko que j'imagine important également.
On va monter ces deux modules et voir si l'USB remarche.
`modprobe usb-storage`
`modprobe usbcore`
Mais ca ne suffit pas
Quand on va regarder dans /lib/modules/6.6.56/kernel/drivers/usb/host
On peut voir pleins de fichiers OHCI (USB1) et EHCI (USB2)
On a donc deux fichiers intéressants `ehci-atmel.ko` et `ehci-hcd.ko`
`modprobe ehci-atmel`
Et la ca marche !! magnifique.
Maitenant si on reboot, ca ne marche plus car les modules ne sont pas montés.
Donc on va mettre en tant que service dans `/etc/init.d` un script `SmodUsb.sh` avec ce contenu :
```sh
#!/bin/sh
modprobe usb-storage
modprobe usbcore
modprobe ehci-atmel
```
Et à présent quand on redémarre le système embarqué, les modules USB sont montés correctements et le fonctionnement du script que l'on a créé au préalable est de retour !