我是第一次尝试 RIOT 操作系统。下载源代码后,我可以非常轻松地构建应用程序,包括需要 ARM 工具链的目标。
hello-world 应用程序在我的 Linux 构建机器(使用 BOARD=native 构建)上运行良好,并在终端中打印。
当我切换到嵌入式平台(Nucleo F411,例如 ARM Cortex M4)时,哪里会出现 put() 或 printf() 调用?此外,如果 printf() 还没有到达 UART1,我该如何设置该位置呢?
如果这对于 SO 来说太具体,我们深表歉意。我不熟悉 RIOT OS 邮件列表,但我也会尝试一下。
编辑:hello-world 示例确实很简单,如下所示:
#include <stdio.h>
int main(void)
{
puts("Hello World!");
printf("You are running RIOT on a(n) %s board.\n", RIOT_BOARD);
printf("This board features a(n) %s MCU.\n", RIOT_MCU);
return 0;
}
按照此处的安装说明后,我正在使用 ARM GNU 工具链 gcc-arm-none-eabi-7-2017-q4 进行编译:link 。我想我将需要一些额外的编译器标志,或者在上面的应用程序代码之外编辑板初始化函数。但是,在这个阶段,我不知道从哪里开始。我的最终目标是观察“Hello World!”并将其配置为转到那里后,在我的开发套件的引脚 TX/D1 上显示“您正在运行...”。
最佳答案
在 RIOT 操作系统中,默认情况下,stdio 映射到 UART0。这可以在这里看到: https://github.com/RIOT-OS/RIOT/blob/master/sys/include/stdio_uart.h#L38
通过重新定义STDIO_UART_DEV
,您可以将stdio映射到不同的UART。如果您想知道哪个 UART 映射到哪些引脚,请查看您的主板的 periph_conf.h
,对于 Nucleo F411,该文件位于此处:
https://github.com/RIOT-OS/RIOT/blob/master/boards/nucleo-f411re/include/periph_conf.h#L56
关于c - RIOT OS - "stdout"用于嵌入式平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545405/