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驱动移植要点