con*_*roy 6 linux embedded gcc toolchain cortex-m
我需要为 Cortex-M MCU 构建一个完整的 linux 开发框架,特别是 STM32F7 Cortex-M7。首先,我必须解释一些背景信息,所以请耐心等待。
我已经下载并构建了一个带有 croostool-ng 1.24 的 gcc 工具链,指定了一个 armv7e-m 架构,其中包含仅拇指指令和 linux 4.20 作为操作系统,并且我希望输出是 FLAT 可执行文件(我认为这意味着 bFLT)。
然后我继续使用 编译 linux 内核(版本 4.20)configs/stm32_defconf,然后静态编译的 busybox rootfs,全部使用我的新工具链。
内核启动得很好,但给我一个错误和内核痛苦,并显示以下消息:
启动 init: /sbin/init 存在但无法执行(错误 -8)
和
request_module:无法处理 modprobe binfmt-464c,kmod 忙于 50 个线程
有趣的部分是最后一条消息。我的busybox可执行文件竟然是一个.ELF!Cortex-M没有 MMU,所以不可能在.ELF支持MMU 的架构上构建 linux 内核,这就是为什么找不到 (464c)"LF" 二进制加载器,没有。
所以最后,我的问题是:
我如何构建 bFLT 可执行文件以在无 MMU 的 Linux 架构上运行?我的工具链有 elf2flt,但在 crosstool-ng 中,我已经指定了无 MMU 架构和 FLAT 二进制文件,我期待直接 bFLT 输出,而不是“无用”的可执行文件。这甚至可能吗?
或者更好:是否有记录的标准程序来构建基于 Cortex-M 的完整、有效的 Linux 系统?
跟进:
我放弃了构建 FLAT 二进制文件并尝试了 FDPIC 可执行文件。另一个死胡同。AFAIK:
任何见解将不胜感激。
小智 0
我们已成功在 Cortex-M3/4/7 机器上运行 Linux。我们正在使用 2 种工具链:
希望这可以帮助。