我正在使用 Buildroot+Dropbear 在嵌入式系统上运行 Linux。我正在使用 systemd 进行 init,如果这很重要的话。
通过 SSH 登录对于 root 来说可以正常工作,但对于普通用户则不行(给出“权限被拒绝,请重试。”)。用户的 shell 被重定向到自定义程序,并在 /etc/passwd 中包含以下条目:
admin:x:1000:1000:Custom user:/home/admin:/opt/customCLI
Run Code Online (Sandbox Code Playgroud)
admin当 shell 为 时,以用户身份登录可以正常工作/bin/sh。 /opt/customCLI是我编写的一个程序,它接受最少的命令集。
有没有办法支持 SSH 直接登录自定义程序?
我是第一次尝试 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;
}
Run Code Online (Sandbox Code Playgroud)
在按照此处的安装说明进行操作后,我正在使用 ARM GNU 工具链 gcc-arm-none-eabi-7-2017-q4 进行编译:link。我想我需要一些额外的编译器标志,或者在上面的应用程序代码之外编辑板的 init 函数。但是,在这个阶段,我不知道从哪里开始。我的最终目标是观察“Hello World!” 和“你正在运行......”在我的开发工具包的引脚 TX/D1 上配置它去那里后。