Commit Graph

23771 Commits (d4c83fc05645c95f7ec2ad0a0d308964b54fcf5c)

Author SHA1 Message Date
Russ Butler 7673ccd1c9 Improve LPC1768 USB stability
Make the following changes to improve stability:
-When disconnecting set address to disabled to prevent nacks
-Clear EP_SLOW one and only once for every interrupt where it is set_address
-Disable and clear control endpoint interrupts when disconnecting
2019-02-22 10:52:35 -06:00
Russ Butler aa76c776c9 Disable endpoints when disconnecting on Kinetis
Even thought the USB phy is disabled during disconnect, endpoints
still nack packets sent. This patch disables all endpoints so after
disconnect no USB traffic will be sent. This allows brief disconnects
of ~200us (or more) to be reliably detected by the host PC.
2019-02-22 10:52:35 -06:00
Russ Butler 0653799b5a Limit USB control transfer size
Limit the size of control reads to the max packet size of endpoint
zero. This fixes the handling of large transfers.
2019-02-22 10:52:35 -06:00
Russ Butler 2a84e3a4f6 Correct Kinetis 256 byte ctrl transfers
Correctly handle control transfers which are a multiple of 256 bytes
by checking for a non-zero value in the upper byte of size.
2019-02-22 10:52:35 -06:00
Russ Butler 08428f8300 Fix Kinetis endpoint initialization
Fully setup endpoint before enabling it in endpoint_add. This prevents
undefined behavior due to previous configuration.
2019-02-22 10:52:34 -06:00
Russ Butler b7eb7820e3 Remove the USB directory from mbed 2 travis
Don't include the USB directory when testing mbed 2 on travis.
2019-02-22 10:52:34 -06:00
Russ Butler 0eac26038d Update USBCDC and USBSerial
Update the USBCDC and USBSerial classes to the new API. This patch also
updates the blocking behavior to unblock at the appropriate times and
to let the processor sleep when blocking rather than busy waiting.
2019-02-22 10:52:34 -06:00
Russ Butler 0d8c8f0a28 Add USB utility classes
Add an allocation free linked list implementation. Additionally add
the class AsyncOp which provides blocking and wakeup funcionality
to simplify making asynchronous operations block.
2019-02-22 10:52:34 -06:00
Russ Butler c0df783249 Update USBPhy doxygen
Update USBPhy doxygen to pull in handbook copyedits. Also update the
docs to reflect the enhanced USBPhy API.
2019-02-22 10:52:34 -06:00
Russ Butler 2708200a19 Update the Kinetis USB driver to the new API
Update this driver to match the new zero-copy API.
2019-02-22 10:52:34 -06:00
Russ Butler 4ab3a485d1 Update the LPC17XX driver to the new API
Update this driver to match the new zero-copy API.
2019-02-22 10:52:34 -06:00
Russ Butler aedeee068a Update USBTester for the new USB API
Update the class USBTester so it works with the new zero-copy
USBDevice API.
2019-02-22 10:52:34 -06:00
Russ Butler 09c1d2cf1e Add abort API to USBDevice
Add the function endpoint_abort and ensure ongoing transfer are
aborted when an endpoint is removed.
2019-02-22 10:52:34 -06:00
Russ Butler 544282d934 Update USBDevice to reflect the updated USBPhy
Update USBDevice so the USB buffers are user supplied.
2019-02-22 10:52:34 -06:00
Russ Butler b75f0d4275 Update USBPhy to allow zero copy transfers
Update the USBPhy to allow for zero copy USB transfers on devices
which support it. This also aligns more closely with the CMSIS USB
driver model.
2019-02-22 10:52:33 -06:00
Russ Butler 4c398a308f Call disconnect when uninitializing USB
Disconnect USB when uninitializing USB so it is in a well defined
state.
2019-02-22 10:52:33 -06:00
Russ Butler 12231917ef Explicitly return when endpoint 0 is stalled
Stalling endpoint 0 indicates the end of a control transfer.
Return immediately when this occurs rather than continuing processing.

In particular, this patch prevents status from erroneously being
sent when _request_setup returns false inside _complete_request.
2019-02-22 10:52:33 -06:00
Russ Butler 8e2361a6b5 Allow transfer to start when configuring USB
Allow reads and writes to be started when entering the configured
state.
2019-02-22 10:52:33 -06:00
Russ Butler 7c96e22fa7 Move USBDevice processing out of user callbacks
Perform processing triggered by user callbacks when USB is being
unlocked rather than synchronously. This prevents recursive callbacks
which reduces stack usage. This also prevents state change inside
the user callback which makes the code easier to reason about.
2019-02-22 10:52:33 -06:00
Russ Butler ff157a237a Update stall state on set and clear feature
Call USBDevice::endpoint_stall/unstall in the request to set/clear
halt so the endpoint state is properly updated in the array
_endpoint_info.
2019-02-22 10:52:33 -06:00
Russ Butler 23f3c01633 Fix USB init problems
Initialize the _transfer structure so the behavior is the same
regardless of prior memory contents. This fixes a hang during
USB testing when CI flags are used.
2019-02-22 10:52:33 -06:00
Russ Butler de12bb57fa Update USBTester for simplified read handling
Remove read_start and replace read_finish with read to match the new
USBDevice API.
2019-02-22 10:52:33 -06:00
Russ Butler 3168a92231 Change USBDevice read handling
Remove the USBDevice function read_start and automatically start all
reads internally in USBDevice. This patch also renames the function
read_finish to read.
2019-02-22 10:52:33 -06:00
Russ Butler 57ca5bc335 Add and assert USB callback completion
Assert that when a callback is completed it is the active callback.
2019-02-22 10:52:33 -06:00
Russ Butler 23615a7769 Update Kinetis USB to match the USBPhy API
Copy the Kinetis USB driver files from
mbed-os\features\unsupported\USBDevice\targets\TARGET_Freescale
and update them to match the new USBPhy API.
2019-02-22 10:52:33 -06:00
Russ Butler 25fb3183cf Add Kinetis USB files 2019-02-22 10:52:32 -06:00
Russ Butler 2e7e026d2f Remove mbed 2 USB tests from Travis
Remove the mbed 2 USB tests since USB support will be part of mbed 5.
2019-02-22 10:52:32 -06:00
Russ Butler 4be11ff158 Add USBPhy for the LPC17xx
Move the LPC17xx USB driver files from
mbed-os\features\unsupported\USBDevice\targets\TARGET_NXP
and update them to match the new USBPhy API.
2019-02-22 10:52:32 -06:00
Russ Butler f9f12766d8 Add USBDevice test code
Add a USB test and the class USBTester.cpp to go along with it.
2019-02-22 10:52:32 -06:00
Russ Butler caace4ac61 Update USBDevice and configure to use a USBPhy
Update the USBDevice class API so it matches mbed-os's naming
conventions, has a more robust API and uses USBPhy as its backend.
2019-02-22 10:52:32 -06:00
Russ Butler f7cb2cd280 Update USB licenses and format code
Update USB licenses from MIT to Apache 2 and run astyle on the code.
2019-02-22 10:52:32 -06:00
Russ Butler a4b6cfe90a Copy USBDevice from unsupported
Copy the USBDevice code out of unsupported and into a top level USB
folder in preparation for development.

