Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Test FAT32 lib mikroc
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#1 Message par paulfjujo » jeu. 5 nov. 2020 17:26

bonsoir,


J'avais déja testé la gestion Petite_Fat OK avec MPLAB C18 il y a quelques années ...
et je viens de tester la librairie MikroC FAT32
qui fonctionne apres tres peu d'ajustement ...
exemple prevu pour 18F87K22 DIP40 Q=16MHz
appliqué à un PIC18F26K22 PDIP 28 et FOSC Interne 16x4=64MHz

La carte SD est prealablement formatée sous DOS (win10) via la commande DOS

01/11/2020
SDCARD 2Gb
format E: /FS:FAT32 /V:MMC /A:512
E:\>format E: /FS:FAT32 /V:MMC /A:512
Insérez un nouveau disque pour le lecteur E:
et appuyez sur ENTRÉE lorsque vous êtes prêt...
Le type du système de fichiers est FAT32.
Vérification de 1.8 Go

Format ne peut pas s’exécuter car le volume est utilisé par un autre
processus. Format pourra s’exécuter après que ce volume ait été démonté.
LES DESCRIPTEURS OUVERTS SUR CE VOLUME NE SERONT PLUS VALIDES.
Voulez-vous forcer le démontage de ce volume ? (O/N) O
Le volume est démonté. Tous les descripteurs ouverts dans ce volume ne sont
plus valides.
7 pour cent effectués.
..........
Initialisation de table d’allocation des fichiers (FAT) en cours...
Formatage terminé.
1.8 Go d’espace disque total.
1.8 Go sont disponibles.
512 octets dans chaque unité d’allocation.
3 792 952 unités d’allocation disponibles sur le disque.
32 bits dans chaque entrée FAT.
Le numéro de série du volume est 122F-C262
E:\>


et j'ai mis 2 petits fichier *.txt sur cette carte SD ...

Test sur BASE 18F26K22 + Carte support SD contenant la SANDISK 2GB
Apres quelques modification mineures
... TESTS OK ,

malgrés quelques petits bugs ?,
ex: date des fichiers du test (pas de RTC installée/utilisée , car SPI1 mobilise les pin I2C!)
à voir avec un PIC18F46K22 Dip40 et I2C2

en resumé:
MMC:\
----L--- 00/00/2048 00:00 MMC
---D-SH- DIR 01/11/2020 19:17 System Volume Information
--A---H- 300 00/00/2048 00:00 FILE1.TXT
--A----- 38 00/00/2048 00:00 FILE2.TXT
--A----- 38 00/00/2048 00:00 FILE3.TXT
--A----- 114 00/00/2048 00:00 FILE4.TXT
--A----- 2450 03/11/2020 13:47 X_FILES.TXT
--A----- 31426 01/11/2020 19:54 MSDOS_01.TXT

Free Space Info:
Free clusters: 3792878
Free bytes: 1941953536
=================
Scan Disk Info:
Total clusters: 3792953
Free clusters: 3792878
Bad clusters: 0
=================


70% des ressources du PIC 18F26K22 sont utilisés ici..
La lib FAT32 est tres , ou TROP confortable .
necessite un PIC costaud .

J'ai rajouté aussi , des infos pour la récuperation de la librairie MikroC sur Libstock
et de son installation / activation

Tous les details sur ma page web
ou l'essentiel , direct ci dessous :

Base_18F26K22_MMC_SDCARD_Test_FAT32_2020_1104.c

Base_18F26K22_MMC_SDCARD_Test_FAT32_2020_1105.zip


developement ou questions/réponses possible sur ce fil ..
:sifflotte: en C ...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Test FAT32 lib mikroc
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#2 Message par venom » ven. 6 nov. 2020 21:18

Bonjour paulfjujo,

Merci du partage. Même si le code me dépasse (manque de connaissance dans le domaine) Comme a ton habitude tu assure 8-) :bravo:

Ça peux être utile pour des applis qui on besoin de laisser des données.

Qu'entend tu par "petite fat" ? Si la SD est grande le code diffère ?





@++
Mon site web
Mon discord : venom#4888

Test FAT32 lib mikroc
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#3 Message par paulfjujo » sam. 7 nov. 2020 10:18

Ce Post a été ouvert , uniquement pour preciser :
- comment récuperer, incorporer la librarie FAT32 dans la liste "Librairies Manager"
- et comment on peut l' utiliser avec tres peu de modif pour l'appliquer à son propre MCU.


Venom a écrit : Qu'entend tu par "petite fat" ? Si la SD est grande le code diffère ?


concernant la Petite Fat, uniquement un rappel de l'existence de celle ci:

site original : "Petit FAT File System Module"

testé en 2013, avec MPLAB IDE et C18 :
petite fat ICI


