0

我想知道将树莓派 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 代码。

4

2 回答 2

2

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

于 2021-11-27T17:04:02.657 回答
1

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

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

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

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

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

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

于 2021-08-27T13:01:11.433 回答