Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Stm32 ethernet lib#38

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Closed
ghost wants to merge21 commits intomasterfromSTM32_Ethernet_lib
Closed
Show file tree
Hide file tree
Changes fromall commits
Commits
Show all changes
21 commits
Select commitHold shift + click to select a range
a5c56b7
LwIP TCP/IP stack added
May 16, 2017
1bd6f3e
First step: DHCP request works. Hardware configuration validated.
Jun 6, 2017
d8a7658
Ethernet configuration validated. DHCP is functional. DNS is function…
Jun 14, 2017
5298367
Remote IP issue fixed. Ethernet RX mode selectable. Send manual IP co…
Jun 14, 2017
6763911
Add file to link Ethernet with main
Jun 14, 2017
d0b5d20
Client added
Jun 16, 2017
05f707a
Move *udp_pcb inside udp struct
Jun 16, 2017
ef96147
Rename library to keep compatibility with Arduino Ethernet library.
Jun 20, 2017
3cbfe2d
Ethernet mode configuration (RMII or MII)
Jun 21, 2017
d2023c4
Say to compiler where find the correct lwipopt.h
Jun 23, 2017
cabab9b
Move LwIP in library
Jun 23, 2017
5a48f79
Removed debug options of LwIP stack to decrease code size
Jun 23, 2017
e4515a3
Renamed Ethernet library
Jun 23, 2017
c741a80
DNS, DHCP, TCP & UDP functions under LwIP flags to give clean errors …
Jun 23, 2017
656680b
Example headers modified
Jun 23, 2017
f3526cb
Some documentation modification
Jun 23, 2017
17535b2
Fixed crash inside ChatServer & DhcpChatServer examples
Jun 26, 2017
0442f1f
Example headers updated
Jun 26, 2017
80b70aa
Code cleaned.
Jun 26, 2017
ad53a28
Custom option added.
Jun 26, 2017
bb77db0
Merge branch 'master' into STM32_Ethernet_lib
fpistmJun 29, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletionscores/arduino/chip.h
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -38,6 +38,8 @@
#include "usb_interface.h"
#endif //USBCON

#include "ethernet.h"

/* Define attribute */
#if defined ( __GNUC__ ) /* GCC CS3 */
#define WEAK __attribute__ ((weak))
Expand Down
3 changes: 3 additions & 0 deletionscores/arduino/main.cpp
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -45,6 +45,9 @@ int main( void )

for (;;)
{
// Define by Ethernet library. It is defined as __weak.
stm32_eth_scheduler();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

why doing it here in the core rather than in the loop ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

This is the idle task for handle timer and data reception. It must be called as much as possible.
I put it here to be sure it is called at least one time per loop.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

The same would happen if you put this call in the loop, so this does not answer my question.
Also this seems here that it will be called for each loop for a board that supports it, even if I don't use Ethernet , is that right ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

This function is defined as weak in ethernet.c, when the library NativeEthernet is not included, this function is empty.
And to call it in the loop, we must create a function that the user should call (this function will not be refered in the Arduino documentation).
I thought it was easier to leave that in background.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

OK - this is maybe acceptable if this has no impact when the library is not included. This may be explained as well in the comments

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Will this break if freertos or the arduino Scheduler library is used in combination with this library?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

@RickKimball

I don't know because I didn't study the LwIP stack in case of an "operating system". The NativeEthernet is oriented single threaded core. I refer you to the LwIP wiki or freertos example using the LwIP stack.
Maybe call stm32_eth_scheduler() inside its own thread or process is enough.


loop();
if (serialEventRun) serialEventRun();
}
Expand Down
4 changes: 3 additions & 1 deletioncores/arduino/stm32/PeripheralPins.h
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,5 +62,7 @@ extern const PinMap PinMap_SPI_SSEL[];
extern const PinMap PinMap_CAN_RD[];
extern const PinMap PinMap_CAN_TD[];

#endif
//*** ETHERNET ***
extern const PinMap PinMap_Ethernet[];

#endif
69 changes: 69 additions & 0 deletionscores/arduino/stm32/ethernet.h
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
/**
******************************************************************************
* @file ethernet.h
* @author WI6LABS
* @version V1.0.0
* @date 14-June-2017
* @brief Header for ethernet background task for LwIP stack.
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __ETHERNET_H
#define __ETHERNET_H

/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif

/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */

/* This function is defined by the NativeEthernet library and it is used as
background task inside the main loop. */
__weak void stm32_eth_scheduler(void)
{
/* NOTE : This function should not be modified. It is defined in the Ethernet
library.
*/
}

void stm32_eth_scheduler(void);

#ifdef __cplusplus
}
#endif

#endif /* __ETHERNET_H */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
8 changes: 8 additions & 0 deletionscores/arduino/stm32/pinmap.c
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,3 +82,11 @@ void* pinmap_merge_peripheral(void* a, void* b) {
// error("pinmap mis-match");
return NP;
}

PinName pin_pinName(const PinMap* map) {
if(map->pin != NC) {
return map->pin;
} else {
return NC;
}
}
2 changes: 2 additions & 0 deletionscores/arduino/stm32/pinmap.h
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,6 +39,8 @@ typedef struct {
bool pin_in_pinmap(PinName pin, const PinMap* map);
void pin_function(PinName pin, int function);


PinName pin_pinName(const PinMap* map);
void* pinmap_peripheral(PinName pin, const PinMap* map);
uint32_t pinmap_function(PinName pin, const PinMap* map);
void* pinmap_find_peripheral(PinName pin, const PinMap* map);
Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp