Commit Graph

81 Commits (014c5f46f52588f5b8b1b0de1eb73e12406c0b51)

Author SHA1 Message Date
Andrew Fritz 726f3f281c [mbed][k64f] Removed configuration of MII pins 2015-04-29 13:14:02 -05:00
Martin Kojtal 0703a02023 Merge pull request #944 from xiongyihui/master
add net support target Seeed Arch Max (stm32f407)
2015-03-10 08:20:03 +00:00
GustavWi db5d9f7291 LWIP: Corrected pointer type when allocating stack memory to a new thread 2015-03-05 11:14:38 +01:00
GustavWi 86c6d635d0 IAR support for ethernet library 2015-03-04 13:06:27 +01:00
Yihui Xiong 8c48588aec [net] add target Seeed Arch Max (stm32f407) 2015-03-03 10:03:09 +08:00
Anders Lindvall dcc53f4bda Fixed target issues for TARGET_LPC4088_DM
- Removed target alias from the EXPORT_MAP in targets.py as it didn't work
- Added copies of the LPC4088 target exporters
- Fixed flag issue in the gcc toolchain
- Changed defines in eth USBDevice, rpt and rtos to handle
  TARGET_LPC4088_DM
2015-02-08 11:56:39 +01:00
Masao Hamanaka 11d836f6de Fix a bug that Ether Driver there is a case where the transmission can not be performed correctly.
Fix a bug as below.
- If Ether driver have been set multiple transmit data without waiting for the received data, Ether driver can not send data correctly .
2015-02-05 13:43:12 +09:00
Masao Hamanaka 9a8a75e827 Add Ethernet functionality
Although the Ethernet functionality is not for review.
2014-10-31 17:01:59 +09:00
sg- 3af1e6597b [net][k64f] Add access to link status in emac driver 2014-10-10 14:29:43 -05:00
0xc0170 c4a60632a8 [NET, HAL] K64F - enet edit for new header files (address used instead of instance)
- hal enet - asserts commented out as they are not valid for new MCU headers (address, no instance)
	- net - corrections for new ksdk API
2014-09-22 13:49:12 +01:00
0xc0170 fc5c9acbec [NET] K64F - enet driver addition (latest merge removed that file)
- plus API update to reflect changes in KSDK (interrupt  manager)
2014-09-19 13:33:41 +01:00
0xc0170 c8eab47e81 Merge branch 'master' of github.com:Sissors/mbed into Sissors-master
Conflicts:
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/PeripheralPins.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/PortNames.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K22F/device/MK22F51212/fsl_bitaccess.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/PeripheralPins.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/PortNames.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogin_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogout_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/device/MK64F12/regs.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_irq_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_object.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/i2c_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/objects.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pinmap.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/port_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pwmout_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/rtc_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/serial_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/sleep.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/spi_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/us_ticker.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/PeripheralPins.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/PortNames.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/analogin_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/analogout_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/device/MK64F12/regs.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/device/MK64F12/system_MK64F12.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/gpio_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/gpio_irq_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/gpio_object.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/i2c_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/objects.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/pinmap.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/port_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/pwmout_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/rtc_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/serial_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/sleep.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/spi_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/us_ticker.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/analogin_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/analogout_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_irq_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_object.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/i2c_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/objects.h
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/pinmap.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/port_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/pwmout_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/rtc_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/serial_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/sleep.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/spi_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/us_ticker.c
	libraries/net/eth/lwip-eth/arch/TARGET_Freescale/fsl_enet_driver.c
	workspace_tools/tests.py
2014-09-16 13:43:02 +01:00
Sissors 60df735622 [K64F] First enet fixes
Hopefully the hardware init new functions are correct
2014-09-16 13:01:23 +02:00
sg- 24f537ea60 [MTS_GAMBIT][K64F][exporters][net] Update directory names for K64F to allow derivative platforms. Change net/eth/lwip-eth/arch directory name to allow K64F derivative EthernetInterface support. Disable Ethernet in MTS_GAMBIT device.h - seems depreciated or just not implemented. Add MTS_GAMBIT exporters for uvision and gcc_arm 2014-09-04 17:26:54 -05:00
Martin Kojtal a681b14416 Change "error.h" to "mbed_error.h" to avoid conflicts with 3rd party code 2014-08-15 16:19:18 +01:00
Alexander Valitov aa157d0195 Fixed TX buffer reclaim mechanism
This was causing problems with larger transfers.
2014-07-30 15:49:49 +01:00
Martin Kojtal 09251dd3ba Revert "error.h -> mbed_error.h" 2014-07-08 14:04:50 +02:00
0xc0170 1dcc9246bd [LWIP] error.h -> mbed_error.h 2014-07-07 06:26:54 +02:00
0xc0170 372009f461 [K64F] enet - IRQ handlers are in the emac (eth) layer 2014-06-10 16:09:08 +01:00
Andreas Rebert 6d42cdc540 [LPC4088] GCC: corrected alignment problem when setting up memory region for Ethernet driver 2014-06-09 14:55:49 +02:00
Sergio Scaglia 62605dfaaa - Added initialization for Tx Fifo values and provided value for TFWR bits in ENET_TFWR register
Signed-off-by: Sergio Scaglia <sergio.scaglia@arm.com>
2014-05-22 21:43:23 -07:00
Sergio Scaglia 3c2119fab6 These changes solve:
1) Endianess of TX_DESC_UPDATED_MASK so Tx buffers can be released after tranmission.
   2) Avoid assert( ) failure due uninitialized variable in enet_hal)config_tx_fifo( ) function.

