端口配置
static port_setting_struct const NVRAM_EF_PORT_SETTING_DEFAULT[]=
{
{
/* USB转虚拟串口 */
99,
4, /* uart_port_usb */
/* 串口输出 */
99, /* tst-ps uses uart_port_null(value is 99) */
0, /* uart_port1 (value is 0) */
/* Catcher打印trace */
4,
99,
115200, /* tst default baud rate base = 115200 = 0x0001C200 */
流程
初始化注册各端口的handler
将uart_port1与Uart_Drv_Handler绑定,将uart_port_usb端口与USB2UART_Drv_Handler绑定。
// hal/peripheral/src/drv_comm.c
void Drv_Init_Phase1(void)
{
DCL_HANDLE uart_handle;
uart_handle = DclSerialPort_Open(uart_port1, 0);
DclSerialPort_RegisterCallback(uart_handle, &Uart_Drv_Handler);
}
void Drv_Init_Phase2(void)
{
DCL_HANDLE uart_handle;
#ifdef __USB_COM_PORT_ENABLE
uart_handle = DclSerialPort_Open(uart_port_usb, 0);
DclSerialPort_RegisterCallback(uart_handle, &USB2UART_Drv_Handler);
}
Uart_Drv_Handler的实现
// hal/peripheral/src/uart_handler.c
Seriport_HANDLER_T Uart_Drv_Handler = {
DCL_UART_TYPE, UART_Handler};
DCL_STATUS UART_Handler(DCL_DEV dev,DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data)
{
kal_bool return_flag = KAL_FALSE;
kal_bool return_status = STATUS_OK;
switch (cmd)
{
case SIO_CMD_INIT:
{
UART_CTRL_INIT_T* prCtrlInit;
prCtrlInit = &(data->rUARTCtrlI