|
|
1 #ifndef _LOG_H_
* q9 ?5 i* _( M8 ?6 q( m) B. ` 2 #define _LOG_H_/ w9 W1 }; b/ E7 l& v3 D |9 E
3 % r4 w6 y1 s" d* F3 \- w
4 /* 0: printf; 1: UART1 *// F* u. y. {7 _1 x0 l
5 #define OUTPUT_TO_UART1 1 J0 G K0 F# j: g+ s* }8 F
6 O7 L2 q; W, I3 i
7 /* Switch Log Output */3 I5 j$ y+ H5 ~4 R+ G
8 #if OUTPUT_TO_UART1; M. M: \9 C( ?) b9 [
9 /* For UART1 Initial */
* ?2 e5 O/ X* L( B4 v 10 #include <stdlib.h>
+ X4 Q2 ?. M7 L2 W+ X0 J1 c 11 #include "hw_types.h" 4 o" B+ q3 s9 d- m& a2 x" Z! Q
12 #include "hw_syscfg0_C6748.h"- W, ]2 U9 j+ R s) S
13 #include "soc_C6748.h"
) r( k8 D* T, B4 ]% V' d- y; {- W 14 #include "psc.h"
+ V% V+ j3 y: V+ I6 {+ ~8 p 15 #include "gpio.h" * `( A% {1 {& l! r5 [$ Q- y* B
16 #include "uart.h"
0 o) ?' g" B M* q! m5 l! d 17 #include "uartStdio.h"0 R# z" Y2 f& N" G
18 9 z% [% P3 Y8 q) R" y
19 #define OUTPUT UARTprintf; }, K: R( G, u. R
20 #else
# F" r, v1 k4 b9 W6 F- c, m 21 #include <stdio.h>) I/ d2 \) X3 C
22 #include <stdbool.h>
) Y3 S9 F6 y: I# Q6 ^8 P# \ 23
5 B; B3 Z" u% h2 e. L 24 #define OUTPUT printf
! U- R; ]4 S* p: R- v- ], x 25 #endif
& c' t$ o; E) B9 t$ Q 26 # y- d8 R* C0 |% L, A
27 /* Log init */1 I9 N2 c" z5 X( Z$ ]& p/ }, E
28 #if OUTPUT_TO_UART1
3 Z- s4 @( y% j 29 #define LOG_INIT() do { \
6 p; \% [! L0 ^* { 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
4 q$ g) t5 j% C7 U( q5 g3 U. V 31 PSC_POWERDOMAIN_ALWAYS_ON, \
! b& |& r* m" D& D. @- l 32 PSC_MDCTL_NEXT_ENABLE); \
+ ~8 o3 B9 O" | 33 GPIOBank6Pin12PinMuxSetup(); \2 \8 N: M7 E. _8 i% c: G9 I) i
34 GPIOBank6Pin13PinMuxSetup(); \+ g- p- L! f$ I
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
: v- a, c; s) \6 `: v 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
3 N2 n" x' d; P2 X: v 37 UARTStdioInit(); \3 {( G/ t* d- p4 b8 I/ q! o% q
38 } while (0)
& {; d8 w# j! h& ~4 ^5 ` 39 #else
+ S) H6 C9 K, ^+ m' R$ t 40 #define LOG_INIT() do { } while (0)8 b& o$ O. p- s. T
41 #endif
7 t; Z& m% h; n: ]$ e' \/ `, V 42
" n, X' E, T' } @" V! }+ P @ 43 /* Log Output */0 C1 I9 M( ^% P* S* n1 f5 H! Q
44 #define LOG_INFO(format, ...) \
3 w7 f3 [9 C; Y1 m7 N* q3 D 45 do { \
3 ?' W) f$ \0 m3 W) q 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \3 b; G; E8 W+ J, n" l
47 } while (0)
' n0 r/ ^& |/ _( ], {; N( ^ 48 - y( q; e* i9 n; ]' R6 `
49 #define LOG_ERROR(format, ...) \' D. l) h0 t# O5 c1 d
50 do { \( A' c' q* I/ \0 M( X) {$ O
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
- P5 G& ]/ p+ i# S 52 } while (0)
/ S @9 b, F" Y3 g X- b 53 0 G( V9 b) j6 E. M8 q
54 #define LOG_DEBUG(format, ...) \! e9 _& C) [8 {- M
55 do { \- Y. C( f4 X) Q* ~5 X- ? n
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
x( C( h' l* c; R 57 } while (0)7 {! s" g* O: l: M7 o ~ D
58 2 B, x. c: W9 p! l/ G! s3 G! B
59 #define LOG_WARN(format, ...) \3 K/ G- y8 s$ D! f6 o
60 do { \4 |$ D6 [5 X' W& \
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \) Y4 p9 j& e3 H7 L3 m3 j* |5 I3 e( s
62 } while (0)
5 @2 _/ K7 N \0 J3 | 63 4 s: W6 a4 Q: d7 D$ S
64 #define LOG_TRACE(format, ...) \
# ?2 A* H. g6 k* A 65 do { \" r) x* o2 [: }6 i( T
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
' f3 ^6 q" `$ |5 E. e; O7 S" u7 ?5 P. i 67 } while (0)
6 U9 u" L+ |0 E2 v6 X h 68
$ o- n' A1 ]+ @( u0 G* L7 P 69 #define LOG_FATAL(format, ...) \
, T' X# q3 `, W8 S. m 70 do { \1 M' I! `0 q) E* W0 R. H! I
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
& `! z$ e' D1 i/ s 72 exit(1); \
6 c, z. ?. u- m8 A 73 } while (0)
* m9 m1 Q; m* e- [+ J+ C0 d 74
5 a, X9 C6 @# B6 D6 `3 W 75 /* Assert */
+ Y) O" H: Y i* E# w! M% Q! q5 j 76 #define ASSERT(EXP) \0 g; o# C1 a8 ]9 l
77 do{ \
) R: H, T, v1 G! \8 i 78 if (!(EXP)) { \- s) O/ l: I8 b: ^0 q' N; R
79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
7 Y: I$ d* {" b1 Z: } 80 exit(1); \. f8 v( `# ?% b( |8 B Z
81 } \
5 m5 r( d5 q, d4 ?9 P$ K/ U 82 } while(0)# a* s9 x' t% X8 G( F, `
83
( |- L s% c! |4 `0 ^' F 84 #endif' i! j: s% v( V4 a1 H' ]2 x6 g e
|
|