|
|
1 #ifndef _LOG_H_ u1 c/ A2 {6 `
2 #define _LOG_H_' ?6 @7 w0 u9 Y+ N! x- N
3
. K1 U* T& }% M5 {5 [% ^ 4 /* 0: printf; 1: UART1 */4 C% D. g5 a& _: p
5 #define OUTPUT_TO_UART1 1
7 T4 N5 G7 O( ^, F8 w$ ^/ P& G/ F0 F 6 ( B H$ j+ _9 c- b4 ^2 }# Y4 @
7 /* Switch Log Output */
& C1 C$ `% g' L% v6 u& v5 M 8 #if OUTPUT_TO_UART1
$ o* o/ C0 X$ I7 Y3 x; V* G: } 9 /* For UART1 Initial */& ~- s& @0 f5 C% x" E" G# Y$ f
10 #include <stdlib.h>
" ]$ L U/ V# }+ P 11 #include "hw_types.h"
! ^- a5 ?0 u7 ~9 @! `# r' u 12 #include "hw_syscfg0_C6748.h"( y' V+ Y/ _' N4 l0 U: G4 Z, C
13 #include "soc_C6748.h"
3 s4 z, S2 S# z: w4 y4 @4 L 14 #include "psc.h" % o' {; [* q; K( Z1 t1 q1 w
15 #include "gpio.h" 5 c N# `. w& |+ ?, [/ Q
16 #include "uart.h"
, I& D, h+ P8 ^4 j3 e r% Y6 i 17 #include "uartStdio.h"
0 D1 P3 Y5 X; l 18
, C* r( K/ P+ e7 O# t: M" a 19 #define OUTPUT UARTprintf, d- t- j6 \1 \: i4 a0 }
20 #else
3 |7 L1 i5 T; Z- u! ~+ p3 J \ 21 #include <stdio.h>' i$ Y9 X% g' N( R
22 #include <stdbool.h>
) i0 d5 S8 V4 }8 G, L) M 23 / u2 Z$ f6 @2 a6 u
24 #define OUTPUT printf
/ Q* V4 Z3 B/ R k 25 #endif
; g; v* t8 d9 q2 u" y 26 5 L2 t; k+ l d/ ^
27 /* Log init */* C$ M; B* p% P* y( }; M( m
28 #if OUTPUT_TO_UART1
! f; r% ], Z1 z( s4 R. U& r 29 #define LOG_INIT() do { \
: }) p. W2 H) X" j 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
, h+ C, E( y$ \. n# p0 ~2 y. x 31 PSC_POWERDOMAIN_ALWAYS_ON, \$ x; y9 `5 U' b& v3 p9 \$ {9 b
32 PSC_MDCTL_NEXT_ENABLE); \
- T( O; A: G2 N' O. n5 U 33 GPIOBank6Pin12PinMuxSetup(); \
: x( h) D/ [2 L' ] 34 GPIOBank6Pin13PinMuxSetup(); \! t4 e3 w/ ^) {, v: M. `5 p9 p
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \" i6 ^$ \. ?% U- h9 d' T; T
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
]4 l& B( S! c7 \$ u7 d 37 UARTStdioInit(); \
, i( ~' X6 i: e8 { 38 } while (0)
. C# F6 t/ i- s4 {$ Z! Q 39 #else
) m$ F6 q+ W8 f" j: q+ l% L 40 #define LOG_INIT() do { } while (0)1 w9 ~ c/ }4 X0 N6 [0 a
41 #endif
' o; [3 U, W1 k, q" x7 U; T" y9 g ?; ~ 42
& r8 l% J! E$ V, s 43 /* Log Output */
4 w" y# T' Q# B- l 44 #define LOG_INFO(format, ...) \
9 p( n+ X' @9 ~% g; W M& h 45 do { \' |& e5 P) k) m% D7 Y2 S2 f. v
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
4 S/ K v/ w- L) `" M 47 } while (0)
6 k( Z% ]9 X% }. g; Y: w 48 * h: M2 A- Y/ d( m. q$ R/ o' L5 m/ P% S
49 #define LOG_ERROR(format, ...) \# n( K I9 v1 F" \4 d9 g
50 do { \
t1 o) D* n9 L# ]" P, ]7 h' F3 { 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
+ f6 W. N, _& a# X! D" { 52 } while (0)
2 L; t: d) \, k( w: R0 B5 X 53
Z! d+ O3 X# L) { 54 #define LOG_DEBUG(format, ...) \( l5 U' [. \9 O G9 o% U
55 do { \5 i* w% H7 [1 o% I* A9 Z1 Q( k
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# u+ `' W2 u3 K3 u* h) i4 f 57 } while (0)1 q( J2 N h; O
58 8 d4 p3 @5 k. d& p
59 #define LOG_WARN(format, ...) \
2 k; K' _9 V. F# v 60 do { \
2 w! s1 P1 U( Z# n 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ p, G; v; M5 |2 J& M) \- u
62 } while (0)$ @3 O% O. ^( Y& N
63
2 t- [, _5 h0 K" [4 G 64 #define LOG_TRACE(format, ...) \
/ W) I! {' b# V8 N; R% X0 H* U 65 do { \
. I% R |8 l; ^6 Z+ O& V: k' q- R0 k 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
2 _$ v8 `) i# y( v4 Q# Z 67 } while (0)
" Y' G; O+ [2 ]$ u; \1 U 68 2 y8 G8 j! Q, {+ J+ Q3 U
69 #define LOG_FATAL(format, ...) \
. @& }$ T' ~( m0 D! a2 I) h 70 do { \% R6 M/ r1 Y/ q3 Q7 x- t3 |2 D
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \* D( U) e7 j% I
72 exit(1); \
) K3 l( X$ D8 v4 j7 o0 u 73 } while (0)
% {. w& t) p: J* {# W9 d 74 , D+ s) f. m1 i' y6 ?# t |+ H
75 /* Assert */
, B6 M. P$ E' v1 e- t) H$ a 76 #define ASSERT(EXP) \- R4 r J5 u3 z8 A* q% G' K8 N
77 do{ \
+ m1 u/ i6 |6 \* T$ z 78 if (!(EXP)) { \
% F8 A, i) _. l1 z$ ~9 C9 c: \ 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \" I" [) t& l' f4 |) y/ J6 q
80 exit(1); \
& k/ {; s5 Y8 Y8 a 81 } \
" n& ? \8 B/ p5 w4 N 82 } while(0)4 K- V! ?! q6 d3 e5 R
83
0 S8 |0 f+ ?) c+ k9 `, A( l. q 84 #endif
) c* \2 x( A/ f2 K X3 Q* m0 w5 S |
|