在Eclipse下使用arduino Ethernet.h

问题描述:

我想使用eclipse进行Arduino开发,并且遇到一些问题。在Eclipse下使用arduino Ethernet.h

我使用Eclipse + Eclipse AVR插件+ WinAVR。我设法将Arduino核心库编译成静态库。

现在我想使用我的以太网屏蔽,但我找不到在Eclipse上使用以太网库的方法。

  1. 复制的文件夹从arduino-022/libraries/Ethernetarduino-022/libraries/SPI到我的项目文件夹,然后我做了一些修改,以工作包括。结果是有关DDRBPORTB的一些错误。

  2. 将以太网和SPI文件夹添加到项目的包含路径中。结果如下。

  
    main.cpp:(.text+0x8): undefined reference to `Server::Server(unsigned int)' 
    ./main.o: In function `loop': 
    main.cpp:(.text+0x36): undefined reference to `Server::available()' 
    main.cpp:(.text+0x3c): undefined reference to `Client::operator bool()' 
    main.cpp:(.text+0x56): undefined reference to `Client::available()' 
    main.cpp:(.text+0x64): undefined reference to `Client::read()' 
    main.cpp:(.text+0xf6): undefined reference to `Client::connected()' 
    main.cpp:(.text+0x110): undefined reference to `Client::stop()' 
    ./main.o: In function `setup': 
    main.cpp:(.text+0x138): undefined reference to `Ethernet' 
    main.cpp:(.text+0x13a): undefined reference to `Ethernet' 
    main.cpp:(.text+0x144): undefined reference to `EthernetClass::begin(unsigned char*, unsigned char*)' 
    main.cpp:(.text+0x14c): undefined reference to `Server::begin()' 

我不知道自己还能做些什么。有没有人尝试过这样的事情?

我一整天都在努力弄清楚这件事情,事实证明它其实并不困难。失去的时间是由于一些设置对make文件“不可见”的事实。另外,对于没有深入研究手册的人来说,生成的eclipse makefile非常神秘。如果你想看看manual。对于解决方案本身:

简短版本: 制作一个Arduino Core库的静态库项目并构建它。

为SPI,w5100和以太网制作单独的静态库项目 需要为项目构建一些连接。首先,我将include目录设置为正确指向,我将在下面介绍。其次,我将项目引用设置为正确,以便可以使用所有正确的依赖构建来构建应用程序。

  • SPI - >包括Arduino的芯
  • W5100 - >包括的Arduino芯和SPI
  • 以太网 - >包括的Arduino芯SPI和W5100
  • 应用程序本身 - >仅包括W5100和以太网(假设它只是以太网 - 库)
  • 应用程序本身 - >添加项目到库的路径和相应的库的所有路径(不LIB前缀)

注意项目重命名,因为它们不会通过库设置和路径传播。在你的设置中还要注意一些理智,以便更容易捕捉到任何缺失和突破的细节。

我会尝试用更详细的解释以后编辑但这应该回答你的问题

编辑

我试图刚刚导入的以太网文件夹,使静态的项目出来的如果。由于一些奇怪的原因(我不知道Eclipse的细节),Eclipse并没有深入到实用程序文件夹中,而没有编译它。如果它不编译,并且因为你没有包含文件的静态库,你会得到未定义的引用,试图编译以太网。另外,静态库不能通过avr eclipse插件链接,而且实际上应该足够了。没有这样的对话。

此外,在一个奇怪的错误中,我无法解释这些错误,并且几乎造成了这些错误,make文件中的一些魔法通过cc没有定义的cc变量来调用编译器。这个问题已经解决了,把变量作为参数传递给make.exe CC = avr-g ++。 我努力让它只通过一个项目工作,它最终让我在静态库构建中对arduino核心的未定义引用让我完全僵化。 我知道这不是你问题的答案的一部分,但它应该留在这里,让任何人在制作Eclipse成为事实上的Arduino IDE的过程中找到指导,这就是你所要求的。

我不明白你是如何得到有关PORTB和DDRB的错误,但我认为它可能是在构建中缺少的东西。就我的情况而言,它只是吐出非感知错误报告。

课程是:将单独的库变为静态库项目和引用,并将它们包含在源代码中,并将其包含在最终应用程序的静态库中。

(注意:Arduino IDE应该完全禁止并迁移到Eclipse或一些真正的IDE)

+0

感谢您的支持。我会检查一下,看看会发生什么。 – kechapito

+0

我有同样的问题,这对我的项目至关重要。希望它有效 –