|
1 #ifndef _LOG_H_- t2 ?& Z, a+ r- c1 r4 k
2 #define _LOG_H_
5 E: w' r; Z* _2 S- k. o 3
0 z" S: }* \: P4 f8 z' h 4 /* 0: printf; 1: UART1 */
' q% X- ]# P% z. m 5 #define OUTPUT_TO_UART1 1* p/ x; X9 B7 B
6
: l H# P8 q" Y; E& X( E$ F' M 7 /* Switch Log Output */
% @. J ]8 Q n5 ~5 w" U 8 #if OUTPUT_TO_UART1( E" ~" Y- z9 f) ]$ N
9 /* For UART1 Initial */# O7 K; s& L. n% n& |9 |# r
10 #include <stdlib.h>
0 j! V% B0 R3 M5 I 11 #include "hw_types.h" 7 r+ c/ |0 c# J8 S% m
12 #include "hw_syscfg0_C6748.h". h/ R$ E: ]8 |. M
13 #include "soc_C6748.h") G4 d! }) y4 ?
14 #include "psc.h"
! l8 ~ \1 I/ x/ u8 z& u u- v 15 #include "gpio.h" . [7 G' ?% Y s ` h
16 #include "uart.h"3 ]0 j# |' y; j% t5 u$ _
17 #include "uartStdio.h"
6 L( T# z6 [7 `- e& T$ y 18 % W# r. g: N" l6 L; {- e: M
19 #define OUTPUT UARTprintf
- s& e, a% X! v0 \( f 20 #else8 B+ u# v. d Q' a3 E3 Q
21 #include <stdio.h>7 P/ B1 w9 v0 p
22 #include <stdbool.h>$ L) y( w; v2 n0 @
23
" `) c; r" r$ ?2 _ 24 #define OUTPUT printf
9 B- j$ e1 P0 m 25 #endif$ O) W2 @0 k0 K
26
2 }* n! T, h0 n 27 /* Log init */9 G B9 F/ W8 [0 o: f, y
28 #if OUTPUT_TO_UART1
' |2 C8 V. ]# U% r g, {( z 29 #define LOG_INIT() do { \
; j* @! f9 E; B 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
& V0 ~6 e6 K# Q9 d; O* R" P 31 PSC_POWERDOMAIN_ALWAYS_ON, \$ ^% B( g2 L; a$ i5 U
32 PSC_MDCTL_NEXT_ENABLE); \2 }& _7 H' M* {, w6 P
33 GPIOBank6Pin12PinMuxSetup(); \* n/ B! G! n/ P* \
34 GPIOBank6Pin13PinMuxSetup(); \
* t: o0 z7 a% l ?1 y, b2 h; h& G/ ? 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \- L1 p& r5 c$ u9 i$ @2 O
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
$ ?3 w: b5 q) @ 37 UARTStdioInit(); \
; D0 `6 o* r+ @ 38 } while (0)
, C: Z S; N, y! J) y 39 #else
+ l) H1 U: t) N/ o 40 #define LOG_INIT() do { } while (0) k [1 Y) ?/ {, W6 _, ]
41 #endif F* q( W! w* D8 h8 `* y+ Y
42
* B' _) h& i5 r j- }. C6 g0 X 43 /* Log Output */! M4 N# j! S" k* T& w" O: M6 e
44 #define LOG_INFO(format, ...) \
2 E. y; l+ I/ g# x) b 45 do { \, i' L4 x" N; s2 S" s8 j
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \1 `/ q5 Z. u6 V
47 } while (0)
1 \- h$ R+ E; [7 H" D 48 % O9 p: J0 s) i5 Z. _" V/ i2 s
49 #define LOG_ERROR(format, ...) \/ U" b: H; N' _6 `3 F% U
50 do { \
. N' }4 J" i. U% t0 D! Q7 e3 B 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
2 K( r$ |7 Z: P3 I3 O; U; l 52 } while (0)
: L+ w: G2 {+ n6 U 53 , _* `3 s& [ \: y5 \) L, Y1 T L
54 #define LOG_DEBUG(format, ...) \
6 ~+ b& h+ f( B, r 55 do { \
/ C# Z D2 I& e- Y9 O 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
9 a: D1 F& ~- S- X8 T& o8 ~ 57 } while (0)
0 E' A' c, g- U1 n( C 58
# a5 T- y& f, c8 P 59 #define LOG_WARN(format, ...) \
0 h! x: n4 v r _( Z 60 do { \
2 }) U, z8 K/ {% B1 a 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \( C) O. V/ e: Q4 }2 K
62 } while (0)
: j0 U' k) q, v" @* {! o6 o 63 3 z$ [2 K" H+ H! C; I3 h
64 #define LOG_TRACE(format, ...) \6 O ^2 w5 W9 g O/ T" q
65 do { \
! e5 ~2 R* \4 \/ w; R 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
& h5 A# c8 ?; ? 67 } while (0)
p* E: E7 P: f9 w 68 " P# }, r, r: q/ c# t1 z
69 #define LOG_FATAL(format, ...) \
: s v& ^ n. |* |1 o+ M9 s 70 do { \8 a* P7 S( n' u" _8 D
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \/ M) C* Z3 b8 `- r; ]
72 exit(1); \
1 D% S9 e6 Z: r+ a( Y: N- O3 U1 O 73 } while (0)1 F" [. u: S( Q3 e( h" _% {7 W! z
74
4 U" ]8 w# m) v 75 /* Assert */
; E. a% T1 `3 W( x% X 76 #define ASSERT(EXP) \" y2 x1 v r2 C$ l$ G' I
77 do{ \
8 E% f; b7 T. a1 B+ } 78 if (!(EXP)) { \
% ~9 k% Z/ D+ P9 ]: c 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
K0 x' k/ N) l" [- l 80 exit(1); \
: T2 }+ O: q2 ^ 81 } \3 N; H. i$ i) A r
82 } while(0)
! c4 m# x$ Z" U% [8 ` 83 $ @; t/ f/ e/ w1 z3 [
84 #endif
, G' U4 n1 T4 V8 J r1 r |
|