|
1 #ifndef _LOG_H_
( a2 F. S: G4 }! B' J 2 #define _LOG_H_
2 ^, I, G/ L0 \+ _ 3
6 K/ p/ W" A( B$ G! W% ~8 i/ e. ^ 4 /* 0: printf; 1: UART1 */
) j3 Y8 |$ I+ a9 r 5 #define OUTPUT_TO_UART1 1
& Z) b; a! ^# y& _0 k 6 7 x% p( w+ D+ F
7 /* Switch Log Output */+ T1 L# e6 ]$ p& U4 i" I
8 #if OUTPUT_TO_UART1
4 q7 e2 y( D" P' v8 y 9 /* For UART1 Initial */8 J. |/ \4 `7 }% S/ ?' T1 s8 o
10 #include <stdlib.h>
$ d: a2 Y5 p& d' u) f& [8 K 11 #include "hw_types.h" " I: ~0 I- M9 n. ~2 ?
12 #include "hw_syscfg0_C6748.h"
0 u/ [/ x* u/ x 13 #include "soc_C6748.h"* z9 g+ @ e/ `
14 #include "psc.h" . n" I% p: D; v; E
15 #include "gpio.h" 9 |, n# [4 w+ V. l) x
16 #include "uart.h"
3 y' l A& B0 f5 s; a7 d4 v 17 #include "uartStdio.h", p/ ?1 t( u8 O: u
18
3 P' Q) [- \4 C! E9 p; D 19 #define OUTPUT UARTprintf
/ d7 @1 l% {' I$ Z7 G/ u4 ^ 20 #else* f7 k% C) t! y. `, `/ s% i) j- S
21 #include <stdio.h>/ j6 S- A& e6 R3 Z
22 #include <stdbool.h>
1 J5 U* r6 A1 E* Z 23 + V) Y! _1 T0 z; f6 B& A
24 #define OUTPUT printf! ?5 q- Z% i0 I" x& }! n4 N- X# M& G
25 #endif
8 G, Y6 D& v/ l7 W2 Q6 D, b. r5 F 26 # t% O; n# ^" u, g# r" E* R+ _
27 /* Log init */( W7 U1 r$ i1 i; f0 m0 X
28 #if OUTPUT_TO_UART15 o" Z% e4 L# Q6 I
29 #define LOG_INIT() do { \5 Q( F2 D1 M4 h
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
! w9 [. s' e$ a4 z; R* K 31 PSC_POWERDOMAIN_ALWAYS_ON, \5 i6 h/ C4 D2 _& p) M0 l
32 PSC_MDCTL_NEXT_ENABLE); \
4 T3 M3 W' q9 H( n7 ?6 U$ h, @; C 33 GPIOBank6Pin12PinMuxSetup(); \, F( W$ _( J9 @1 A/ M- z/ i4 ?1 n
34 GPIOBank6Pin13PinMuxSetup(); \' F3 U9 R1 _6 y c- n% ?
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \9 K/ ^ u( C6 f
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
: E! @" E! r2 d- {6 g0 i 37 UARTStdioInit(); \
& D6 K7 @$ g! t9 a- U7 R 38 } while (0)% a# U: r& Z6 }" _4 d4 [: ]
39 #else( L8 t) Y) v" Z8 _7 {: A
40 #define LOG_INIT() do { } while (0)0 ^( Q7 B% K- I6 l( u! F: K2 T" Q6 O
41 #endif
$ z m$ N( w) c" C1 }0 h4 { 42
" X+ D# C7 A% E6 N0 J 43 /* Log Output */2 [7 A: j+ J; F+ F+ @9 J
44 #define LOG_INFO(format, ...) \
. T8 f) W6 A; Z: F U 45 do { \
; Q: J# P8 Y. f7 X9 O3 q% [ 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
$ z2 s! G3 m! b9 P 47 } while (0)6 e! u+ t3 \3 i
48
7 I, K( b# B: i2 D' | 49 #define LOG_ERROR(format, ...) \( A( e( k. h* m3 `* ~8 u4 g3 A/ H
50 do { \" E5 T/ x1 N( H* X" H: P1 w
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
0 f8 T6 O4 |' Q$ { 52 } while (0)
, R+ h; X8 f6 L$ J 53 5 N5 B/ b8 s- U* }8 p4 F, f8 G0 m
54 #define LOG_DEBUG(format, ...) \, u, ^, S1 L9 i' }2 J7 ~
55 do { \
* c8 q, H$ }. j5 v 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \8 H( ~4 ]: J1 n2 [ P5 \
57 } while (0)
/ `) W3 U X7 h( y9 N 58 " A* p/ K- b4 y* K; F) z% h
59 #define LOG_WARN(format, ...) \
2 @" l2 r" v8 b2 B* n+ L 60 do { \
$ z6 c4 |2 e. }* K3 d* T 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
c" M7 N6 x: f! {0 k+ _) s4 O 62 } while (0)
% U" M2 U# Z3 Y, X8 K' L" Q 63
2 y8 K$ R2 A0 V" ~ 64 #define LOG_TRACE(format, ...) \
5 e; f: a* B: d; |# Y! Z 65 do { \
5 k, a, ]; `! O6 b3 z5 T 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \- ^8 g9 `7 ?4 s/ w' v- A; m
67 } while (0)8 F& H4 P" L! Q6 v+ g/ M2 q* {
68
0 }& W5 @/ @% R 69 #define LOG_FATAL(format, ...) \, X# I( c: u- ]3 v+ O" w; ?
70 do { \/ D. G7 V: ]+ P: o8 B7 O0 W+ n
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \6 `$ E9 J5 S0 D: P) L6 R
72 exit(1); \
" U+ W6 y$ R* R4 `. T$ \$ q$ d" X 73 } while (0)1 q1 x5 E+ R" ]( I8 Y5 A# O
74
) z5 Z, S) ?1 j& e3 V0 N8 S0 {, Q, x2 ` 75 /* Assert */
4 m) U* r: A' X* ~9 l5 ^, @ 76 #define ASSERT(EXP) \
; k& L+ ~5 [1 z+ M9 r5 g 77 do{ \. `5 q P2 o# U( \% J
78 if (!(EXP)) { \
9 _: a7 `' G) t! C/ Q* [5 Y! n# p 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
2 _6 |7 H S z' C7 y0 N3 m4 W 80 exit(1); \$ \# X, r9 U4 b4 [. H' ~# P/ Y
81 } \' W3 j7 R2 w* \
82 } while(0)
' G& I- S8 O5 j3 r, B( M 83
+ E% v% q7 z3 b8 A9 s; o 84 #endif' S! B% j7 B/ y2 @3 N0 c
|
|