- Timestamp:
- Jul 3, 2020, 7:19:17 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/tUartPL011.c
r321 r429 1 1 /* 2 * TOPPERS/ASP Kernel 3 * Toyohashi Open Platform for Embedded Real-Time Systems/ 4 * Advanced Standard Profile Kernel 5 * 6 * Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory 2 * TOPPERS Software 3 * Toyohashi Open Platform for Embedded Real-Time Systems 4 * 5 * Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory 7 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 7 * … … 95 94 CELLCB *p_cellcb = GET_CELLCB(idx); 96 95 97 /* 98 * UARTをディスエーブル 99 */ 100 sil_wrw_mem(UART_CR(ATTR_baseAddress), 0U); 101 102 /* 103 * エラーフラグをクリア 104 */ 105 sil_wrw_mem(UART_ECR(ATTR_baseAddress), 0U); 106 107 /* 108 * FIFOを空にする 109 */ 110 while (uart_pl011_getready(p_cellcb)) { 111 (void) uart_pl011_getchar(p_cellcb); 112 } 113 114 /* 115 * ボーレートと通信規格を設定 116 */ 117 sil_wrw_mem(UART_IBRD(ATTR_baseAddress), ATTR_ibrd); 118 sil_wrw_mem(UART_FBRD(ATTR_baseAddress), ATTR_fbrd); 119 sil_wrw_mem(UART_LCR_H(ATTR_baseAddress), ATTR_lcr_h); 120 121 /* 122 * UARTをイネーブル 123 */ 124 sil_wrw_mem(UART_CR(ATTR_baseAddress), 96 if (!VAR_opened) { 97 /* 98 * 既にオープンしている場合は、二重にオープンしない. 99 */ 100 101 /* 102 * UARTをディスエーブル 103 */ 104 sil_wrw_mem(UART_CR(ATTR_baseAddress), 0U); 105 106 /* 107 * エラーフラグをクリア 108 */ 109 sil_wrw_mem(UART_ECR(ATTR_baseAddress), 0U); 110 111 /* 112 * FIFOを空にする 113 */ 114 while (uart_pl011_getready(p_cellcb)) { 115 (void) uart_pl011_getchar(p_cellcb); 116 } 117 118 /* 119 * ボーレートと通信規格を設定 120 */ 121 sil_wrw_mem(UART_IBRD(ATTR_baseAddress), ATTR_ibrd); 122 sil_wrw_mem(UART_FBRD(ATTR_baseAddress), ATTR_fbrd); 123 sil_wrw_mem(UART_LCR_H(ATTR_baseAddress), ATTR_lcr_h); 124 125 /* 126 * UARTをイネーブル 127 */ 128 sil_wrw_mem(UART_CR(ATTR_baseAddress), 125 129 UART_CR_UARTEN|UART_CR_TXE|UART_CR_RXE); 130 131 VAR_opened = true; 132 } 126 133 } 127 134 … … 134 141 CELLCB *p_cellcb = GET_CELLCB(idx); 135 142 136 /* 137 * UARTをディスエーブル 138 */ 139 sil_wrw_mem(UART_CR(ATTR_baseAddress), 0U); 143 if (VAR_opened) { 144 /* 145 * UARTをディスエーブル 146 */ 147 sil_wrw_mem(UART_CR(ATTR_baseAddress), 0U); 148 149 VAR_opened = false; 150 } 140 151 } 141 152 … … 232 243 } 233 244 } 245 246 /* 247 * SIOドライバの終了処理 248 */ 249 void 250 eTerminate_main(CELLIDX idx) 251 { 252 eSIOPort_close(idx); 253 }
Note:
See TracChangeset
for help on using the changeset viewer.