Non , j'ai besoin d'utiliser la flash interne pour les paramètres réseaux, seulement au fil de l'évolution du projet mon client souhaite faire des rajouts de fonction, et donc nécessité des accès plus nombreux en écriture, j'avai prévu d'y mettre une flash que j'ai pas forcément prévu d'utiliser tout de suite de par le temps qu'il me reste pour la livraison.
Maintenant j'essaie de voir sur les docs, le nombre de cycle d'écriture en flash interne mais je ne trouve pas l'information pour le moment, si c'est du 100000 je reste sur là flash intern et je prend pas plus de temps sur l'externe.
Le travaille que l'on a fait, met très utile, sur des projets qui ne nessecite pas de mémoire externe et t'en remercie grandement
Les 1000 écritures, on t'en parle depuis 3 ans sur tous les forums, si tu as une flash annexe, il faut tout mettre dedans, surtout qu'elle doit pas être petite, hein.
Je les prévu pour plus de place concernant mes pages web notamment qui nécessite pas beaucoup de place, mais après une discutions avec mon client, des imprévus sont à envisager.
Et évidement, c'est pour la veille
Enfin tout ça n'est pas grave, c'est surtout toi qui perd ton temps, de mon côté ça m'a fait réviser un peu car j'avais aussi oublié qu'on accède directement à la flash en lecture, t'es pas le seul à être oublieux. Quand on veux des infos sur le pic32 sur le net, il suffit de taper davidif, pas pic32![]()
Bah, c'est sûre que sa rallonge sensiblement mes délais, mais j'apprends énorment et si ça peut en aider d'autre cest tout aussi bien.
Je ne connaît pas particulièrement cette flash, c'est la raison pour laquelle je ne voulais pas m'y pencher tout de suite mais me laisser le temps au cours d'une future mise à jour, mais bon c'est peut-être un mauvais calcul de ma part.
Un flash SPI/SQI, c'est plus simple à mettre en oeuvre qu'une flash interne limitée en taille, fragile, avec des routines tarabiscotées, tu as fait un mavais choix. Tu sembles vouloir toucher à tout, mais sans réel objectif.
Mon objectif est de pouvoir livrer dans les temps un sytème qui répond aux fonctionnalité demander, maintenant mes choix sont parfois guider par mon inexpérience, ce qui peut me faire perdre du temps effectivement, mais j'essaie de m'améliorer de par les aide apporter, notamment par le biais de forum comme celui-ci.
Maintenant, si je prend pas de risque, je prend pas de projet et j'avance pas et sans tout attendre des forums, c'est un support important, en sa je vous remercie pour la grande patience et surtout la disponibilité.
Sinon je suis pas contre un coût de main sur ma flash externe (:
En fait, j'avais commencer un poste ici
http://forums.futura-sciences.com/el...x795f512l.html
Daudet avais déjà abordé le sujet, j'aurais pu réagir là, mais j'étais lancé sur la flash interne ...Merci pour ta réponse Daudet, je vais certainement prendre, mais en fait, j'ai déjà prévu et câblé une flash extérieur en SPI en prévision, seulement au vu du temps qui mes impartie et du temps que j'ai surtout mis à implémenter mon code, j'ai préférer remettre à plus tard le codage en communication de ma flash.
Pour ta flash externe, va falloir que tu t'y mettes, cherche les librairies spi dans harmony.
Évidemment que je vais m'y mettre, harmony propose du code pour flash externe sst25vf064, en cochant cette option mais pas pour la plus récente que j'ai pris sst26vf064f, j'ai donc quand même cocher la sst25 de tel sorte qu'harmony l'initialise en pensant que ce soit similaire mais pour ne pas l'avoir encore essayé je le sais pas encore, à voir demain
Si tu veux de la librairie SST26, installe Harmony 1_08_01, mais les routines nvm sont plus les mêmes, va falloir les modifier, ah ah. Quel métier, mais tu l'as choisi, enfin j'espère ...
bye
Oui c'est ce que je pensai faire, par contre, ça ne changera pas mon programme initiale j'espère , celui fais sous v1.07 ? Sans parler des routines nvm je pense au reste déjà programmer et fonctionnelle
Pour le moment reste en 1_07_1, car le driver SST26, c'est pas de la tarte. Harmony n'a toujours pas de driver SQI, et la librairie fournie hors Harmony n'a pas l'air fiable, voir vidéo à 1h18mn.
Il y a des petites différences entre les 2 versions, mais sont-elles déterminantes, je sais pas.
J'ai cherché un driver tout simple SPI pour SST26 sur le net, et pas trouvé. J'ai un driver perso spi SST25, mais pas facile de te donner ça car il est spécifique de mon environnement et je connais pas le niveau de compatibilité entre les commandes SST25 et SST26
Si tu t'en sors avec la flash interne, reste comme ça jusqu'à nouvel ordre, comme quoi on est pas des imbéciles puisqu'on a pas peur de changer d'avis
Mais n'écris que des éléments de configuration, pas des données non contrôlables en fréquence d'écriture.
Effectivement, je ne demande que ça de rester en v1.07 à mon niveau d'avancement, j'ai peur que ça chamboule une partie de mon soft, maintenant je sais pas quel sont les différences entre les deux flash, voir ça .
Tu as charger harmony v1.08, les driver de la sst26 ne sont pas générer par cette version ? Aux quel cas, est-il possible de me les transmettre si c'est le cas , après il y aura quelques retouches peut-être.
En plus des configurés, J'ai des valeurs à sauvegarder périodiquement , voir journalièrement
Télécharge les Microchip Libraries for Applications du 8/8/2016 et récupère le driver nvm_flash_spi_sst26vf0xxb.c, et essaie le. En espérant qu'il s'intègre sans trop de difficulté à un projet Harmony.
Il y a peut être un équivalent dans les peripherals d'Harmony, mais dedans j'ai trouvé que du SST25.
Oui, je vais faire ça
Le sst25 est effectivement dans péripherals d'Harmony V1.7, je l'ai d'ailleurs coché, ce qui m'a généré du code d'initialisation et autre fonction mais pas essayé pour l'instant et sais pas si c'est compatible, je vais regarder aujourd'hui.
Après, y a t-il de grande différences entre les deux flash dans la manière de les piloter ? a voir.
Bonjour,
j'ai été voir mais je n'ai pas trouvé ce fichier, me serai-je trompé ?
http://www.microchip.com/mplab/micro...r-applications
Téléchargé Microchip Librarie for application
entre temps j'ai regardé les sources généré avec la sst25, voir si on peut faire quelque chose.
Dernière modification par davidif ; 30/08/2016 à 16h03.
J'ai repris ton expression, mais elle ne passe pas à la compileNe mélange pas les choses. D'abord tu renseignes le contenu de la structure config, ensuite tu l'écris en bloc par
WDRV_NVM_write_new(((uint8_t *)&appDataTCPIP_WIFI, sizeof(appDataTCPIP_WIFI));
Le compilateur connait la taille de tous les tableaux et structures que tu as déclarés, donc tu peux utiliser l'opérateur sizeof(), ça t'évitera des calculs superflus.
Je n'arrive pas à voir ce qui ne va pasCode:make -f nbproject/Makefile-pic32mx_eth_sk+ioexp+11n+freertos.mk dist/pic32mx_eth_sk+ioexp+11n+freertos/production/pic32_eth_wifi_web_server.X.production.hex make[2]: Entering directory 'C:/Users/Tecwave/disque 1t/etude/hardware/Programme PIC32/WIFI/N V1.2/apps/tcpip/web_server_nvm_mpfs/firmware/pic32_eth_wifi_web_server.X' "C:\Program Files (x86)\Microchip\xc32\v1.40\bin\xc32-gcc.exe" -g -x c -c -mprocessor=32MX795F512L -ffunction-sections -O1 "-DPLIB_INLINE=static inline" "-DPLIB_INLINE_API=static inline" -D__XC -I../src -I../src/system_config/pic32mx_eth_sk+ioexp+11n+freertos/framework -I../../../../../framework -I../../../../../framework/crypto -I../src/pic32mx_eth_sk+ioexp+11n+freertos -I../src/system_config/pic32mx_eth_sk+ioexp+11n+freertos -I../../../../../framework/driver/wifi/mrf24wn/include -I../../../../../framework/driver/wifi/mrf24wn/wireless_driver/include -I../../../../../framework/driver/wifi/mrf24wn/wireless_driver_extension -I../../../../../bsp/pic32mx_eth_sk -I../../../../../third_party/rtos/FreeRTOS/Source/portable/MPLAB/PIC32MX -I../../../../../third_party/rtos/FreeRTOS/Source/include -Werror -Wall -MMD -MF build/pic32mx_eth_sk+ioexp+11n+freertos/production/_ext/1360937237/app1.o.d -o build/pic32mx_eth_sk+ioexp+11n+freertos/production/_ext/1360937237/app1.o ../src/app1.c nbproject/Makefile-pic32mx_eth_sk+ioexp+11n+freertos.mk:845: recipe for target 'build/pic32mx_eth_sk+ioexp+11n+freertos/production/_ext/1360937237/app1.o' failed ../src/app1.c: In function 'APP1_Tasks': ../src/app1.c:322:70: error: left-hand operand of comma expression has no effect [-Werror=unused-value] WDRV_NVM_write_new(((uint8_t *)&appDataTCPIP_WIFI, sizeof(appDataTCPIP_WIFI))); ^ ../src/app1.c:322:21: error: passing argument 1 of 'WDRV_NVM_write_new' makes pointer from integer without a cast [-Werror] WDRV_NVM_write_new(((uint8_t *)&appDataTCPIP_WIFI, sizeof(appDataTCPIP_WIFI))); ^ In file included from ../src/system_config/pic32mx_eth_sk+ioexp+11n+freertos/system_definitions.h:90:0, from ../src/app1.h:60, from ../src/app1.c:56: ../src/save_data.h:218:6: note: expected 'char *' but argument is of type 'long unsigned int' bool WDRV_NVM_write_new(char *buf, int size); ^ ../src/app1.c:322:21: error: too few arguments to function 'WDRV_NVM_write_new' WDRV_NVM_write_new(((uint8_t *)&appDataTCPIP_WIFI, sizeof(appDataTCPIP_WIFI))); ^ In file included from ../src/system_config/pic32mx_eth_sk+ioexp+11n+freertos/system_definitions.h:90:0, from ../src/app1.h:60, from ../src/app1.c:56: ../src/save_data.h:218:6: note: declared here bool WDRV_NVM_write_new(char *buf, int size); ^ cc1.exe: all warnings being treated as errors make[2]: *** [build/pic32mx_eth_sk+ioexp+11n+freertos/production/_ext/1360937237/app1.o] Error 1 make[2]: *** Waiting for unfinished jobs....
y a comme un problème dans les parenthèses, à voir.WDRV_NVM_write_new(((uint8_t *)&appDataTCPIP_WIFI, sizeof(appDataTCPIP_WIFI));
pourquoi tu modifies le prototype de la fonction par rapport à l'original, on innove, on innove ...bool WDRV_NVM_write_new(char *buf, int size);
As-tu téléchargé et installé les MLA 8/8/2016 ? (500 Mo)
Le driver sst26 est générique, il n'a pas les fonctions spi du pic32. C'est pas du tout cuit. Si tu as déjà programmé du spi pic32, tu y incorpores tes fonctions init/put/get spi.
Oui j'ai vu et corrigé, mais malgré tout , le problème persite, j'ai repris mon ancienne fonction qui remplis tout les élément un à un et ça fonctionne
dans la fonction d'écriture, je fais ça
Code:for (j=0;j<10;j++) { i=0; if(j==0) buf=appDataTCPIP_WIFI.new_IP; if(j==1) buf=appDataTCPIP_WIFI.new_MASK; if(j==2) buf=appDataTCPIP_WIFI.new_GATEWAY; if(j==3) buf=appDataTCPIP_WIFI.new_DNS1; if(j==4) buf=appDataTCPIP_WIFI.new_DNS2; if(j==5) buf=appDataTCPIP_WIFI.new_DHCP; if(j==6) buf=appDataTCPIP_WIFI.new_SSID; if(j==7) buf=appDataTCPIP_WIFI.new_WEP; if(j==8) buf=appDataTCPIP_WIFI.new_WPA; while(buf[i]!='\0') { NVM_DATA_BUFF_local[k] = buf[i]; k++; i++; };
Comment ça ? justement le proto et fait pour le modifier contrairement à l'original qu'on garde intact.
oui , je les télécharger "mla_v2016_08_08_windows_insta ller.exe" 298Mo
mais je n'ai pas trouvé le driver dedans, si j'ai bien compris
Dernière modification par davidif ; 30/08/2016 à 17h59.
Tu as mis dans ta fonction char* au lieu de uint8_t*.
Moi je reste sur l'idée de départ, on copie la fonction et on ne modifie que l'offset, et j'ai pas à te suivre dans tes innovations.
Ta fonction est une horreur, mais si tu veux qu'on te dise qu'elle est bien, je te dis elle est bien, et on passe à autre chose : tu ne sais pas trouver un fichier de nom connu qui figure dans un dossier windows fraîchement créé, tu veux que je te réponde quoi ?
Depuis le début je te dis de faire comme le fichier original, qui fait ça :
static void WriteConfigToMemory(void)
{
WDRV_NVM_write((uint8_t *)p_wdrv_configData, sizeof(WDRV_CONFIG_DATA));
}
mais il semble que tu aie du mal à analyser un source existant, pour la sst si tu as pas un source clé en main, ça va être très dur.
oui, j'ai dû faire cette légère modif également car le soft d'origine utilise des char pour les paramètres réseaux charger
networkConfig[0].ipAddr = appDataTCPIP_WIFI.new_IP;
networkConfig[0].ipAddr appartient à une structure dont les éléments sont des "char" donc au lieu de tout changer dans le soft j'ai préférer changer le type de variable de la fonction écriture et de lecture.
j'ai donc fais : bool WDRV_NVM_write_new(char *buf, int size);
j'ai tenté de modifier ta propos comme tel :
WDRV_NVM_write_new(((char *)&appDataTCPIP_WIFI, sizeof(appDataTCPIP_WIFI)));
je comprend pas pourquoi ça ne passe pas
Merci pour le compliment (: , mais tu as raison, je préfère ta propos de loin, c'est pour ça que je souhaite l'utiliser
Rien rien (: je vais persévérer, c'est simplement que j'avais un doute sur le fichier que j'ai téléchargé
tu as ajouté une parenthèse, il fallait en enlever une, le fait de rajouter des parenthèses superflues, des fois ça passe, des fois ça fait du grabuge
fct( (a,b) )
là tu n'envoies qu'un argument (b) à la fonction qui en attend 2
Le superflu fait souvent mal en programmation
j'ai donc le dossier sst26,
je vais essayé de l'inclure dans mon projet
ok d'accord, effectivement ça fonctionne mieux (:
il n y a rien à inclure, et pas la peine de revenir avec un message d'erreur, car je ne pourrais pas t'aider.
Il y a à analyser le fichier source et le modifier pour rajouter les fonctions spi Pic32, et quand on est sur, compiler et ce sera bon (presque) du premier coup.
Il y a au moins 2 ou 3 jours de boulot avant la première compilation.
OK
En fait, dans l'ordre, je m'occupe du bus SPI PIC32
Puis vois les fonctions du sst pour les adapter