c - RIOT OS - "stdout"用于嵌入式平台

标签 c embedded riot-os

我是第一次尝试 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/

相关文章:

c - 共享变量[RTOS]

embedded - 有没有办法告诉终端在发送更多数据之前等待?

c - RAM 使用 AT32UC3B0512

docker - 使用Docker构建riot/helloworld

c - 为什么 access(2) 检查真实的 UID 而不是有效的 UID?

c - 指向指针地址的指针

c++ - 从左侧调整大小时窗口闪烁

c 信号处理器