|
1 #ifndef _LOG_H_
5 Z: B' ^0 w+ m; s9 y3 @, G+ M 2 #define _LOG_H_( b C: h& V" J& a) J& R
3
$ o1 U. S+ I% U6 `, [8 m 4 /* 0: printf; 1: UART1 */
& b5 M5 f3 K. f+ T Z& R k1 t \6 l 5 #define OUTPUT_TO_UART1 18 a! K0 e) v. F; G+ x3 a* C# | O4 Z
6
* G$ t7 Z: d+ ^) K5 K 7 /* Switch Log Output */
' V& J b+ c7 Z 8 #if OUTPUT_TO_UART1
- c6 P* U5 M6 e% Y/ K1 c9 K, l4 D& @ 9 /* For UART1 Initial */- @; u7 x& Y# T7 z. _, D
10 #include <stdlib.h>/ j( x: _: e% S& k# \+ j3 ]. n
11 #include "hw_types.h" ) A* w3 a0 x9 `& m
12 #include "hw_syscfg0_C6748.h"
8 u5 E4 O, I# O; R/ C 13 #include "soc_C6748.h"
. s; F3 v. L! u" W" t9 l 14 #include "psc.h" : ^. b1 f2 e3 K% f
15 #include "gpio.h"
' a- }2 m- N9 h8 O 16 #include "uart.h" a: a o" g, N: s, ?: d. Q
17 #include "uartStdio.h"7 X1 h' d* g2 ^& ]) D& Y7 w9 P- c
18
" l, ?2 @# q! j 19 #define OUTPUT UARTprintf
3 K5 m5 b- `/ ~0 V7 W 20 #else
% ]" _& L! f' u7 g9 n: f9 T$ ` 21 #include <stdio.h>: X& p% r" ?) t8 u' H) q
22 #include <stdbool.h>& w+ b/ e7 ^% V0 N) I8 q
23 ) ?2 K$ o7 B' m3 i$ i# |4 y5 Y; k
24 #define OUTPUT printf n9 o( R% o; b$ `+ s) _3 U, b
25 #endif
3 F, b: h2 O+ c4 l3 j- k/ \ 26
t9 C' s: ]7 w 27 /* Log init */2 Q1 i/ G$ V% u
28 #if OUTPUT_TO_UART1: C |# q" R q, Q9 m( t3 a
29 #define LOG_INIT() do { \
3 |1 F6 s1 K; c& u; C. _2 ~/ n 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
( ?( P7 U. C! C0 N 31 PSC_POWERDOMAIN_ALWAYS_ON, \& ~! G. z6 X6 X: u
32 PSC_MDCTL_NEXT_ENABLE); \
# C ?( {+ Q. L5 U G7 g 33 GPIOBank6Pin12PinMuxSetup(); \
) ~8 k6 E( H2 E+ C4 ~2 R0 e2 ~+ ^ 34 GPIOBank6Pin13PinMuxSetup(); \
" t `$ Z4 f3 d- D0 p6 l 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
: P6 W4 k* P$ L5 E; ^9 f7 a2 D0 e 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \9 l' j4 p% _1 ~2 } C6 |
37 UARTStdioInit(); \
6 |3 R0 K7 }3 H6 D' u1 u$ ~ 38 } while (0)
5 X1 `! Y! v) } 39 #else
$ E, P! s1 x9 K 40 #define LOG_INIT() do { } while (0)+ Q, l5 n' x( j# x- J
41 #endif
) f' z# X. T2 E# _3 G' W6 p 42
# W" X4 S5 ]5 Q. q 43 /* Log Output */
4 ^2 S8 |( ~5 b& x! _ 44 #define LOG_INFO(format, ...) \
0 F$ r+ Z4 j0 p4 P6 C/ i. ]' U 45 do { \
" c0 s3 W" E- T$ n( e: c: H 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \8 E9 F* r8 I/ b; s
47 } while (0)6 E8 f' p4 s' u
48
! d4 o! ]0 `) L3 I+ t 49 #define LOG_ERROR(format, ...) \& J+ @1 e# b6 J6 J X
50 do { \& [: @: `& {* ` _/ q6 }2 e
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
" }% p2 K5 O0 R6 g5 W8 I" b4 n 52 } while (0)
# `- f7 b8 u. ]2 P 53
9 }, \3 K5 J% \3 A0 i0 G7 U& H 54 #define LOG_DEBUG(format, ...) \
; I4 n4 H& s2 R9 w/ V/ k$ O) _7 t 55 do { \
* S) B3 J0 H W# s1 P 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
3 \7 ?# {' ^+ ^# r6 A% F5 T 57 } while (0)
( W, K7 P1 t. j1 n6 C% s5 H) f: B 58
: W' ^7 {/ F1 y# {# v 59 #define LOG_WARN(format, ...) \
7 ]% F3 \& y `1 A- v$ b 60 do { \
, V6 K1 k' e' y* y( g( I& q 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
) i1 T" [& l/ H ~# } 62 } while (0)
# G$ N) F. i: o3 a3 I) u 63
6 U( Y# a6 y; p) i) s; k a4 E 64 #define LOG_TRACE(format, ...) \
) X3 a8 w( ]) ^2 [+ ^ 65 do { \
g! j0 P1 }6 U$ m/ i 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \) `9 m! i( r% ~5 c, W3 ^( ?
67 } while (0)
: M8 J# u' `( { 68
# A7 g$ B+ z6 |$ p1 V; n" u+ Z K1 u 69 #define LOG_FATAL(format, ...) \
' Q% G/ A& V! H4 ?, J 70 do { \( G! u. C- @' _& F6 b1 q3 }& K
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
& j6 d) D( k0 V$ u; Z 72 exit(1); \) F# t& d- u0 I5 M, ?; q7 Z7 J
73 } while (0)! m! q& A4 [0 M$ g
74 2 s4 p2 c# `! ^! |, t
75 /* Assert */0 s7 N P: T5 z1 T. Z Z
76 #define ASSERT(EXP) \
6 g1 c" G9 L: s 77 do{ \/ e- G# z5 U+ y9 G0 ?; x/ z" t
78 if (!(EXP)) { \6 w+ V. `* Y1 w9 B- d$ s
79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \2 q( z6 A' F$ ?9 D
80 exit(1); \" e% |$ p7 l' |, o
81 } \! H7 H3 r* C" t8 N/ S4 [; P) W9 N- \
82 } while(0)
4 M& k) X2 `, W+ L+ W1 N 83 ' C+ R! T& y& P# }$ n
84 #endif
( }7 p, p5 u0 t; x9 \ |
|