|
|
1 #ifndef _LOG_H_
7 W& A' T: N% D/ U) p 2 #define _LOG_H_$ {8 ~4 X! b4 t; E" u3 E
3
# [8 H0 K4 k- n5 c! b* P* Z 4 /* 0: printf; 1: UART1 *// L" u* R4 i) z# k0 P' K& T! x
5 #define OUTPUT_TO_UART1 1+ O+ A+ q3 J7 L7 `: U" Q% X# ?
6 ; ~4 V( l7 V$ j& x- O
7 /* Switch Log Output */
; ~1 y, [7 P0 V) | ] 8 #if OUTPUT_TO_UART1' H& F5 Z& V1 T) E2 ]
9 /* For UART1 Initial */6 N: z5 r# ]" V- e7 i1 T. a
10 #include <stdlib.h>
) n- S( W% A1 A! X% W 11 #include "hw_types.h"
! z4 Y. G5 `# K 12 #include "hw_syscfg0_C6748.h"
4 u0 v6 l! T8 q 13 #include "soc_C6748.h"* \0 Q) T$ I* `/ H1 k) \
14 #include "psc.h" 9 Q! P3 g+ f7 a' ?2 x* `& y
15 #include "gpio.h"
8 Q5 G5 ^: j3 C G! D6 d 16 #include "uart.h"
+ j D1 S2 i) i# T! Y$ @' q 17 #include "uartStdio.h"1 J( v. E5 @+ j" G5 e% W3 }
18 9 `7 t: S- l( B& W }/ T. x# {
19 #define OUTPUT UARTprintf1 ~: v3 z- x# R3 ~- T
20 #else
/ X; ?9 U$ m! ^* T. \6 o 21 #include <stdio.h>" W& T6 B' }2 q4 R* l, u% z
22 #include <stdbool.h>
$ C5 J; P, |0 f$ R8 J. b 23
* L$ G1 S" ]0 l8 b5 O 24 #define OUTPUT printf
1 a2 R; Q' Y$ f5 } 25 #endif- P* C7 t6 j! R
26
) b( H, k: }) p4 Z% e1 j 27 /* Log init */& V, u/ Z" T& F! C3 \3 R
28 #if OUTPUT_TO_UART17 Y. O. Y9 R+ S
29 #define LOG_INIT() do { \
8 `) C$ W( H. Y- l6 q& x& \8 s 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
9 [- Z3 S/ P! A 31 PSC_POWERDOMAIN_ALWAYS_ON, \ d7 m8 Q5 g6 T1 s' ^; U! u% i
32 PSC_MDCTL_NEXT_ENABLE); \! f$ ~, `# s$ D9 B
33 GPIOBank6Pin12PinMuxSetup(); \
6 y1 H; U C2 F9 f$ K8 G 34 GPIOBank6Pin13PinMuxSetup(); \
$ r& C2 Z, X: s$ {5 v8 v 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \( @( ^3 c) N% \( _) S
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
3 { w6 H# B! |6 a+ O" t: u: f/ v7 T 37 UARTStdioInit(); \
) a- Z4 D: O& Y3 z7 C 38 } while (0)& ^( k0 ?6 K6 {
39 #else
2 N2 g8 ^: f2 I: T z# ] 40 #define LOG_INIT() do { } while (0)3 a! ^, E0 ]. A, a
41 #endif
; w) _4 H( N) l( m( ~ 42 " I7 ]% ], a7 O1 d! [! }5 U
43 /* Log Output */
& [* |/ a* [- p2 }0 H" z. Y, r 44 #define LOG_INFO(format, ...) \# h; U) J3 K e7 z
45 do { \# ~; z/ G: p) \' W
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
& G. R) u" B0 a E2 a) D! X* n8 x! W$ R 47 } while (0)3 ^4 R' Y# d' o- O
48 4 r4 W1 D) i6 D' a/ v
49 #define LOG_ERROR(format, ...) \* n- L3 w2 R9 c" W7 t
50 do { \
. }: [. ^5 j- j- p 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
5 X! M7 O+ `; v% ?! M8 { 52 } while (0)
9 d5 H9 l Y8 w$ F5 Y5 M& c 53 % S1 Q9 a% w! t( l: B, C3 e
54 #define LOG_DEBUG(format, ...) \& J' d# g4 x; S8 E+ Z
55 do { \
* Q: W+ ?; q. E9 {) r! l( F 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
$ ]- e; b4 s4 M: |4 h& n 57 } while (0)" r7 t+ j/ ?& ]. s! U1 d2 t
58 ( u7 x; q; h' {3 v0 D5 F
59 #define LOG_WARN(format, ...) \* C3 P: `0 w0 G- u. M
60 do { \
" T, t2 R, v* a' L h2 E- x 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
% @2 v5 R1 n. T* O- f# o0 Y2 G 62 } while (0)
* J: b9 S/ N, D( E* T 63 + E* H& g# f$ q8 _3 P8 X- d
64 #define LOG_TRACE(format, ...) \, t) o( T& L0 C' O* |2 v4 _, X
65 do { \( l3 c" H& p/ Z9 c6 G5 j
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \5 d6 t9 f9 Z/ Q
67 } while (0)) O2 J" L/ Z* D8 w, e9 |) G
68
- ?% m+ a; X- o& _ 69 #define LOG_FATAL(format, ...) \2 g; V+ P; ^+ B- E( T) Z
70 do { \
w: B0 i% l4 x: j/ R 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# v7 G% e& J$ a' @% M. z# S 72 exit(1); \. `2 G, u% e2 c! r% `* X
73 } while (0)2 o! v$ c$ _. s, f7 H2 A
74 6 y; e; `8 E3 s( O6 Z/ I
75 /* Assert */
3 x( _) |( f8 L 76 #define ASSERT(EXP) \ i& n8 s: `+ U- y! D
77 do{ \
- J. B0 H( J9 M% R* i5 { 78 if (!(EXP)) { \
6 |8 M! U: C9 I: E; v1 z& G1 ^ 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
6 Y4 q/ x. E" ^7 m 80 exit(1); \
7 z8 f& _2 \; Q/ q: r0 {8 Z! c 81 } \
3 x5 W, Z3 d$ E4 Y8 X 82 } while(0)
" h% p- b. V# ]+ u; X 83 & g# [: D3 b8 U7 Q& j6 P
84 #endif
, o4 k Z2 R& l3 B |
|