Je travaille avec ARM (SAM4), il a deux UART, j'ai besoin de configurer des flux afin que je puisse utiliser fprintf pour imprimer sur les deux.Comment définir plusieurs flux d'UART à utiliser dans fprintf
déjà essayé fwopen
sans chance:
FILE * debug;
debug_writefn(void *cookie, const char *buf, int n);
void comm_init(void) {
debug = fwopen(NULL, &debug_writefn);
if (debug == NULL) {
printf("Error");
}
fprintf(debug, "Test");
}
Cependant, la debug_writefn est plus récente appelée. J'utilise la chaîne d'outils arm-none-eabi-*
(je suppose qu'elle utilise newlib), ASF et FreeRTOS.
Cette question est plus étroitement lié à votre compilateur et les spécificités de sa mise en œuvre de bibliothèque standard que le MCU ou le matériel, de sorte qu'il vous aiderait avec quoi vous travaillez. Peut-être avec un exemple complet (si vous avez vérifié le retour d'erreur de 'fwopen' par exemple). Je ne pense pas que vous pourriez vous contenter de la solution de contournement simple et portable de l'écriture via 'snprintf' vers un tampon intermédiaire, puis de rediriger _that_ vers les UART à la place? – doynax
Qu'est-ce toolchain? Quel environnement d'exécution (IE OS, métal nu)? Généralement, sur un système de métal nu, il faut recibler la bibliothèque; Là, vous pouvez simplement envoyer des données aux flux stdout ou stderr vers les deux ports. – Clifford
Vous demandez une très grosse pile de code à ajouter ici pour que vous ayez l'impression que ce n'est pas du métal nu quand il s'agit de métal nu (utilisez-vous un RTOS)? Si vous voulez juste imprimer des chaînes, vous n'avez pas besoin de cette très grosse pile de code de la bibliothèque C, vous pouvez simplement envoyer les octets aux uart (s). –