c - Embox 编译和烧写

标签 c linker operating-system real-time

我有兴趣尝试编译、打包和烧录 Embox到 MCU,从 Windows 或 Mac 机器(交叉编译),通过 JTAG,我有很多担忧。

观察我认为编写 Embox 应用程序并将它们部署/刷新到 MCU 的正常方式:

enter image description here

如您所见,根据我上面的理解:

  • Embox 源代码被编译(通过 make)到某个文件(目标文件?),<file>.<ext>
  • 同时,我的应用程序的源代码被交叉编译(以某种方式)到一个对象文件( myapp.o) 与 Embox
  • 兼容)。
  • 一些工具结合了:(a) Embox <file>.<ext>制作人 make , (b) myapp.o (c) 我指定的任何其他库。它将这些作为输入并生成单个应用程序镜像,该镜像已准备好通过 JTAG
  • 进行刷写。

    我的担忧,也在图中指出:
  • 运行 make 生成的 Embox“神器”的确切名称和文件扩展名是什么?在 Embox 源代码上?这个神器会根据你是在 Windows 还是 Mac 上而有所不同吗?除了什么工具make有必要生产这个神器吗?
  • 这个接收对象/临时文件并生成单个应用程序图像的神奇工具是什么?此应用程序图片的确切名称和文件扩展名是什么?
  • 交叉编译需要什么工具myapp.cmyapp.hmyapp.o那是 Embox 兼容的吗?
  • 最佳答案

    第一次听说 Embox,但是把 Embox 和你的代码结合起来的工具显然是 linker (所以交叉 ld 来自 binutils ,见 documentation of ld )。要了解有关链接器的更多信息,请阅读 Levine 的书 Linkers and loaders

    编译 Embox 源代码产生的 Embox 可能是一个库( libembox.a ),或者一个可重定位的目标文件 embox.o - 可能由 ld -r 制作)。

    生成的应用程序镜像可能是原始二进制文件 ( .bin ),但如果它由 GRUB 加载器加载,则它可能是 ELF 文件。

    我想构建过程与 Linux 内核构建过程非常相似。

    顺便说一句,我认为在 Linux 系统上开发可能会更简单,因为 Linux 每天都使用相同类型的工具。所以你可以在你的开发笔记本电脑上安装 Linux。

    您需要一个交叉编译器(针对您的目标平台)来编译您的代码以与 Embox 结合使用。

    关于c - Embox 编译和烧写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358356/

    相关文章:

    c - 如何逐个字母地考虑字符串并将它们与 if 函数进行比较?

    c++ - C union 和 C++ union 有什么区别?

    c - 返回 0 时发出 SIGABRT 信号

    c - c中数组的最大大小

    c++ - 如何处理 C++/GNU 工具链中的链接器错误?

    linux - 如何动态分配 CPU 资源给 Linux 中的进程?

    C++ 为什么这种特定情况会导致符号链接(symbolic link)错误?

    c++ - 当涉及路径时,如何编写与系统无关的代码?

    filesystems - 如何实现一个非常简单的文件系统?

    c - 共享变量的多处理竞赛