在树莓派 Pico/RP2040 上嵌入 Swift 而无需使用 Pico SDK

主要观点:成功为树莓派 Pico 创建小型嵌入式 Swift“工具链”,是仅含 Makefile 的形式,暂未与 SwiftPM 集成,可在 macOS 和 Linux 上运行,代码主要为 Swift,少量 C 和汇编用于引导,使用 ARM 嵌入式 LLVM 工具链的 C 编译器和链接器,当前可执行文件小于 1KB,下一步计划是实现 SwiftPM 集成,同时讨论了不同方法的优缺点,如不使用树莓派 Pico C/C++SDK 虽减少构建系统复杂度但需从头构建且很多功能未实现,还探讨了新的 SDK 方法及相关问题,如使用 Swift 链接器的困难、相关错误及可能的解决办法等。
关键信息

  • 工具链仓库地址:[具体仓库地址未提及]
  • 涉及的工具链:ARM 嵌入式 LLVM 工具链
  • 可运行的平台:macOS 和 Linux(经 Ubuntu 22.04 通过 Docker 测试)
  • 当前可执行文件大小:小于 1KB
  • 下一步计划:实现 SwiftPM 集成
    重要细节
  • 不使用 Pico SDK 作为基础的优缺点:

    • 优点:构建系统复杂度降低,更易与 SwiftPM 集成;
    • 缺点:需从头构建,目前几乎无其他功能,如无定时器、I²C、SPI 等。
  • 尝试使用 Swift 链接器的错误及相关讨论:如找不到/usr/lib/swift/armv6m/swiftrt.o文件,找不到相关库等。
  • 关于 SwiftPM 实验的进展及问题:创建了包含最小 SwiftPM 包的 repo,在 Mac 和 Linux 上有不同构建错误,已记录在相关 issues 中,还提到成功用 SwiftPM 构建静态库并链接的例子。
阅读 24
0 条评论