|
|
1 #ifndef _LOG_H_
; M) ?! C, f% S& I 2 #define _LOG_H_: ^" ~+ y1 x% E0 T/ x/ K
3 1 h" c" J: Z# A# k0 t' Z; Y0 q( N8 D# w( E
4 /* 0: printf; 1: UART1 */; q! k2 m) y& K! L: W) m4 K
5 #define OUTPUT_TO_UART1 16 Q' K2 M; B1 H0 g; |
6 7 o" F6 f: L4 P9 e
7 /* Switch Log Output */
" d' j1 V0 Q5 D* p7 j. N; a" z 8 #if OUTPUT_TO_UART1
3 B0 O3 `8 Y+ ^" X8 M( _ 9 /* For UART1 Initial */$ p3 a: m* R9 ]! h' W
10 #include <stdlib.h>
; ^& Q% ?' a8 j: J4 ^$ c' w 11 #include "hw_types.h" 6 V! h- e$ j# J+ h; e, s
12 #include "hw_syscfg0_C6748.h"
2 y3 \+ ^/ R$ D4 {9 i. s 13 #include "soc_C6748.h"9 ?7 R1 N: R* w, i- h* x
14 #include "psc.h"
4 r C! X' G+ f8 Y 15 #include "gpio.h"
( R" h f7 [- F n: d4 _7 J! m 16 #include "uart.h"
" b* q& B2 H9 M 17 #include "uartStdio.h"/ u7 f/ _0 G, w& F
18
/ ^3 N. C3 Z9 K# q( X# r 19 #define OUTPUT UARTprintf& o5 w* S6 g9 W! U
20 #else0 T( W0 W E' z
21 #include <stdio.h>
0 h8 O- `4 y) D% L% ?# ]) w 22 #include <stdbool.h>
" V! a" E: c1 r" S P 23
" O& `* N O2 O2 H3 u 24 #define OUTPUT printf$ }1 w8 t! \/ k7 B; L
25 #endif& {( E7 w! {% X A2 B
26 3 e9 z7 G% C' E# |+ ~- c' b
27 /* Log init */
" y, S$ Q% O; p 28 #if OUTPUT_TO_UART1
_; `2 f: M. T5 b 29 #define LOG_INIT() do { \; I2 f3 t) T$ x4 m& \' E/ P2 a6 L
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
/ V9 y5 ~: @1 x 31 PSC_POWERDOMAIN_ALWAYS_ON, \: @3 C6 h1 e. S3 Z, Z' Z
32 PSC_MDCTL_NEXT_ENABLE); \
! @! \3 ~+ E! h7 a 33 GPIOBank6Pin12PinMuxSetup(); \; O+ N+ k- y7 `- \6 T
34 GPIOBank6Pin13PinMuxSetup(); \
5 M$ y. ]; w" e" k 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
4 `( C0 e- o- P/ c8 M 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \ D0 i: ^- T6 P5 I* ~+ M* {
37 UARTStdioInit(); \
7 e( v3 q2 m5 X3 h 38 } while (0)
$ U/ x# {9 V9 \ 39 #else
, N* p3 m, F3 r. \ 40 #define LOG_INIT() do { } while (0)
& V: o% z. i( {& J7 Y1 a6 k 41 #endif
- b" p4 Z& P5 {" X# H4 b$ u 42
3 Q9 S- `; @6 k$ b; ?8 f 43 /* Log Output */
# ]( e/ O4 d# T 44 #define LOG_INFO(format, ...) \, K9 H+ i0 h- U7 ^
45 do { \
9 y$ f, M5 e6 U9 k8 ^% i 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \0 X1 o- u8 B! N
47 } while (0)
- W$ H/ |6 O2 @ 48 % z4 o: Y" {3 J' q& o# A
49 #define LOG_ERROR(format, ...) \/ B: u- C( S! T4 G" E- Z! |
50 do { \
2 O( N. d0 `3 \% G- u& C 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \9 A9 a. c5 Y) Z, q! v! N
52 } while (0)# M& J/ b* {! f9 ?* ^3 h# J
53 5 O. _& p* U k; U
54 #define LOG_DEBUG(format, ...) \( Z8 G' \9 B! \+ {8 D
55 do { \
1 e9 ~3 A' p% v; S5 ] 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \* n! {2 r8 g" \, w& L5 E2 o
57 } while (0)
/ d% ]9 ^3 ` k7 B, v0 @ 58
5 [0 }6 @6 _! ~- \ 59 #define LOG_WARN(format, ...) \
1 w/ o; k# N" \9 t( { 60 do { \" v8 A2 s8 u$ b9 j4 B* R6 g
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
O7 y' U; H! {, {: V/ d& ]1 b O 62 } while (0)
' [3 [* g0 x" g 63 * l9 J2 k8 u) j( A# n7 V
64 #define LOG_TRACE(format, ...) \
" C* f. V. Z, H t* x4 T 65 do { \* f1 N# `* d5 A! R
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
m1 w' l; M5 g$ x) c' b 67 } while (0)4 O/ K& ?3 p: w" u
68
( P6 n; `$ n" r1 w* Z 69 #define LOG_FATAL(format, ...) \4 f2 l# ]: ^* j
70 do { \2 I. F$ Q: W% R9 J' S
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
- n- f$ w7 I5 z* B$ F6 R2 j! ] 72 exit(1); \
0 q5 r- }# e0 ]6 p1 R c$ f/ u 73 } while (0)4 t2 \/ U' x" P1 J" a: P9 }4 O+ k
74
1 s% j4 u7 x$ f U l8 p 75 /* Assert */( Z' d' J+ q2 \$ {
76 #define ASSERT(EXP) \
( k, y% [$ R. F3 b0 c9 U3 b! @& } 77 do{ \
& p: d2 A7 w6 d& M0 o" H) o 78 if (!(EXP)) { \
) B2 [* e: s8 r1 \ 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \# J: A1 ~, m9 a8 I; s" j" B
80 exit(1); \
- Q" V. t& Z3 D* M1 s4 R 81 } \
$ Q7 P8 K. `' c9 r 82 } while(0)
/ p X' M/ a& b& q6 X7 z 83 8 @0 |- @, N- ~ q _# e
84 #endif
, _* G- s: H" l- W0 |1 Z |
|