Lionel Debroux wrote:Puisque l'utilisation d'un tas Python de 32 KB change le comportement... allons un peu plus loin ?
En pièce jointe, un build avec un tas de 40 KB
Jusque là j'ai tout compris !
Lionel Debroux wrote:et un nombre maximum de noeuds réduit (3/4 de la valeur d'origine mentionnée plus haut, et sizeof(TreeNode) == 12, donc ça laisse 2048 noeuds). Comme le deuxième changement réduit davantage la RAM consommée que le premier ne l'augmente, le tas pour malloc (section .heap) est plus grand, 0xEB64 octets maintenant.
Je me demande si on ne pourrait pas réduire la taille de la pile (section .stack), aussi... sauf utilisation de grosses variables locales, 32 KB (0x7FF8) est élevé alors que le tas ne fait même pas le double de ça.
sizeof(TreeNode) == 12 parce qu'il y a deux int16_t et un int8_t, et un pointeur vers la vtable, donc du padding. De toute façon, la taille doit être multiple de 4 pour faciliter les copies mémoire, c'est également marqué en commentaire.
J'ai tout compris, bien évidemment.
Quelques questions en rapport avec le .bin :
Tu le génère depuis une machine sous quel OS ?
Tu fais comment pour attraper le .bin ?
Le mien sous debian 10 avec interface graphique (on ne rigole pas) s'efface immédiatement après l'echec du flashage, car il serait trop gros pour être envoyé (forcement 8mo>1mo), bon après aussi je ne savais pas qu'il avait été généré par défaut pour la N0110, ce n'est pas marqué dans la doc ni qu'il faut rajouter des paramètres pour compiler )