主页

交叉编译 Rust 到 mipsel 架构

本文记录了将一个依赖 libpcap 的 Rust 小工具编译到 mipsel 架构的过程。具体地,目标设备是一台运行 OpenWrt 22.03 的小米 AC2100 路由器,使用经典的联发科 MT7621 芯片,系统的 host triple 是 mipsel-unknown-linux-muslsf(注意必须是 sf,即软件浮点)。

阅读更多

ARM 指令集切换与 Veneer / Thunk

众所周知,ARM 架构到目前共有三种获得广泛应用的指令集:AArch32(简称 A32,原本称为 ARM 指令集)、AArch64(简称 A64,原本称为 ARM64 指令集)和 Thumb(简称 T32)。这三种指令集各自也有很多版本演进,基于不同微架构的 CPU 支持的指令集(以及版本)也不同,如:

阅读更多

为大端嵌入式处理器编译 Arm GNU 工具链

最近正在试图把 CanoKey 的闭源版本从 Arm Keil 工具链切换到开源的 GNU 工具链。这过程中有许多波折,或许之后会有独立的博客讲述这个故事。在迁移初期就遇到的一大问题是,Canokey 的安全芯片使用的处理器是大端的 SC000,本质上是基于 Armv6-M 架构的 Cortex-M0,使用 Thumb 指令集。而 Arm 官方提供的 Arm GNU Toolchain 对于这一架构仅有小端支持(即 host triple 为 arm-none-eabi,而非 armeb-none-eabi)。

阅读更多