How to compile freestanding binary for ARMv6?

I think you're right. As you say, you'd need the arm-none-eabihf target, which is not available through rustup. I think you need to build it using xargo, with your own spec json file. There's an example here (untried though): Raspberry Pi Bare Bones Rust - OSDev Wiki