mirror of
https://github.com/azure-rtos/usbx.git
synced 2025-01-28 07:03:07 +08:00
Update on 18 Jan 2023. Expand to see details.
4faab07a Remove internal deprecated files. d82f44a2 Upgrade to the latest Container Images. 04527692 Checked device removal while reading/writing storage. d7560786 Add a notice for not released file.
This commit is contained in:
parent
2c66db9568
commit
7bafce8df9
47
README.md
47
README.md
@ -33,6 +33,53 @@ See [Overview of Azure RTOS USBX](https://learn.microsoft.com/azure/rtos/usbx/ov
|
|||||||
|
|
||||||
The master branch has the most recent code with all new features and bug fixes. It does not represent the latest General Availability (GA) release of the library. Each official release (preview or GA) will be tagged to mark the commit and push it into the Github releases tab, e.g. `v6.2-rel`.
|
The master branch has the most recent code with all new features and bug fixes. It does not represent the latest General Availability (GA) release of the library. Each official release (preview or GA) will be tagged to mark the commit and push it into the Github releases tab, e.g. `v6.2-rel`.
|
||||||
|
|
||||||
|
> When you see xx-xx-xxxx, 6.x or x.x in function header, this means the file is not officially released yet. They will be updated in the next release. See example below.
|
||||||
|
```
|
||||||
|
/**************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* FUNCTION RELEASE */
|
||||||
|
/* */
|
||||||
|
/* _tx_initialize_low_level Cortex-M23/GNU */
|
||||||
|
/* 6.x */
|
||||||
|
/* AUTHOR */
|
||||||
|
/* */
|
||||||
|
/* Scott Larson, Microsoft Corporation */
|
||||||
|
/* */
|
||||||
|
/* DESCRIPTION */
|
||||||
|
/* */
|
||||||
|
/* This function is responsible for any low-level processor */
|
||||||
|
/* initialization, including setting up interrupt vectors, setting */
|
||||||
|
/* up a periodic timer interrupt source, saving the system stack */
|
||||||
|
/* pointer for use in ISR processing later, and finding the first */
|
||||||
|
/* available RAM memory address for tx_application_define. */
|
||||||
|
/* */
|
||||||
|
/* INPUT */
|
||||||
|
/* */
|
||||||
|
/* None */
|
||||||
|
/* */
|
||||||
|
/* OUTPUT */
|
||||||
|
/* */
|
||||||
|
/* None */
|
||||||
|
/* */
|
||||||
|
/* CALLS */
|
||||||
|
/* */
|
||||||
|
/* None */
|
||||||
|
/* */
|
||||||
|
/* CALLED BY */
|
||||||
|
/* */
|
||||||
|
/* _tx_initialize_kernel_enter ThreadX entry function */
|
||||||
|
/* */
|
||||||
|
/* RELEASE HISTORY */
|
||||||
|
/* */
|
||||||
|
/* DATE NAME DESCRIPTION */
|
||||||
|
/* */
|
||||||
|
/* 09-30-2020 Scott Larson Initial Version 6.1 */
|
||||||
|
/* xx-xx-xxxx Scott Larson Include tx_user.h, */
|
||||||
|
/* resulting in version 6.x */
|
||||||
|
/* */
|
||||||
|
/**************************************************************************/
|
||||||
|
```
|
||||||
|
|
||||||
## Component dependencies
|
## Component dependencies
|
||||||
|
|
||||||
The main components of Azure RTOS are each provided in their own repository, but there are dependencies between them, as shown in the following graph. This is important to understand when setting up your builds.
|
The main components of Azure RTOS are each provided in their own repository, but there are dependencies between them, as shown in the following graph. This is important to understand when setting up your builds.
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
/* FUNCTION RELEASE */
|
/* FUNCTION RELEASE */
|
||||||
/* */
|
/* */
|
||||||
/* _ux_host_class_storage_check_run PORTABLE C */
|
/* _ux_host_class_storage_check_run PORTABLE C */
|
||||||
/* 6.1.10 */
|
/* 6.x */
|
||||||
/* AUTHOR */
|
/* AUTHOR */
|
||||||
/* */
|
/* */
|
||||||
/* Chaoqiong Xiao, Microsoft Corporation */
|
/* Chaoqiong Xiao, Microsoft Corporation */
|
||||||
@ -79,10 +79,14 @@
|
|||||||
/* DATE NAME DESCRIPTION */
|
/* DATE NAME DESCRIPTION */
|
||||||
/* */
|
/* */
|
||||||
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
|
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
|
||||||
|
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
|
||||||
|
/* checked device state, */
|
||||||
|
/* resulting in version 6.x */
|
||||||
/* */
|
/* */
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
UINT _ux_host_class_storage_check_run(UX_HOST_CLASS_STORAGE *storage)
|
UINT _ux_host_class_storage_check_run(UX_HOST_CLASS_STORAGE *storage)
|
||||||
{
|
{
|
||||||
|
UX_DEVICE *device;
|
||||||
|
|
||||||
#if defined UX_HOST_CLASS_STORAGE_STATE_CHECK_ENABLE
|
#if defined UX_HOST_CLASS_STORAGE_STATE_CHECK_ENABLE
|
||||||
UX_INTERRUPT_SAVE_AREA
|
UX_INTERRUPT_SAVE_AREA
|
||||||
@ -107,6 +111,9 @@ UX_INTERRUPT_SAVE_AREA
|
|||||||
UX_RESTORE
|
UX_RESTORE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Get device. */
|
||||||
|
device = storage -> ux_host_class_storage_device;
|
||||||
|
|
||||||
switch(storage -> ux_host_class_storage_op_state)
|
switch(storage -> ux_host_class_storage_op_state)
|
||||||
{
|
{
|
||||||
case UX_STATE_IDLE:
|
case UX_STATE_IDLE:
|
||||||
@ -130,6 +137,14 @@ UX_INTERRUPT_SAVE_AREA
|
|||||||
/* Run tasks, including transport task. */
|
/* Run tasks, including transport task. */
|
||||||
_ux_system_host_tasks_run();
|
_ux_system_host_tasks_run();
|
||||||
|
|
||||||
|
/* Check if device is still available. */
|
||||||
|
if (device -> ux_device_state != UX_DEVICE_CONFIGURED)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* Instance should have been destroyed, just return. */
|
||||||
|
return(UX_STATE_EXIT);
|
||||||
|
}
|
||||||
|
|
||||||
/* In case state is not idle, check if it changes back. */
|
/* In case state is not idle, check if it changes back. */
|
||||||
if (storage -> ux_host_class_storage_state_state == UX_STATE_IDLE)
|
if (storage -> ux_host_class_storage_state_state == UX_STATE_IDLE)
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
/* FUNCTION RELEASE */
|
/* FUNCTION RELEASE */
|
||||||
/* */
|
/* */
|
||||||
/* _ux_host_class_storage_lock PORTABLE C */
|
/* _ux_host_class_storage_lock PORTABLE C */
|
||||||
/* 6.1.10 */
|
/* 6.x */
|
||||||
/* AUTHOR */
|
/* AUTHOR */
|
||||||
/* */
|
/* */
|
||||||
/* Chaoqiong Xiao, Microsoft Corporation */
|
/* Chaoqiong Xiao, Microsoft Corporation */
|
||||||
@ -71,12 +71,19 @@
|
|||||||
/* DATE NAME DESCRIPTION */
|
/* DATE NAME DESCRIPTION */
|
||||||
/* */
|
/* */
|
||||||
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
|
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
|
||||||
|
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
|
||||||
|
/* checked device state, */
|
||||||
|
/* resulting in version 6.x */
|
||||||
/* */
|
/* */
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
UINT _ux_host_class_storage_lock(UX_HOST_CLASS_STORAGE *storage, ULONG wait)
|
UINT _ux_host_class_storage_lock(UX_HOST_CLASS_STORAGE *storage, ULONG wait)
|
||||||
{
|
{
|
||||||
UX_INTERRUPT_SAVE_AREA
|
UX_INTERRUPT_SAVE_AREA
|
||||||
ULONG t0, t1;
|
ULONG t0, t1;
|
||||||
|
UX_DEVICE *device;
|
||||||
|
|
||||||
|
/* Get device. */
|
||||||
|
device = storage -> ux_host_class_storage_device;
|
||||||
|
|
||||||
t0 = _ux_utility_time_get();
|
t0 = _ux_utility_time_get();
|
||||||
while(1)
|
while(1)
|
||||||
@ -129,6 +136,14 @@ ULONG t0, t1;
|
|||||||
|
|
||||||
/* Run stack tasks. */
|
/* Run stack tasks. */
|
||||||
_ux_system_host_tasks_run();
|
_ux_system_host_tasks_run();
|
||||||
|
|
||||||
|
/* Check if device is still available. */
|
||||||
|
if (device -> ux_device_state != UX_DEVICE_CONFIGURED)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* Instance should have been destroyed, just return. */
|
||||||
|
return(UX_STATE_EXIT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Lock storage. */
|
/* Lock storage. */
|
||||||
|
@ -82,7 +82,7 @@ ULONG command_length;
|
|||||||
/* FUNCTION RELEASE */
|
/* FUNCTION RELEASE */
|
||||||
/* */
|
/* */
|
||||||
/* _ux_host_class_storage_media_read PORTABLE C */
|
/* _ux_host_class_storage_media_read PORTABLE C */
|
||||||
/* 6.1.10 */
|
/* 6.x */
|
||||||
/* AUTHOR */
|
/* AUTHOR */
|
||||||
/* */
|
/* */
|
||||||
/* Chaoqiong Xiao, Microsoft Corporation */
|
/* Chaoqiong Xiao, Microsoft Corporation */
|
||||||
@ -123,6 +123,9 @@ ULONG command_length;
|
|||||||
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
|
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
|
||||||
/* added standalone support, */
|
/* added standalone support, */
|
||||||
/* resulting in version 6.1.10 */
|
/* resulting in version 6.1.10 */
|
||||||
|
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
|
||||||
|
/* checked device removal, */
|
||||||
|
/* resulting in version 6.x */
|
||||||
/* */
|
/* */
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
UINT _ux_host_class_storage_media_read(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
|
UINT _ux_host_class_storage_media_read(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
|
||||||
@ -134,6 +137,8 @@ UINT status;
|
|||||||
status = _ux_host_class_storage_read_write_run(storage, UX_TRUE,
|
status = _ux_host_class_storage_read_write_run(storage, UX_TRUE,
|
||||||
sector_start, sector_count, data_pointer);
|
sector_start, sector_count, data_pointer);
|
||||||
} while(status == UX_STATE_WAIT);
|
} while(status == UX_STATE_WAIT);
|
||||||
|
if (status < UX_STATE_IDLE)
|
||||||
|
return(UX_HOST_CLASS_INSTANCE_UNKNOWN);
|
||||||
return(storage -> ux_host_class_storage_status);
|
return(storage -> ux_host_class_storage_status);
|
||||||
#else
|
#else
|
||||||
UINT status;
|
UINT status;
|
||||||
|
@ -81,7 +81,7 @@ ULONG command_length;
|
|||||||
/* FUNCTION RELEASE */
|
/* FUNCTION RELEASE */
|
||||||
/* */
|
/* */
|
||||||
/* _ux_host_class_storage_media_write PORTABLE C */
|
/* _ux_host_class_storage_media_write PORTABLE C */
|
||||||
/* 6.1.10 */
|
/* 6.x */
|
||||||
/* AUTHOR */
|
/* AUTHOR */
|
||||||
/* */
|
/* */
|
||||||
/* Chaoqiong Xiao, Microsoft Corporation */
|
/* Chaoqiong Xiao, Microsoft Corporation */
|
||||||
@ -122,6 +122,9 @@ ULONG command_length;
|
|||||||
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
|
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
|
||||||
/* added standalone support, */
|
/* added standalone support, */
|
||||||
/* resulting in version 6.1.10 */
|
/* resulting in version 6.1.10 */
|
||||||
|
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
|
||||||
|
/* checked device removal, */
|
||||||
|
/* resulting in version 6.x */
|
||||||
/* */
|
/* */
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
UINT _ux_host_class_storage_media_write(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
|
UINT _ux_host_class_storage_media_write(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
|
||||||
@ -133,6 +136,8 @@ UINT status;
|
|||||||
status = _ux_host_class_storage_read_write_run(storage, UX_FALSE,
|
status = _ux_host_class_storage_read_write_run(storage, UX_FALSE,
|
||||||
sector_start, sector_count, data_pointer);
|
sector_start, sector_count, data_pointer);
|
||||||
} while(status == UX_STATE_WAIT);
|
} while(status == UX_STATE_WAIT);
|
||||||
|
if (status < UX_STATE_IDLE)
|
||||||
|
return(UX_HOST_CLASS_INSTANCE_UNKNOWN);
|
||||||
return(storage -> ux_host_class_storage_status);
|
return(storage -> ux_host_class_storage_status);
|
||||||
#else
|
#else
|
||||||
UINT status;
|
UINT status;
|
||||||
|
@ -43,7 +43,7 @@ extern VOID _ux_host_class_storage_write_initialize(UX_HOST_CLASS_STORAGE *stora
|
|||||||
/* FUNCTION RELEASE */
|
/* FUNCTION RELEASE */
|
||||||
/* */
|
/* */
|
||||||
/* _ux_host_class_storage_read_write_run PORTABLE C */
|
/* _ux_host_class_storage_read_write_run PORTABLE C */
|
||||||
/* 6.1.10 */
|
/* 6.x */
|
||||||
/* AUTHOR */
|
/* AUTHOR */
|
||||||
/* */
|
/* */
|
||||||
/* Chaoqiong Xiao, Microsoft Corporation */
|
/* Chaoqiong Xiao, Microsoft Corporation */
|
||||||
@ -93,6 +93,9 @@ extern VOID _ux_host_class_storage_write_initialize(UX_HOST_CLASS_STORAGE *stora
|
|||||||
/* DATE NAME DESCRIPTION */
|
/* DATE NAME DESCRIPTION */
|
||||||
/* */
|
/* */
|
||||||
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
|
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
|
||||||
|
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
|
||||||
|
/* checked device state, */
|
||||||
|
/* resulting in version 6.x */
|
||||||
/* */
|
/* */
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
UINT _ux_host_class_storage_read_write_run(UX_HOST_CLASS_STORAGE *storage,
|
UINT _ux_host_class_storage_read_write_run(UX_HOST_CLASS_STORAGE *storage,
|
||||||
@ -100,6 +103,8 @@ UINT _ux_host_class_storage_read_write_run(UX_HOST_CLASS_STORAGE *storage,
|
|||||||
ULONG sector_start, ULONG sector_count, UCHAR *data_pointer)
|
ULONG sector_start, ULONG sector_count, UCHAR *data_pointer)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
UX_DEVICE *device;
|
||||||
|
|
||||||
#if defined UX_HOST_CLASS_STORAGE_STATE_CHECK_ENABLE
|
#if defined UX_HOST_CLASS_STORAGE_STATE_CHECK_ENABLE
|
||||||
UX_INTERRUPT_SAVE_AREA
|
UX_INTERRUPT_SAVE_AREA
|
||||||
|
|
||||||
@ -125,6 +130,9 @@ UX_INTERRUPT_SAVE_AREA
|
|||||||
/* If trace is enabled, insert this event into the trace buffer. */
|
/* If trace is enabled, insert this event into the trace buffer. */
|
||||||
UX_TRACE_IN_LINE_INSERT(UX_TRACE_HOST_CLASS_STORAGE_MEDIA_READ, storage, sector_start, sector_count, data_pointer, UX_TRACE_HOST_CLASS_EVENTS, 0, 0)
|
UX_TRACE_IN_LINE_INSERT(UX_TRACE_HOST_CLASS_STORAGE_MEDIA_READ, storage, sector_start, sector_count, data_pointer, UX_TRACE_HOST_CLASS_EVENTS, 0, 0)
|
||||||
|
|
||||||
|
/* Get device. */
|
||||||
|
device = storage -> ux_host_class_storage_device;
|
||||||
|
|
||||||
switch(storage -> ux_host_class_storage_op_state)
|
switch(storage -> ux_host_class_storage_op_state)
|
||||||
{
|
{
|
||||||
case UX_STATE_IDLE: /* Fall through. */
|
case UX_STATE_IDLE: /* Fall through. */
|
||||||
@ -150,6 +158,14 @@ UX_INTERRUPT_SAVE_AREA
|
|||||||
/* Run tasks, including transport task. */
|
/* Run tasks, including transport task. */
|
||||||
_ux_system_host_tasks_run();
|
_ux_system_host_tasks_run();
|
||||||
|
|
||||||
|
/* Check if device is still available. */
|
||||||
|
if (device -> ux_device_state != UX_DEVICE_CONFIGURED)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* Instance should have been destroyed, just return. */
|
||||||
|
return(UX_STATE_EXIT);
|
||||||
|
}
|
||||||
|
|
||||||
/* Fatal error. */
|
/* Fatal error. */
|
||||||
if (storage -> ux_host_class_storage_op_state < UX_STATE_IDLE)
|
if (storage -> ux_host_class_storage_op_state < UX_STATE_IDLE)
|
||||||
return(UX_STATE_EXIT);
|
return(UX_STATE_EXIT);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user