Tock 二进制大小 - 博客 - 第二波

主要观点:Tock 是强大安全的嵌入式操作系统,多年发展带来资源膨胀,特别是代码大小膨胀。文中通过一系列实验探索代码膨胀原因及 Tock 如何适应更严格代码大小约束。
关键信息

  • 2018 年 Tock 最小内核代码约 7KB,如今多数平台默认构建超 100KB。
  • 以 NRF52840DK 为例,初始内核代码近 200KB,去除多余组件后可减至约 6.8KB。
  • 编译器内置函数中 64 位整数除法较大,GPIO 引脚初始化占用较多指令。
  • 运行进程会使二进制文件增大,存在格式化代码等。
  • C 语言中的 memmove 比 memcpy 大且慢。
  • 有在 Rust 标准库中添加cfg(optimize_for_size)选项以改善嵌入式二进制大小的想法。
    重要细节
  • 实验中通过逐步去除不必要组件来减小代码大小,如去除超量的外设驱动、调试功能、进程加载调度基础设施等。
  • 对编译器内置函数和代码片段的分析,如 64 位整数除法的实现方式,以及 memmove 替代 memcpy 的情况。
  • 展示了不同实验步骤下代码大小的变化及相关函数的具体信息。
阅读 8
0 条评论