|
|
1 #ifndef _LOG_H_8 L' M0 Y% d. O) q% a
2 #define _LOG_H_, m, T5 ^$ t; { x' J/ V6 Z
3 ' y+ d( Z5 @; O% V( Z/ Q
4 /* 0: printf; 1: UART1 */9 |% w8 Q1 t; T: P
5 #define OUTPUT_TO_UART1 1
* R5 M* W: y0 c! p6 v, r+ G* ] 6 5 B4 M% y( C2 x
7 /* Switch Log Output */
# \& w% K3 r& a+ r3 M 8 #if OUTPUT_TO_UART10 o2 j) u5 a7 u; P @6 T& Z
9 /* For UART1 Initial */6 D) |+ y) |! {; S
10 #include <stdlib.h>, H- ^2 Q, x0 `* j- a& V+ T
11 #include "hw_types.h"
' n) v* D N( M5 K 12 #include "hw_syscfg0_C6748.h"
1 O. k5 X# m" b* [7 I1 @ 13 #include "soc_C6748.h"3 {4 N3 W5 Y4 t- J$ x6 d- U
14 #include "psc.h"
3 e. R& G; I" z8 m; h) a* m g" k 15 #include "gpio.h"
F8 D* O- K, z 16 #include "uart.h"
! `/ g$ ^0 z$ U) D) | 17 #include "uartStdio.h"9 t8 Y6 Q5 l) y
18
% G K4 g( r& D3 ^/ _ 19 #define OUTPUT UARTprintf3 L3 C( n J( y0 B; C
20 #else
S/ N' x% }- J) d* N, [ 21 #include <stdio.h>7 w _2 j" |0 K, b0 k4 N! o
22 #include <stdbool.h>, E5 l8 I d+ H' M3 y8 z% w
23
6 F2 T0 |% n$ W7 w 24 #define OUTPUT printf
" G/ v5 p5 C3 V2 i# O 25 #endif/ ?* x p* g( n1 F7 Y) S) U4 Q8 e
26 ' W, N- |+ R- r. ?# ?2 v
27 /* Log init */! J; i, f) s$ W/ s) q) E. O
28 #if OUTPUT_TO_UART1
# o1 {+ u6 K+ O# p) N' J" }# O8 u 29 #define LOG_INIT() do { \
9 ~/ }3 D! Y7 U Y: J 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
! Q5 R7 f& w+ }, ?( k 31 PSC_POWERDOMAIN_ALWAYS_ON, \
( t& K% u5 }( M! @/ i" K' {7 l+ B 32 PSC_MDCTL_NEXT_ENABLE); \0 N- ? ?; `) ~5 I( p# \
33 GPIOBank6Pin12PinMuxSetup(); \# G6 ]' _' |9 D- I
34 GPIOBank6Pin13PinMuxSetup(); \
: O0 K2 Y: l* v0 n 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
1 L8 l7 Z' h0 m3 Q 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
$ }& h1 u5 R# z" w" |9 w 37 UARTStdioInit(); \& j; T; u' p v7 [. m. B: |
38 } while (0)0 Q/ g/ x1 Q2 d
39 #else# O' L9 p u- j/ [8 b$ c4 O$ u
40 #define LOG_INIT() do { } while (0)
/ H0 v4 {: R: ?2 F' t' E. G 41 #endif
" }; {. f% g5 p V" C# y& G. F/ B 42
8 r# ~2 B- E& c 43 /* Log Output */
+ @0 f- N. |' i) _ D 44 #define LOG_INFO(format, ...) \
4 E2 `$ A! l7 |8 N8 ? n 45 do { \2 x% N2 B# |( V
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
9 B! w6 M9 A, p; H0 S4 O5 L' M. o 47 } while (0)
0 f# K1 a m2 \% t 48 ; _ ~+ |5 ]) S/ U
49 #define LOG_ERROR(format, ...) \
/ \1 N- p4 `8 T3 w' \5 ?* x 50 do { \
3 O* m) [5 `0 o: ]- b* s2 _% j0 s 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \. y* e1 e2 t7 Z: Y* x: B
52 } while (0)
4 Q3 a0 i% e0 Z9 m 53
1 E1 M7 \/ f4 `* Y" I" {: M& K% t 54 #define LOG_DEBUG(format, ...) \( {$ b6 u( @0 o* L
55 do { \
]: {7 `- R! o/ i 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# K) ?# h& l# ]: ]0 q 57 } while (0)
/ @: K; F9 E v0 P% }$ b0 N 58 ! ]7 I1 O1 \3 P2 r
59 #define LOG_WARN(format, ...) \
5 M0 i1 h! j8 Z1 [ 60 do { \/ _% G# b( v/ {8 V
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
4 ?* V+ E- X8 [5 B" y% a 62 } while (0)& c6 F' k: X5 n5 Q
63
: M$ t' \+ d! { 64 #define LOG_TRACE(format, ...) \
% r4 o$ q" P8 t- g3 @. G 65 do { \- N6 L0 z0 I3 V( j! I
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \) N1 W4 D4 H) \- z
67 } while (0). c& A, Q9 Z J; j; F& }' m
68 # l: L, f; ^& U# t0 J" G
69 #define LOG_FATAL(format, ...) \
9 D: x2 J* M5 F 70 do { \7 B7 p5 Y* @3 e2 ]& j' L" q
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \. z6 ]' [2 v/ W
72 exit(1); \ I: A1 N" g. ?* b, `
73 } while (0), Y* y5 o4 {( {& N P$ V$ I# o
74
/ k. p a& Z# H% t) T3 a9 Z 75 /* Assert */
4 b S6 p- H8 w( J+ k- ` 76 #define ASSERT(EXP) \
! r% W3 |, D- l" F) r 77 do{ \3 d$ \4 \( `5 P$ C
78 if (!(EXP)) { \
5 I* o) l- R4 S3 Y `6 g" n. m 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
) g: V0 J5 H6 m! o6 Q% H 80 exit(1); \7 Z: H7 u* `/ T' \8 H
81 } \
* Q" m7 M4 b8 F% M; F 82 } while(0)
4 ]+ H4 X |5 B 83
' U5 \7 M( X$ i7 n$ J 84 #endif- \" |" t- Z* I# x, m
|
|