|
|
1 #ifndef _LOG_H_
0 L) v g3 h4 K- L! J) B; N 2 #define _LOG_H_( Y4 _# ~; Z) x4 A4 t" P9 R
3
2 n" z; R6 S/ R 4 /* 0: printf; 1: UART1 */
$ m1 Z! x) [3 q' U; T/ s% f 5 #define OUTPUT_TO_UART1 1
. M# s) |( s! V+ n5 H" \ 6
7 l6 H2 V2 ~ R/ O 7 /* Switch Log Output */" ?- i/ @: U3 q+ g9 y# _) W1 y5 b
8 #if OUTPUT_TO_UART1
1 b7 O2 I( r* T 9 /* For UART1 Initial */$ d1 c; K* u& y& y8 _
10 #include <stdlib.h>! D; x/ ]: B, U
11 #include "hw_types.h"
3 D2 \- @( i1 X1 T8 T. g 12 #include "hw_syscfg0_C6748.h"
8 s9 P$ w! P. d% M 13 #include "soc_C6748.h"# G8 W) w2 Y9 m5 _
14 #include "psc.h" 5 X, U# }& {$ G
15 #include "gpio.h"
6 U" \; K$ Y+ V 16 #include "uart.h"" [3 v9 Q; b2 X/ K. t+ E) K
17 #include "uartStdio.h"
" W1 X8 `( x& S6 O 18
Z1 P/ J- Y; F- O& S# P8 j 19 #define OUTPUT UARTprintf
/ w- T! ^4 H+ V1 W 20 #else
% [7 p5 E: q( `, b5 U+ r1 J 21 #include <stdio.h>
% D0 ]: t- g6 x" X8 F# { 22 #include <stdbool.h>6 p Q0 m, j0 v
23
2 S8 P X3 z! w4 R) i; `! _ 24 #define OUTPUT printf: \* Z b% W9 W" P6 B7 {2 o" ^
25 #endif
+ ?3 V$ A) M8 c+ }- s 26
( a$ P" v5 q; z 27 /* Log init */
. |7 {, \/ S# ]2 O4 |& o/ P* `- e 28 #if OUTPUT_TO_UART1
$ m# U) |8 m+ f7 I4 A+ ?4 d2 d$ g 29 #define LOG_INIT() do { \) V9 A( T Q4 M% E) H. D3 r
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \8 m L: C3 u$ L! p) Y
31 PSC_POWERDOMAIN_ALWAYS_ON, \
D6 M0 Y, [* j/ K y1 R, d 32 PSC_MDCTL_NEXT_ENABLE); \8 k) \) u3 J" Z! |
33 GPIOBank6Pin12PinMuxSetup(); \" H9 _2 I+ W: E& t3 z1 b& X {
34 GPIOBank6Pin13PinMuxSetup(); \
6 |- ~) N$ J$ h" {$ V; h 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \$ q; H, Z' m5 @ ]! u) m2 \' Q! o
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \, I* M6 O2 }/ B8 \! k
37 UARTStdioInit(); \% T* g N( c: }
38 } while (0)! t* ]4 I5 ~6 j ^
39 #else
% D: M8 a% V' J( T; R' k 40 #define LOG_INIT() do { } while (0)
+ Z, {3 f N5 [$ t$ t 41 #endif! R! }# f, W6 Z! R% m$ E# i- D
42
$ t- g/ F8 |3 n# I9 c! u 43 /* Log Output */
1 d7 B4 ^- [# ?( `! G 44 #define LOG_INFO(format, ...) \% j7 A3 u R9 `2 X7 j
45 do { \ C5 c/ ^! T2 q# S4 P/ A
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
" f7 Y" a& g2 \3 P. ^ 47 } while (0)
( e7 y' q' X2 {% w 48
& e4 j% |3 C" \4 O2 R+ u 49 #define LOG_ERROR(format, ...) \4 z; v7 I/ m! }
50 do { \
1 m1 M- v9 R: Y6 R3 r) S 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
0 R! A9 F' M6 {) ` 52 } while (0)2 d5 \9 N- C4 R+ c
53
: r* h7 u9 B2 \, \) H: F 54 #define LOG_DEBUG(format, ...) \% O- E6 k3 T: ?! o$ _& D1 H
55 do { \/ V! D' i i+ e7 ]9 F7 s
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# X e. m! L! V8 a 57 } while (0)
5 b) Q7 e" S7 r9 k" s8 a 58
' h( j+ Q5 i- [6 \- r& ` 59 #define LOG_WARN(format, ...) \& @; B1 A7 L* q' a% |7 L* S, V
60 do { \
; C- e) q h; u: ] 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
7 H( r' e' f* e* p0 `5 { J9 S 62 } while (0): U+ D4 z/ R3 U3 h
63
& [- K. d' v( L0 V 64 #define LOG_TRACE(format, ...) \, x% D J& z* m7 A- X' E7 K
65 do { \' t! X! R1 m1 U4 g; ]' B0 Y3 u
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
* q+ G6 g4 B8 Z* k' v 67 } while (0)/ Z' ^7 }$ @" ~! J& m
68 ' d! d6 l1 a0 Y) Y T
69 #define LOG_FATAL(format, ...) \
3 q+ ^+ B8 i: C0 S 70 do { \
# m1 z: v! d; v! g: D 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \& m/ q4 X7 p* D! k3 f% i. Y2 S2 j
72 exit(1); \% I5 b8 L8 T- _: q- K* F
73 } while (0)6 V( o( F6 J$ ^* ]( w: C$ r* v
74 ! O( C/ I3 @1 J+ r, Q- ^. c
75 /* Assert */( Y7 u' W0 \" @% v
76 #define ASSERT(EXP) \
1 c6 r3 y& C4 F: ?, k 77 do{ \
: H6 _# a# E4 M5 y# E, m: c 78 if (!(EXP)) { \
: w) N7 T* [3 H: _0 O2 a2 W 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
@ A8 a" u2 n8 j. n+ D 80 exit(1); \
8 n: J! k1 v \5 c4 Q* s 81 } \
3 h' Z/ t( y( P 82 } while(0)
/ N( n4 `* V6 E6 Y- z D 83 * Z6 z ^& K0 C" }+ @& j
84 #endif3 ? l7 q+ q8 v
|
|