|
|
1 #ifndef _LOG_H_' q& s$ ?8 {: R& v# X
2 #define _LOG_H_
% _5 w8 Q2 A: F0 _8 O Y 3
5 a y" U5 w. K. J0 q, R2 F: N4 G 4 /* 0: printf; 1: UART1 */
! Y+ h$ |( H7 ?. o( b9 E 5 #define OUTPUT_TO_UART1 15 g" x" w) A2 a( b1 ~ o$ e
6 ! U8 l$ f- g' s% W, H* A, e
7 /* Switch Log Output */
5 h5 N( G( Q! b# J% ~ 8 #if OUTPUT_TO_UART1
( a( K$ t; N* K( {8 I 9 /* For UART1 Initial */( C8 i6 S3 p' [, m1 a) ~4 ^
10 #include <stdlib.h>5 O, d% a- Z& l
11 #include "hw_types.h"
5 J4 X0 |+ P$ ^ ~. v% a/ N 12 #include "hw_syscfg0_C6748.h"
% h) t% W, B+ H% `& S) N 13 #include "soc_C6748.h"
! t% z# m) d8 ]2 h) o q 14 #include "psc.h"
9 ~* z4 Q0 D: F T3 f 15 #include "gpio.h"
+ | Z, I1 {, Z0 c- A" K 16 #include "uart.h"- v" U- A# H, N6 |6 }1 f
17 #include "uartStdio.h". H) o5 g9 D' k
18
; ?$ I' z: Q* | 19 #define OUTPUT UARTprintf
9 E+ |9 K7 A: N& f( e, {, L 20 #else
- T9 p% j: I7 U( P" Z W n. B2 M- h/ T 21 #include <stdio.h>
: I! f. N E/ e/ Q( H: W 22 #include <stdbool.h>1 }! b8 f' e; a4 Q4 D6 f- e S9 T
23
4 i4 P" v, Y4 _+ y6 x 24 #define OUTPUT printf3 v. i8 P. G: ]6 q+ B
25 #endif6 `5 O3 P) i S# O, {/ k# Z) A! h
26
7 k. `/ G) U+ R q8 a+ z( K 27 /* Log init */
* ]+ z; i8 O$ Q" h7 D6 J1 D ? 28 #if OUTPUT_TO_UART1# b5 M/ t w/ g6 j$ ]( j7 K/ x
29 #define LOG_INIT() do { \
( v v5 p# I j- G 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \7 G9 u' P0 j! @- Y* u
31 PSC_POWERDOMAIN_ALWAYS_ON, \
" A1 O- c8 ]1 b# B/ W5 r 32 PSC_MDCTL_NEXT_ENABLE); \2 b' y( F6 r, j6 H: M* K: f
33 GPIOBank6Pin12PinMuxSetup(); \6 h. c! \1 o) j* K3 A( K$ Q
34 GPIOBank6Pin13PinMuxSetup(); \
7 n$ a* k7 T \" H 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
) P9 ?; o5 s9 i; l4 ~- B/ {3 R$ M 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \1 P8 _6 B. N- v; R
37 UARTStdioInit(); \
) K5 E: ^- k0 Z 38 } while (0)4 n3 R/ i2 j3 a3 H; m
39 #else" z- D0 Z- o* N; v9 R- q
40 #define LOG_INIT() do { } while (0)0 w9 }. v5 E6 j" f
41 #endif
! R7 B: K4 ^8 V) u# L8 V7 O2 t4 Y 42 8 N' _3 M& l0 S; q" |
43 /* Log Output */
- \1 E6 R$ c; c; ]" t' u' d3 o0 V 44 #define LOG_INFO(format, ...) \
5 i& ?0 B8 S4 |* C( Z5 o3 s( ^ 45 do { \4 M& c) I' L: p2 f+ p2 L
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
' B/ M" r2 U! T7 M) Y" X 47 } while (0)
" e1 {/ Y; L+ P. C 48 . U3 M I1 F) o8 J
49 #define LOG_ERROR(format, ...) \
8 v) A$ g, {6 I, p- \. s+ u 50 do { \5 C7 y; g, N4 p
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
9 ?6 i* v6 y" ?5 k/ l: k 52 } while (0) Q: `) T5 P4 B2 N0 @% T! e
53
- U3 n: q: F' Z/ c$ z) N. [3 ?# c) w 54 #define LOG_DEBUG(format, ...) \
7 g" ], P/ b& I2 i) e 55 do { \$ [: o8 `; X v
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \0 v/ @9 M' v) t% g4 z4 Q/ M9 y
57 } while (0)
; ^$ i0 T/ n9 J- {5 U3 Z! M& m 58
& E# U1 s* ]" ? w5 Y. P1 x( | 59 #define LOG_WARN(format, ...) \
* p6 D+ ^$ r x$ R 60 do { \; k% } J* E' H, _# b" r
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
3 m$ b3 d2 G8 L0 |5 S 62 } while (0)7 x: V" M B8 j- p
63 5 s2 T% g# P; Z/ O; d6 s: w0 \
64 #define LOG_TRACE(format, ...) \ r- R! u. |% W/ a# O
65 do { \
# i! u* a" L# t% n: U$ Q+ i; C' v 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \7 {- R6 ]) ]9 {" a4 ~6 |7 R$ o
67 } while (0)+ L2 r% b5 n4 m! z8 ]
68
: ?+ r! T% G0 } 69 #define LOG_FATAL(format, ...) \% o& |6 M$ r" c
70 do { \: ]9 P0 S6 J/ g" p
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# U* w F6 c4 s: m+ C! l5 A 72 exit(1); \
( I# n' {" W/ m4 u# I1 z+ y 73 } while (0)0 I$ H! U$ v5 p5 u% d! n) M8 M
74 : \5 d6 Q. a' B. W. J/ e9 I- J
75 /* Assert */! V9 F% L- Z* g2 n; c
76 #define ASSERT(EXP) \
6 b4 t& R/ S+ R8 ^* e$ e0 _: N- w 77 do{ \
9 n& R/ A f @ J& H: T: ` 78 if (!(EXP)) { \
! ^4 \+ ~( n% D* v% K! t 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
' S1 W! p3 Z+ e0 c 80 exit(1); \# ]& l( g6 _( A. ?3 |* N8 G$ S
81 } \5 D% B1 E4 y; d k
82 } while(0)( Z) X; Y/ D5 v9 a( o
83
! A5 e& _8 F$ @; k- `" l# | 84 #endif
+ @' n- t0 z% M8 ~! X. l |
|