|
1 #ifndef _LOG_H_( q8 ]: @2 D* `, G6 E6 h& Q! |% L
2 #define _LOG_H_5 M& s" U3 y' f* H4 E7 _. f
3
! v8 T. R2 |8 S; V2 i- t 4 /* 0: printf; 1: UART1 */, b+ R* G1 |7 m! q- L7 \0 W
5 #define OUTPUT_TO_UART1 18 F1 \) j4 M+ r" F9 O
6 6 _! }* e- d# ^
7 /* Switch Log Output */; D& w' a# |, S% @1 ^" b' c
8 #if OUTPUT_TO_UART17 K. w" @' B0 C* W/ M
9 /* For UART1 Initial */) Q3 i9 F; Z3 K
10 #include <stdlib.h>! K N4 ]% m' u. S
11 #include "hw_types.h" ( v3 s, L/ p/ i4 u) G$ B# c
12 #include "hw_syscfg0_C6748.h"
) X. ]( |' \& p% ?0 t 13 #include "soc_C6748.h"
! U( R% \! j- t+ C! ` 14 #include "psc.h" ) \. J! j; O) Q1 v: k' M
15 #include "gpio.h" - v; h1 U5 |: d/ a' W& I- f
16 #include "uart.h"8 U. T5 E( R- G# P# J
17 #include "uartStdio.h"% E7 @! @% X: v# {! B% Y& o
18
! E0 d4 O2 v* B6 B+ [ 19 #define OUTPUT UARTprintf
) W- { ~' }4 L6 k8 I; R6 q 20 #else
' h0 u& D4 s% W/ i' t 21 #include <stdio.h>) c% G: G" a) {4 `! C3 {
22 #include <stdbool.h>
4 h2 s2 e' R, x& o: Q# { 23 5 v" N: h) y% ]- k
24 #define OUTPUT printf
5 ?& c7 J" E2 D5 O: w 25 #endif
1 N" o: H( a4 ~) o 26
1 ]9 ^5 h5 u. [0 ~2 k' g; h2 }$ | 27 /* Log init */
6 T. L# i# N4 _& `( P; \6 F 28 #if OUTPUT_TO_UART1
/ S) @! Q" I% k1 _' Q 29 #define LOG_INIT() do { \
8 i% Q: m7 }5 T ?+ m) U 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
$ a; R* o" ?/ N [, y/ z 31 PSC_POWERDOMAIN_ALWAYS_ON, \' `/ w a$ c) Z5 f$ q8 I
32 PSC_MDCTL_NEXT_ENABLE); \
8 Y V7 L7 r, @- Z& q# v% @8 v 33 GPIOBank6Pin12PinMuxSetup(); \
& P" r& q& s1 ^2 [* k; V- @' L) a 34 GPIOBank6Pin13PinMuxSetup(); \2 r" `1 H- q% B8 a4 \3 D
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
" q( ^! F) A3 z" D( q( u6 ?7 B: z 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \* ^% T I& G# q# I" A3 c" r
37 UARTStdioInit(); \
! b( T" l/ z/ e/ R3 p4 \ 38 } while (0)$ ?, s9 j7 I* J7 q* l6 X
39 #else! {, A/ ~. a" d& U/ q& C3 o$ c
40 #define LOG_INIT() do { } while (0)
. x& K& O9 n0 ]7 u" b 41 #endif
9 R$ R% y* N: z 42 * ?$ R$ D" _% Y, h0 x/ i/ C
43 /* Log Output */
" b* @: t( L% f; ^" [( k* Q 44 #define LOG_INFO(format, ...) \
3 L4 N) G' h9 i* P5 e3 g8 K2 r& i 45 do { \
1 w; C$ } z5 k( P% N. m# u3 ]# i3 [3 w 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
$ w8 z6 }" y1 W1 l# L5 J1 z 47 } while (0), a- `. V: H; V3 I: |! ]4 q9 v
48 * u9 Q: T' F3 i% R5 x
49 #define LOG_ERROR(format, ...) \
' D' y0 ~& i! l, h" J% l% Q! J; A 50 do { \9 a+ V( u3 W. O1 m/ X
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \" m2 D. m7 I2 ]; K- }* }
52 } while (0)
3 o5 O+ k3 T$ _" [- t* d# { 53 1 \. s" c6 {- U* F. U9 e& W
54 #define LOG_DEBUG(format, ...) \
( G6 }2 s9 W/ y 55 do { \% k4 o3 A0 q) r4 |
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
: R* y5 l+ C+ e0 t0 {6 l 57 } while (0), D. F7 h2 a9 ^* O" a$ e; R. w
58
& y0 c6 Q/ c5 N0 g/ U 59 #define LOG_WARN(format, ...) \
# c; R% k/ G6 A* M5 I! }. ^ 60 do { \! W8 [8 ^3 x, @8 j- A3 r" E
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
& H* f: s. i, [* a/ `4 [% A 62 } while (0)
0 b# z# [2 ~; [. N: F0 u9 j F 63 ! o3 T7 k1 E1 p' m5 E
64 #define LOG_TRACE(format, ...) \
; O! c& K! ~9 ^ 65 do { \
' o, ?# f! z1 V 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \. W: q: H" W$ Y+ U. Z. I
67 } while (0)
" `4 a4 {2 O* v! R5 h0 X2 C 68
( j7 r+ |, \$ k" |$ [1 }# j/ X 69 #define LOG_FATAL(format, ...) \
: w9 m+ f% u1 W# r% C1 t1 O 70 do { \
' T9 q1 k/ A6 P5 D. e7 N5 j6 a 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \2 L; z9 m, z0 d5 f5 E1 ]3 S" l
72 exit(1); \2 ?- n. P; C2 [* y- a0 {/ K, ]
73 } while (0)% d) @- o- l- r8 h/ N3 J' |
74
# K1 O, P& G( @ 75 /* Assert */
) V$ J1 ]" V! S" i' A 76 #define ASSERT(EXP) \2 b k" n' ?8 y* p
77 do{ \
6 H7 Y( s0 H( [& f/ [$ }6 g+ u S 78 if (!(EXP)) { \9 I( t6 j. c4 L `; h' a
79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
1 e6 K- [9 e3 ~) a7 Q4 A, Z 80 exit(1); \5 t: J& t4 f: G$ T2 G0 O
81 } \$ |: n7 y; e( |* v# M! E5 g
82 } while(0)
8 ~' g1 ]' v- N) |9 p2 a6 j 83
; }. _, s+ y; d6 |5 M 84 #endif
% Y0 F7 K# f5 M* M8 H+ w+ T3 B |
|