threadX的USBX的初始化和解初始化的分析。
下面先进行初始化的流程分析:
int main(void)里的
MX_ThreadX_Init是threadX总初始化函数,里面只有一个函数
tx_kernel_enter();
定义为
_tx_initialize_kernel_enter这个函数就是第一个threadX函数,是在main()里调用的,没有return的。
这个函数的处理比较简单:
它调用几个ThreadX初始化函数(如果需要),
调用应用程序定义函数,然后调用 调度器。
在上面的函数里,调用
tx_application_define
这个函数定义初始系统,也就是创建各种线程;先创建线程池,然后我们创建的线程都写在最开始的App_ThreadX_Init里面,
tx_application_define的最后会使用tx_byte_pool_create创建usb线程的内存空间“ux_device_app_byte_pool”,再创建usb线程,也就是执行
MX_USBX_Device_Init
现在就正式开始进行usbx设备初始化。
进来的参数只有1个,是memory_ptr,这个就是创建的usb线程空间“ux_device_app_byte_pool”
1.为USB内存分配堆栈。将传进来的memory_ptr内存空间,分配一部分给pointer,作为usb的堆栈
TX_BYTE_POOL *byte_pool =