ensemble pour gérer aussi une SDcard <=2Gb avec secteur de 512bytes , mais de taille globale nettement moindre,
avec moins de possibilités .
Very small RAM consumption (44 bytes work area + certain stack).
Very small code size (2K-4K bytes).
FAT12, FAT16 and FAT32.
Single volume and Single file.
Streaming file read.
File write function with some restrictions.


:!!: Ne peut pas tourner sur un PIC avec peu de RAM !

la FAT32 MikroC devrait pouvoir gérer des secteurs de 1024 bytes et une SDcard de 4GB..
( contrairement à la FAT16 2Go maxi et nom de fichier limité à 8+'.'+3 chars)
Je vais tester cela ...mais je n'ai pas de carte SD 4Go sous la main (pour l'instant)


A noter : gestion SDcard en asm
de Sanistas utilisation sous mikroC ? à voir, car je pense qu'il faille modifier quelque peu les sources asm..
Aide toi, le ciel ou FantasPic t'aidera

Test FAT32 lib mikroc
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#4 Message par venom » sam. 7 nov. 2020 22:04

ça marche, merci paulfjujo.







@++
Mon site web
Mon discord : venom#4888

Test FAT32 lib mikroc
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#5 Message par paulfjujo » mer. 11 nov. 2020 20:12

Bonsoir à tous ,


Formatage carte SD enFAT32 avec Invite MS-DOS :

Code : Tout sélectionner


Microsoft Windows 
[version 10.0.18362.657]
(
c) 2019 Microsoft Corporation. Tous droits réservés.
C:\>E:
E:\>format E: /FS:FAT32 /V:MMC  /A:1024


Test FAT32 avec secteurs de 1024 Bytes ..OK
sans rien changer par ailleurs dans le code !

hormis ici :
... mais SWAP non encore testé , le buffer necessiterait une taille 1024 bytes au lieu de 512 bytes !
pour contenir un secteur de 1024 bytes .. en acces direct secteur


MMC:\
----L--- 11/11/2020 14:35 MMC
---D-SH- DIR 11/11/2020 10:52 System Volume Information
--A---H- 160 00/00/2048 00:00 FILE1.TXT
--A----- 1854 11/11/2020 14:35 X_FILES.TXT
---D---- DIR 00/00/2048 00:00 Long A Name
---D---- DIR 00/00/2048 00:00 Long B Name
---D---- DIR 00/00/2048 00:00 Long C Name


Free Space Info:
Free clusters: 1912850
Free bytes: 1958758400

=================
Scan Disk Info:
Total clusters: 1912860 <--- 1024 bytes par cluster
Free clusters: 1912850
Bad clusters: 0
=================



oops Anomalie ICI, ci-dessous,
en relecture du fichier .. que vient faire ce 0 = <NULL> ?

Open File "FILE1.TXT"
Ecriture de 10 fois wrbuff
ABCDEFGHIJKL0
ABCDEFGHIJKL1
ABCDEFGHIJKL2
ABCDEFGHIJKL3
ABCDEFGHIJKL4
ABCDEFGHIJKL5
ABCDEFGHIJKL6
ABCDEFGHIJKL7
ABCDEFGHIJKL8
ABCDEFGHIJKL9

Close "FILE1.TXT"
DIR

MMC:\
----L--- 00/00/2048 00:00 MMC
---D-SH- DIR 11/11/2020 10:52 System Volume Information
--A----- 160 00/00/2048 00:00 FILE1.TXT
--A----- 1854 11/11/2020 14:35 X_FILES.TXT
---D---- DIR 00/00/2048 00:00 Long A Name
---D---- DIR 00/00/2048 00:00 Long B Name
---D---- DIR 00/00/2048 00:00 Long C Name


Ouverture en Lecture de "FILE1.TXT"
Size of Read Buffer = 20
Lecture de "FILE1.TXT"
ABCDEFGHIJKL0
<NUL>ABCDEFGHIJKL1
<NUL>ABCDEFGHIJKL2
<NUL>ABCDEFGHIJKL3
<NUL>ABCDEFGHIJKL4
<NUL>ABCDEFGHIJKL5
<NUL>ABCDEFGHIJKL6
<NUL>ABCDEFGHIJKL7
<NUL>ABCDEFGHIJKL8
<NUL>ABCDEFGHIJKL9
<NUL>
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Test FAT32 lib mikroc
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#6 Message par satinas » mer. 11 nov. 2020 22:02

Bonsoir Paul et à tous

Dans la commande de formatage DOS, le /A:1024 correspond à la taille d'un cluster FAT32.
C'est la taille des blocs alloués par la fat pour stocker le contenu des dossiers et fichiers.
Tu as donc des clusters de 1024 octets, soit 2 secteurs de 512 octets contigus.
La taille du cluster FAT32 est choisie au formatage, c'est une puissance de 2, entre 512 octets et 64k sous DOS, entre 4k et 64k sous Windows (?).