squash
2019-02-22 10:52:32 -06:00
Russ Butler 8ae123f2d4 Add USBPhy, USB HAL and Utility class
Add the USBPhy and USBPhyEvents abstract classes, the HAL header using
this class and the EndpointResolver utility class.
2019-02-22 10:52:32 -06:00
Aashish chaddha 151505c18e improve option names and description 2019-02-22 10:17:24 -06:00
Sarah Marsh 3b98ebc5be Change to MOVS for all targets 2019-02-22 14:35:21 +00:00
paul-szczepanek-arm 4b0296a6e1 prepared writes options 2019-02-22 13:52:21 +00:00
Sarah Marsh 3c51257524 Change MOV to MOVS for M0+ 2019-02-22 13:22:12 +00:00
paul-szczepanek-arm 4470f64581 mention config in readme 2019-02-22 11:33:23 +00:00
paul-szczepanek-arm 86546440d7 put cordio cfg in mbed_lib.json 2019-02-22 11:28:28 +00:00
Sarah Marsh 22abea324d Modify linker scripts for IAR and ARM compilers to support bootloader on NUCLEO_L073RZ 2019-02-22 11:06:29 +00:00
Jaeden Amero e5c1e0b7a7 crypto: Update to Mbed Crypto 1.0.0d6 2019-02-22 09:54:01 +00:00
Jaeden Amero c101a224bc crypto: Update to Mbed Crypto 1.0.0d5 2019-02-22 09:53:59 +00:00
deepikabhavnani 270827b0d5 Enable ODIN boards 2019-02-22 09:25:09 +00:00
deepikabhavnani d67536dd08 Target_PSOC6 - Remove IAR supported from targets failing IAR 8.32 build 2019-02-22 09:25:09 +00:00
Deepika 3fd5f53b51 Dynamic heap support will be breaking change for all targets in IAR 7.x
Reverting this feature till IAR 8.x is stable and supported in Mbed OS
for few releases

1. Revert "Add Dynamic heap support to IAR"

This reverts commit 8ee29bbfa2.

2. Revert "Splited RAM section not compatible with dynamic HEAP."

This reverts commit a645bb2a6b.

3. Revert "Add Dynamic heap support to IAR"

This reverts commit 891e1f261b.
2019-02-22 09:25:09 +00:00
Deepika e54be4aeff Add Dynamic heap support to IAR
Two new block properties available in linker configuration files:
"expanding size" and "minimum size" for IAR 8.11.2 and above

Sample:
define block HEAP with expanding size, minimum size = 16K, alignment = 8 {};

This block will expand to consume all remaining available space in
the range where it is placed. If several such blocks end up in the same
range, they will share the remaining space.
Cannot place a block with expanding size inside another block with
expanding size, inside a block with maximum size, or inside an overlay.
2019-02-22 09:25:08 +00:00
Deepika 5501947197 Update IAR project template as per IAR 8.32
Reference template file is used from IAR8.32 installation available at path
"Embedded Workbench 8.2\arm\config\template\ConvertToIAR\template_project.ewp"

Also added trustzone configs in iar_definitions.json
2019-02-22 09:25:08 +00:00
deepikabhavnani 0ff6f9971b Remove IAR supported from targets failing IAR 8.32 build
Few targets have libraries compatible to IAR 7.x, which fail with
IAR 8.x, IAR support for them is removed till updated library is
added.

CI failure seen if IAR is not added as supported target, trying with
release_version as empty string

List of targets affected:

1. UBLOX_EVK_ODIN_W2
2. MTB_UBLOX_ODIN_W2
3. MBED_CONNECT_ODIN
4. MTB_MXCHIP_EMW3166
5. MTB_ADV_WISE_1530
6. MTB_USI_WM_BN_BM_22
7. REALTEK_RTL8195AM
2019-02-22 09:25:08 +00:00
deepikabhavnani ea3fa02210 Splited RAM section not compatible with dynamic HEAP.
RAM define/section if splited, IAR exanpding size considers just one
section while heap creation which results in smaller chunk for heap.
This commit is to unify the RAM section.
2019-02-22 09:25:07 +00:00
deepikabhavnani 334b2d64b0 Update params in calls to LDREXW/STREXW to uint32_t 2019-02-22 09:25:07 +00:00