【问题标题】:How to execute system commands using raspberry pi pico如何使用树莓派 pico 执行系统命令
【发布时间】:2021-10-26 16:44:40
【问题描述】:

我想知道在将树莓派 pico 插入 USB 时是否可以在计算机上运行系统命令?

我试着像普通的 C 程序一样做:

#include "pico/stdlib.h"
#include <stdlib.h>
#include <stdio.h>

int main() {
    printf("Start");
    stdio_init_all();
    char *cmd = "ls";
    system(cmd);
    return 0;

}

虽然 printf 工作得很好,但系统函数(例如:readfile)不起作用。

有什么方法可以让我使用 pico usb 输出在 PC 上运行某种操作?

另外,还有一个名为picoducky 的项目允许pico 在系统上运行命令,但不幸的是它是用python 编写的,我正在寻找c 代码。

【问题讨论】:

  • 这并不像通过串口输出数据那么简单,也没有天生的方式来控制计算机。鸭式设备通常充当像键盘一样的输入设备。您应该查看 Pico 的 HID 示例。
  • 你不能执行系统命令,因为它没有操作系统和命令行解释器。

标签: c raspberry-pi-pico


【解决方案1】:

Pico 使用 USB 转串口与 PC 通信,反之亦然。除非 PC 上有一台服务器可以解释通过串行发送的数据而不是执行 cmd 命令,否则用传统方式是不可能的。但是,您可以让 Pico 模拟 USB HID 设备并发送击键。检查Tinyusb 和这个pico-superkey-board 项目

【讨论】:

    【解决方案2】:

    要能够在嵌入式系统中用 C 语言调用 system() 函数调用,首先需要了解几件事:

    • system() 使用作为参数传递的字符串作为参数调用用户 shell。您是否正在运行操作系统? shell 通常是一个操作系统组件,通常不会出现在许多嵌入式系统中。
    • system() 需要/bin/sh 才能正常工作。要运行ls,您还需要安装它(ls 命令)。

    你没有说你的树莓派 pico 是什么操作系统,但恐怕它不是 linux(或任何 unix 风格),所以可能所有这些对你都是禁止的。

    通常,在小型系统中具有类 unix 环境的要求阻碍了在此类系统中使用高科技操作系统。 Linux 需要大量内存(就像普通的树莓派一样,但在小版本中没有),大容量的存储系统(在 USB 磁盘、闪存卡等,但通常最少安装几个 Gb)

    在您的情况下,264kb 的 ram 非常小,无法拥有非 mmu 处理的微处理器,能够寻址虚拟内存空间。此外,2Mb 的闪存让您可以编写大型程序,但不能安装像 linux 这样的操作系统。

    如果您有system() 的模拟器,您应该能够运行其他程序,但是如何?一个树莓派 pico 有空间只运行一个程序(你写入闪存的那个程序,没有别的) 即使你编写多任务操作系统的内核,你也会缺乏运行文件系统存储程序的空间,因为你通常有限制访问安装程序的闪存。

    【讨论】:

    • 感谢您的完整回答。事实上,我试图通过 pico 的 USB 输出在我的 PC 上运行 system() 函数。正如其他人所说,我必须尝试一些方法来制作 HID 设备而不是使用系统功能。
    猜你喜欢
    • 2022-12-16
    • 2014-04-29
    • 2021-07-29
    • 2022-11-13
    • 2019-08-01
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多