La taille du secteur par contre est propre à la carte SD. Cette taille est stockée dans les infos CSD.
Je pensais qu'elle était toujours de 512 octets, mais en lisant ce lien, je vois qu'elle peut être supérieure.
https://askfrance.me/q/taille-du-secteu ... 2461488601
Je me demande si les bibliothèques SD qui lisent/écrivent des secteurs de 512 octets, marchent avec des cartes ayant des secteurs de 1024 octets ou plus. Je n'ai jamais rencontré de problème avec tous les essais faits sur de nombreuses cartes. Ce devait être des cartes avec secteurs de 512 octets, ou alors quelque chose m'échappe.

Test FAT32 lib mikroc
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#7 Message par satinas » dim. 15 nov. 2020 18:32

Bonsoir

Tu as déclaré le tableau wrbuf de 16 caractères, mais initialisé avec 13 caractères et CRLF, donc wrbuf[15] vaut 0.
Ensuite tu écris dans le fichier sizeof(wrbuf) octets, donc tu écris aussi l'octet nul final. Tu le récupères en lecture et il s'affiche.

http://paulfjujo.free.fr/18F_SDcard/Tes ... T32_MikroC
Je vois sur ton site que tu formattes avec des clusters de 512 octets. On est bien d'accord qu'il n' y a pas de limitation pour la taille des clusters. La taille du secteur est fixe, mais pas la taille des clusters, on met ce qu'on veut, petite taille si on a beaucoup de petits fichiers, grande taille si on a des gros fichiers, pour pas trop les morceler.

Test FAT32 lib mikroc
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#8 Message par paulfjujo » dim. 15 nov. 2020 20:17

bonsoir à tous,

satinas a écrit :Bonsoir

Tu as déclaré le tableau wrbuf de 16 caractères, mais initialisé avec 13 caractères et CRLF, donc wrbuf[15] vaut 0.
Ensuite tu écris dans le fichier sizeof(wrbuf) octets, donc tu écris aussi l'octet nul final. Tu le récupères en lecture et il s'affiche.
.


Merci !

:+1: Ach So, grosse Betise ..
en fait j'avais rajouté ce zero , car un tableau remplis de byte n'est pas forcement un string..
car j'ecris directement le contenu de wrbuf sur le terminal. avant de l'ecrire sur le fichier SD.
Je pensais donc qu'en lecture ,je pouvais recuperer mon string (avec le zero à la fin !) et non pas placé au debut..

le zero doit avoir une fonction particuliere dans la lib FAT32 mikroC ?
zero = EOF ?

il faut donc que j'ecrive sizeof(wrbuf)-1 octets sur la carte SD. ou reduire la taille buffer de 1
et ecriture byte par byte sur l'ecran terminal
et que je relise aussi byte par byte et non en 1 seule fois pour afficher sur l'ecran ( non en string, si il n'y a plus de zero à la fin)

Apres, c'est aussi une question d'organisation du rangement dans la carte SD
exemple modulo 32, 64 car ou 128 cars
ou garder le zero comme separateur de champ
ou separateur CSV ';' (avec ',' comme separateur decimal )

exit je verifie ça des demain..car ça fait désordre..

satinas a écrit :Je vois sur ton site que tu formattes avec des clusters de 512 octets. On est bien d'accord qu'il n' y a pas de limitation pour la taille des clusters. La taille du secteur est fixe, mais pas la taille des clusters, on met ce qu'on veut, petite taille si on a beaucoup de petits fichiers, grande taille si on a des gros fichiers, pour pas trop les morceler.


idea ! on est d'accord ...

mais j'ai formaté en cluster de 1024 (2 secteurs de 512 b) sur l'exemple suivant ,
presenté qu'en format zippé ...
Base_18F26K22_MMC_SDCARD_Test_FAT32_1024b_2020_1110.zip

je n'ai toujours pas acquis de carte SD de 4Go ..pour voir ..
Aide toi, le ciel ou FantasPic t'aidera

Test FAT32 lib mikroc
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#9 Message par satinas » dim. 15 nov. 2020 20:34

Ma plus grosse carte SD fait 128Go, elle passe sans problème. Windows 10 limite la création de partition FAT32 à 32Go sur SD.
J'essaye de créer une partition plus grande avec un utilitaire comme Minitool Partition, mais pas sûr que ce soit possible, à voir.
En fait Minitool crée une partition 128Go FAT32-CHS au lieu de FAT32-LBA, et le pic la lit sans problème.
Sinon il y a guiformat.exe, il crée bien des partitions FAT32-LBA, et au dessus de 32Go.
http://www.ridgecrop.demon.co.uk/index. ... format.htm

Les bibliothèques SD ont aussi des fonctions fgets() et fputs() qui s'arrêtent sur LF ou CRLF, MikroE n'est pourtant pas avare de fonctions, y a du relâchement :)


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 42 invités