2013-10-09 33 views
3

我从来没有编写过微控制器。我一直在玩Arduino,并且发现编程语言只是C语言,其中包含由IDE动态生成的样板代码。所以:在没有操作系统的Arduino /微控制器上的C/C++和Linux/Windows上的C上,我不能做什么?任何只使用标准库的程序是否应该工作?还是有专门的功能,如malloc/free和setjmp/longjmp的限制?C对没有操作系统的微控制器有什么限制?

我问,因为我想编译和使用像openssl或crypto ++和Arduino Due(使用32位ARM处理器)的加密库。

回答

6

没有限制,除了由编译器施加的限制。显然,当你没有“操作系统”时,你不能进行“操作系统调用”,但只要有人编写了一个提供所需功能的库,实际上“没有限制”。加密 - 完成。 Malloc - 简单。 TCP/IP - 知道了。很多Arduino库。好有趣。去吧。

http://www.nongnu.org/avr-libc/user-manual/malloc.html

+2

一些有用的信息,尽管通常可以避免动态内存的嵌入式平台(的malloc /免费)上,因为你的目标是避免运行时错误。 –

+1

@MartinBeckett - 是的!而且既然你“拥有”了内存,你不必分享,而且内存是宝贵的,你通常想要嫉妒它,而且你可以硬编码大部分分配。但这并不意味着它无法完成。 “没有限制”与“这是一个好主意”不一样...... – Floris

+0

我必须检查,我很惊讶AVR有一个malloc,它是哈佛架构(IIRC),没有mmu –

相关问题