|
|
1 #ifndef _LOG_H_7 y) \4 d% A! g X5 r# |: s6 v' r
2 #define _LOG_H_& J% t( N, Q5 x" z8 T( {: D# D' I
3 " B, H4 V0 C. m+ w# H
4 /* 0: printf; 1: UART1 */% m( \0 p% K. ~* c. t7 O; G
5 #define OUTPUT_TO_UART1 1/ Z5 T( k$ [0 R; P' I7 O
6 5 R) u. o, v- l; p0 {
7 /* Switch Log Output */
2 b& b% v; C6 E- |* L 8 #if OUTPUT_TO_UART1
# q$ _9 Y( p& U! u- H 9 /* For UART1 Initial */5 U+ C$ A9 B* I% q4 \
10 #include <stdlib.h>+ L K- `" K" r/ z
11 #include "hw_types.h"
) |0 E3 X" F9 M l 12 #include "hw_syscfg0_C6748.h"
" p: r3 i N i9 P* k* M( m5 c/ ` 13 #include "soc_C6748.h"
- d8 B. |% S4 E7 ]' T) n* ?' n, P 14 #include "psc.h"
. v5 W$ K3 g* A0 z! \8 J 15 #include "gpio.h" / x7 W6 t0 o" {2 u$ ]/ J, ^
16 #include "uart.h": H7 W* @. {! j; P& c" s$ A8 j
17 #include "uartStdio.h"
5 Z, R8 [6 ~- O( p1 J4 ^ 18 ! e& E$ K& l9 n* B2 J
19 #define OUTPUT UARTprintf
" I: w( j( h. e; G 20 #else& ^. _7 b+ g7 T# H7 `% g7 _/ K
21 #include <stdio.h>6 g3 @' F v1 A, I! \. M' N: x$ j- z3 a
22 #include <stdbool.h>, ]* d( _- m: v. P. I' O
23 ' J+ ?, b1 ]4 N+ p
24 #define OUTPUT printf! H( I5 D1 e% y A7 W( [
25 #endif) I5 G+ ~9 k8 e& Y' x% ^4 N; \
26 2 A, c( f2 X9 e" a4 T, K
27 /* Log init */
$ R1 G1 c& n( C% P# r7 v" O; c 28 #if OUTPUT_TO_UART1
: v: u. p& U/ ~2 l+ p4 k 29 #define LOG_INIT() do { \
9 B! K$ @; @" @5 o 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \% ?5 c' {: E( c& X b
31 PSC_POWERDOMAIN_ALWAYS_ON, \
3 D v9 i z* l; x% l, K+ d- P 32 PSC_MDCTL_NEXT_ENABLE); \9 O! b- ]0 n6 [5 p. M3 I* ?
33 GPIOBank6Pin12PinMuxSetup(); \
4 v2 T8 {6 z( H4 Y/ d4 Q 34 GPIOBank6Pin13PinMuxSetup(); \
9 d! D) B! }2 t 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \+ t$ o3 A1 `, `3 \
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
5 t6 V, B6 |' I+ L$ n/ L 37 UARTStdioInit(); \
* h% n0 o6 S! `+ c$ G& }3 o 38 } while (0)1 `: L% t* `. P! J% J
39 #else5 |! l' W% D3 A: ?% A6 C* m5 Q7 {
40 #define LOG_INIT() do { } while (0)
6 B1 }9 Z, ^+ c- b. \# B' Z* G 41 #endif
# u% `1 A* V; G8 ^ 42
4 P+ h& q% Z3 B 43 /* Log Output */7 M) E, C8 N0 p: s& r7 J [
44 #define LOG_INFO(format, ...) \* k0 ]- C2 ]8 P6 ^1 {: B
45 do { \
% J+ h m$ s% Q3 c7 o# [ d' d: D. w! O% A 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
* H0 K+ a) k3 ?3 Y 47 } while (0)
4 c* k, n! {( W6 f& m 48 ' C2 B0 V( y/ j7 d0 o7 y4 e& |
49 #define LOG_ERROR(format, ...) \
3 n# Z4 o8 L; A4 Z! s' C5 n4 r 50 do { \6 A( u8 V& K+ m7 R u! `3 @
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \# z5 i* s G3 j# |' R
52 } while (0)
9 r7 n; n! l2 N% n 53 & o/ J0 l: z/ f/ N4 J
54 #define LOG_DEBUG(format, ...) \
9 [0 r2 P% z! _" p4 ^ 55 do { \% P s3 q" w" S. x
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \5 {% z& A8 C- T0 `- B6 z3 j1 z
57 } while (0)
# G3 r* x$ J8 h8 X, }3 o/ S 58 % j! l: n" M% I: n& A" c' P; \- ^
59 #define LOG_WARN(format, ...) \
2 O$ w1 y( w3 t5 y: C* U8 o" t; x+ T 60 do { \6 I% g3 G$ s6 P ?8 ~. P+ ^6 A! j
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
1 f3 Z Y/ ~; m2 [1 s- s1 [8 C 62 } while (0)# I- r- `9 |# ^3 @- _$ B5 x( h
63 , S( S/ M6 ^% ^; _" e& e% L# D2 O
64 #define LOG_TRACE(format, ...) \
6 [" }" i* x9 Q, I- q+ `- d6 [ 65 do { \. m6 _" H! `+ O; Z! e
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
2 Y8 B" X6 x4 W4 p. c% I1 X 67 } while (0)" K# L I: N( j6 z
68 5 `& [3 e1 G I* B
69 #define LOG_FATAL(format, ...) \, y. t) z2 }5 V J! P% x
70 do { \8 v4 V7 I- |# K' C, @
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \& q* f. O/ G1 {! y# G6 q4 g; f% c/ v8 i
72 exit(1); \
$ X2 Y! `& g/ h E8 I6 g 73 } while (0)7 O- R9 o, q' x7 r" `
74
' e& {& d" u$ V. W5 S! ^ 75 /* Assert */; g4 J* J) F, k2 G( V
76 #define ASSERT(EXP) \% I% `; e/ g9 \- B" d$ I
77 do{ \
3 }% B. h! n5 [- t! I( i* o 78 if (!(EXP)) { \; V" p# O' C: Q2 {$ f
79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
+ Q5 n" I" B [; k9 U2 I& [ 80 exit(1); \
* X* {# E0 c$ |0 B$ \, B& P 81 } \
& ^: p! _/ j) f9 s% p \. t 82 } while(0): j, g/ R5 l+ u: I8 r( i+ g
83
v, H) X5 r* i/ y, D4 V! C 84 #endif5 A' j4 h- G# O; F6 x4 Y
|
|