【问题标题】:At91sam9rl arm hello world without osAt91sam9rl arm hello world 无操作系统
【发布时间】:2010-09-14 06:21:49
【问题描述】:

我想运行一个简单的 hello world,用 c 编写,app。 在我的 at91sam9rl-ek 上。

没有操作系统可以吗?

而且(如果是的话)我必须如何编译它? - 现在我尝试使用 g++ lite 来创建 arm 代码

(一般来说板子可以在没有操作系统的情况下启动哪些程序, 汇编程序,arm 代码?)

【问题讨论】:

    标签: c arm atmel


    【解决方案1】:

    当然,没有操作系统运行没问题,我每天都在做那种事情......

    http://sam7stuff.blogspot.com/

    至少在开始时,您的程序不会类似于桌面应用程序,我会避免使用任何库 C 库,没有 printfs 或 strcmp 或类似的东西,直到您对它有感觉并找到合适的工具。也没有浮点数。添加一些数字做一些移动闪烁一些LED。

    codesourcery lite 可能是最快的入门方式,我相信 gnueabi 就是您想要的。

    这个 winarm 网站有一个编译器和大量的非操作系统项目,似乎每个基于 arm 的微控制器。 http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/

    Atmel 非常善于提供信息,毫无疑问,他们有示例程序,您也可以在评估板上尝试。

    emdebian 是另一种交叉编译器,它在某种程度上是最新的并且有二进制文件。从头开始构建用于交叉编译的 gcc 一点也不差。不过,C 库是另一回事,甚至 gcc 库也是如此。我发现没有任何一个库都更容易。

    可以让 C 库工作并运行多种程序。取决于您要做什么。啊,刚刚看了一下规格,这是一个非常严肃的评估板,如果你选择运行一个操作系统,它有足够的能力。您当然可以运行将显示器用作用户界面的程序。读/写 sd 卡、usb,基本上板上的所有东西,没有操作系统,如果你选择的话。

    【讨论】:

    • 感谢您的回复,那么我的董事会可以理解哪些代码?根本没明白。顺便说一句,当我使用 winarm、yagarto 或 codesourcery 进行编译时,我遇到了一些“对 _exit .. _lseek ... 等的未定义引用”错误。我读到了一些我的板需要的 newlib 和 syscall,也许你对我有另一个提示?
    • 你在编译什么,我猜你正在尝试编译一些需要 C 库的东西?以及您如何编译它,这些是可能编译为使用操作系统的 C 库调用。我通常将 gcc 与这些选项一起使用。 -Wall -O2 -nostdlib -nostartfiles -ffreestanding 并提供我自己的启动代码,不要使用 c 或 gcc 库。
    • Newlib 是/曾经是嵌入 C 库的好方法。让 binutils、gcc 和 newlib 组合起来工作变得很困难。使用 C++ 让噩梦变得更糟。 Newlib 有一种非常简单的方法来创建您自己的系统调用实现,退出、中止、查找、打开、关闭、读取、写入等。像 dwelch.com/ipod/gccarm.txt 这样的指令过去可以工作。像这样的编译器和库会让你做的事情变得更容易
    • 我还没有深入研究 codesourcery 或 winarm 或 yagarto 或 devkitarm 是如何解决 C 库中的系统调用问题的。当时我发现自己构建自己的解构和重建他们的部分更容易。
    • 首先只是一些简单的应用程序。就像 c no c++ 中的 hello world 一样,我只使用 stdio、stdlib 的库。
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2018-12-17
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多