At91sam9rl arm hello world 无操作系统

Posted

技术标签:

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

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

没有操作系统可以吗?

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

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

【问题讨论】:

【参考方案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 的库。

以上是关于At91sam9rl arm hello world 无操作系统的主要内容,如果未能解决你的问题,请参考以下文章

at91sam9g45 mcp2515 linux3.6.9驱动移植要点

SylixOS 基于AT91SAM9X25的CAN总线传输流程解析

sam9x5 sam-ba

qemu中的ARM At91 CPU启动

AT91SAM7X-EK开发板芯片的加密与解除加密

SPI(串行端口通信)问题,卡在 ioctl()