Signed-off-by: Sergio Scaglia <sergio.scaglia@arm.com>
2014-05-21 15:05:29 -07:00
unknown 87eb44e68d This change fixes the problem with K64F Ethernet support where after transmitting frames, the buffers were not released so system would eventually running out of memory.
Signed-off-by: unknown <sersca01@SERSCA01-002137.usa.Arm.com>
2014-05-13 10:29:34 -07:00
Bogdan Marinescu 518967a1d8 Fixed a couple of compilation errors in CellularModem 2014-05-08 10:58:57 +01:00
Bogdan Marinescu 94fd2228fb Added K64F TCP/IP support
Currently NET_7 (HttpClient test) and NET_8 (NTP test) fail for
unknown reasons.
2014-04-23 16:16:38 +01:00
mazgch bdd80ab5f3 add errors in case some target defines were not set properly 2014-03-20 16:06:24 +01:00
mazgch db13fa3402 init enum 2014-03-03 15:04:55 +01:00
mazgch 63f20534ca fix merge conflict 2014-03-03 12:14:44 +01:00
mazgch 0acbc6440e at command if: improve warning reporting
link monitor: added api to get local phone number to link monitor
ubx modem: added network indication led
ubx modem: better handle different modems
2014-03-03 10:36:23 +01:00
mazgch 6b9f2079f1 Add detection of LISA-C to select CDMA protocol when using serial port.
Make link monitor compatible with CDMA (no AT+COPS).
2013-12-17 11:35:23 +01:00
mazgch 6a9083527e CDMA currently only uses one CDC 2013-12-10 15:25:08 +01:00
mazgch 20776dbaa5 fixed the comparison 2013-12-09 23:43:51 +01:00
mazgch ad65dfff5a Merge branch 'master' of https://github.com/mbedmicro/mbed 2013-12-09 21:55:00 +01:00
mazgch d5da332367 only use one port with CDMA at the moment. 2013-12-09 21:48:01 +01:00
mazgch ea42c3b726 typo 2013-12-09 21:28:56 +01:00
mazgch d0d4476659 adding support for serial port 2013-12-09 21:22:02 +01:00
Andreas Rebert f5511ff82a [LPC4088]: elif should have been else 2013-12-07 12:29:06 +01:00
Andreas Rebert 4109fb7d07 [LPC4088]: Networking was broking when splitting peripheral RAM into two sections 2013-12-06 15:36:37 +01:00
Adam Green 64620e2e78 lwip: Stop dropping long TCP segments
If lwIP placed more than 2 pbufs in a TCP segment, the ethernet driver
would fail to send it as it didn't have enough Tx descriptors.  The
maximum number of pbufs outstanding for transmit that lwIP keeps is
defined by the TCP_SND_QUEUELEN macro.  I modifed the value of
LPC_NUM_BUFF_TXDESCS to take advantage of this lwIP value.  The +1
takes into account that LPC_EMAC->TxProduceIndex ==
LPC->TxConsumeIndex is reserved for indicating that the queue is empty
so a full queue uses one less than the maximum count.
2013-10-29 23:41:21 -07:00
Adam Green 692cbd11f6 lwip: Fix invalid checksum bug
tcp_write() would incorrectly byte swap the checksum 1 too many times
when concatenating a pbuf to an existing TCP segment if the number of
bytes in the concatenated data was odd.  I hit this issue when I tried
to reproduce a lost segment issue reported by a mbed user in this forum
thread: http://mbed.org/forum/mbed/topic/4354/?page=2#comment-22657
2013-10-29 23:41:21 -07:00
Bogdan Marinescu a34945661d Added CellularModem as an abstract base class for modem implementations
Now both UbloxUSBGSMModem and UbloxUSBCDMAModem inherit from
CellularModem.
2013-10-17 15:40:46 +03:00
Bogdan Marinescu 87fbaa5507 Added missing constructor for CDMA modem initializer 2013-10-17 13:52:34 +03:00
Bogdan Marinescu 7585a23e6c Added CellularModem library, removed old VodafoneUSBModem library 2013-10-17 12:01:55 +03:00
Dave Van Wagner d3963de05d Added methods to retrieve gateway and netmask from DHCP assignment 2013-10-09 13:47:41 +03:00
Adam Green 7dddd9e578 Asm versions of netstack memcpy() and lwip_standard_chksum()
For tests such as TCPEchoServer
(http://mbed.org/users/emilmont/notebook/networking-libraries-benchmark/)
this change showed a 28% improvement (14Mbps to 18Mbps) when the echo
test was modified to instead use 1K data buffers.

I targetted these two functions based on manual profiling samples which
showed that a great deal of time was being spent in these two functions
when the network stack was being slammed with UDP packets.
2013-08-30 06:09:16 -07:00
Adam Green b0c0f47c7d Changed leading whitespace back to tab.
The leading whitespace preceeding the fields in the lpc_enetdata
structure definition were originally a tab and I used 4 spaces when
I added RxThread.
2013-08-27 23:57:24 -07:00
Adam Green 8cf3e658d1 Don't use semaphore from ENET_IRQHandler to packet_rx
I now use a signal to communicate when a packet has been received by
the ethernet hardware and should be processed by the packet_rx thread.
Previously the change to make the lwIP stack thread safe introduced
enough delay in packet_rx that the semaphore count could lag behind
the processed packets and overflow its maximum token count.  Now the
ISR uses the signal to indicate that >= 1 packet has been received
since the last time packet_rx() was awaken.

Previously the ethernet driver used generic sys_arch* APIs exposed from
lwIP to manipulate the semaphores.  I now call CMSIS RTOS APIs
directly when using the signals.  I think this is acceptable since that
same driver source file already contains similar os* calls that talk
directly to the RTOS.
2013-08-27 23:38:42 -07:00
Adam Green 2bed996462 Revert "net: Only process 1 packet per ethernet RX interrupt"
This reverts commit acb35785c9.

It turns out that this commit actually causes problems if an ethernet
interrupt is dropped because a higher privilege task is running, such
as LocalFileSystem accesses.  If this happens, the semaphore count isn't
incremented enough times and the packet_rx() thread will fall behind and
end up running as though it had only one ethernet receive buffer.  This
causes even more lost packets.

I plan to fix this by switching the semaphore to be a signal so that
the syncronization object is more boolean.  It simply indicates if an
interrupt has arrived since the last time packet_rx() was awaken to
process inbound packets.
2013-08-27 22:24:47 -07:00
Adam Green de8161fde1 net: Reset pbuf length when re-queueing on error.
I recently pulled a NXP crash fix for their ethernet driver which will
requeue a pbuf to the ethernet driver rather than sending it to the
lwip stack if it can't allocate a new pbuf to keep the ethernet
hardware primed with available packet buffers.  While recently
reviewing this code I noticed that the full size of the pbuf wasn't
used on this re-queueing operation but the size of the last received
packet.  I now reset the pbuf size back to its originally allocated
size before doing this requeue operation.
2013-08-27 22:24:03 -07:00
Adam Green acb35785c9 net: Only process 1 packet per ethernet RX interrupt
Previously the packet_rx() function would wait on the RxSem and when
signalled it would process all available inbound packets.  This used to
cause no problem but once the thread synchronization was turned
on via SYS_LIGHTWEIGHT_PROT, the semaphore actually started to overflow
its maximum token count of 65535.  This caused the mbed_die() flashing
LEDs of death.  The old code was really breaking the producer/consumer
pattern that I typically see with a semaphore since the consumer was
written to consume more than 1 produced object per semaphore wait.
Before the thread synchronization was enabled, the packet_rx() thread
could use a single time slice to process all of these packets and then
loop back around a few more times to decrement the semaphore count
while skipping the packet processing since it had all been done.
Now the packet processing code would cause the thread to give up its
time slice as it hit newly enabled critical sections.  In the end it
was possible for the code to leak 2 semaphore signals for every 1 by
which the thread was awaken.  After about 10 seconds of load, this
would cause a leak of 65535 signals.

NOTE: Two potential issues with this change:
1) The LPC_EMAC->RxConsumeIndex != LPC_EMAC->RxProduceIndex check was
   removed from packet_rx().  I believe that this is Ok since the same
   condition is later checked in lpc_low_level_input() anyway so it
   won't now try to process more packets than what exist.
2) What if ENET_IRQHandler(void) ends up not signalling the RxSem for
   every packet received?  When would that happen?  I could see it
   happening if the ethernet hardware would try to pend more than 1
   interrupt when the priority was too elevated to process the
   pending requests.  Putting the consumer loop back in packet_rx()
   and using a Signal instead of a Semaphore might be a better
   solution?
2013-08-27 22:24:03 -07:00