【发布时间】:2018-01-31 15:11:53
【问题描述】:
我是第一次尝试 RIOT OS。下载源代码后,我可以非常轻松地构建应用程序,包括需要 ARM 工具链的目标。
hello-world 应用程序在我的 Linux 构建机器(使用 BOARD=native 构建)上运行良好,并在终端中打印。
当我切换到嵌入式平台(Nucleo F411,例如 ARM Cortex M4)时,我可以期望在哪里出现任何 puts() 或 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;
}
按照此处的安装说明:link,我正在使用 ARM GNU 工具链 gcc-arm-none-eabi-7-2017-q4 进行编译。我想我需要一些额外的编译器标志,或者在上面的应用程序代码之外编辑板初始化函数。但是,在这个阶段,我不知道从哪里开始。我的最终目标是观察“Hello World!”并在我的开发套件的引脚 TX/D1 上配置“你正在运行...”。
【问题讨论】:
-
对于 SO 来说并不太具体,但为了获得更好的答案,您需要准确说明所使用的工具链。
-
你能解决你的问题吗?如果没有,首先尝试使用Docker 构建hello world 示例。之后调用
make BOARD=nucleo-f411re flash-only term应该会烧录图像,打开终端并显示 hello world 消息。 -
我最终没有解决这个问题。我正在从事的一个项目朝着不同的方向发展(不同的平台和操作系统)。这是在项目的评估阶段。如果 RIOT 超级好用,我会推荐它,但 MCU 供应商提供了“开箱即用”的 freeRTOS 示例。 (我的看法)