|
1 #ifndef _LOG_H_* _) [/ z# d1 k. G$ G5 F
2 #define _LOG_H_
) w2 q; K- h5 ]$ L( i( y! E 3 # D7 q( Q# v" h: y
4 /* 0: printf; 1: UART1 */
7 J+ C# y$ @$ u; b0 G 5 #define OUTPUT_TO_UART1 1 v) E+ |# H7 L4 z4 a0 n$ k
6 5 n S% ^, Q1 ~
7 /* Switch Log Output */# y% R& M5 q3 _- `
8 #if OUTPUT_TO_UART1$ W. C7 E: X+ K$ R1 [
9 /* For UART1 Initial */( Y0 Y% c6 k6 n1 |2 Y7 c
10 #include <stdlib.h>
G3 A! K+ \% [% y9 b5 y 11 #include "hw_types.h"
9 ^$ Q% a/ h) d, z( u) k G3 @8 _ 12 #include "hw_syscfg0_C6748.h"
! C6 {% H# p! D. x 13 #include "soc_C6748.h"
. g' n% u' d) ?# B1 u6 f 14 #include "psc.h"
1 g4 V3 p! f) W& _8 ~1 x% a% o 15 #include "gpio.h"
9 C) n, q5 A4 j, I' a/ V 16 #include "uart.h"
+ ^+ d, v' Z C* }$ ]7 P7 g( y8 u: H 17 #include "uartStdio.h"+ \. M% ~+ h- G- s
18 ; O7 v( ?$ G- j, ?
19 #define OUTPUT UARTprintf
9 z! O, ]. w5 K9 r: ?# H+ \0 A" e; k/ \ 20 #else
. o9 F. G' {8 g) Q. [$ {( N$ _ 21 #include <stdio.h>
3 Y8 u1 o0 g3 ^9 K* a6 M' }! u 22 #include <stdbool.h>2 J) m% r o& m& e) l7 Y; [/ S
23
; f7 N' ^' M& e0 A: ~1 j3 m 24 #define OUTPUT printf, m0 }, \) J* g& S3 g" A
25 #endif+ g, u+ U7 D. Y2 ^1 [
26
; E2 E& G5 _) ]% e5 _ 27 /* Log init */
: }# Y5 @9 Q. _6 t- ? 28 #if OUTPUT_TO_UART1
: g9 g6 B" o# B1 E* k 29 #define LOG_INIT() do { \0 T/ x# Q6 j" G+ A3 H! v
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
& d+ C% i0 v: F9 t$ ~3 P 31 PSC_POWERDOMAIN_ALWAYS_ON, \
E/ @1 `5 j3 b; c; |) C) H0 ~ 32 PSC_MDCTL_NEXT_ENABLE); \
* F% I- n# R3 _1 {$ K" z$ |3 @' @2 H 33 GPIOBank6Pin12PinMuxSetup(); \
1 E+ q3 S* O1 E: d 34 GPIOBank6Pin13PinMuxSetup(); \+ r% E3 E! S* }2 w$ d) L4 m5 J1 V d5 M
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
, k$ l+ x7 Y( u& u" a7 \9 I 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
4 J& O0 a1 T2 H, v; t; i8 z# x( p! ] K 37 UARTStdioInit(); \9 z/ W5 A+ X) z1 B. J
38 } while (0)1 ]( x0 r9 w! J+ b' Y7 J; W8 |) n
39 #else- q; Z! T) C' ? ]% z8 b0 I
40 #define LOG_INIT() do { } while (0)' C3 w4 {2 |: K h
41 #endif
! Z( F/ [- S* t' A2 ]- j3 \0 d 42
/ x' Q5 H9 h/ w1 h% u$ Z 43 /* Log Output */
5 h. R& ^' X* z% {8 y 44 #define LOG_INFO(format, ...) \7 T5 X* b4 h% O
45 do { \
# X# o q3 W) s5 j8 z b 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \: n) J+ ?! j; o) q, G
47 } while (0); D# F2 B, a) w2 i2 {
48 7 T' r" k, \6 w* }8 F1 k
49 #define LOG_ERROR(format, ...) \
* v+ e7 ?8 b; `- Y7 F) a 50 do { \3 [$ i+ C5 s9 K
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \. @ K+ {* T9 R( V* G: _) F
52 } while (0)4 k6 Q$ m8 _$ M4 ~8 l# D
53
8 i% J3 o. z/ i 54 #define LOG_DEBUG(format, ...) \+ T0 o) K; Q0 Z" L) G
55 do { \
2 Q6 K( ?1 J- s( f/ y 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
~ Y/ K6 {) `' Y 57 } while (0)
9 P1 T) S9 M& }4 v6 j2 p 58
: W4 \: M% |% b 59 #define LOG_WARN(format, ...) \
% f0 R: A# V2 Z% }4 `: A$ V# N 60 do { \4 h; Q: a" R: Q: T% E2 p
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \$ ^5 Y+ \" l$ ^1 A0 M
62 } while (0)( {. Z1 D! q: A% E7 H
63 : y' e' P& _# t9 r" |
64 #define LOG_TRACE(format, ...) \0 X% Y3 |' X. R. y
65 do { \
& @+ \! r: a$ w% o; f9 i5 S 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \$ H* U7 G2 N$ f& y
67 } while (0)
! D6 {5 R" d3 F6 A' a+ ] 68
9 I: y/ g/ }0 q 69 #define LOG_FATAL(format, ...) \
' G! U+ i, V/ n. e) G) ^* i 70 do { \1 p0 w, z( |; _
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \5 I$ H/ x6 ^8 j9 ]# b/ [1 b
72 exit(1); \# s/ [( H7 N J1 s3 p1 x
73 } while (0)
/ ~& O4 ?% B. E1 e. C 74 ' x7 O6 c' Q) }& L* F# V6 y) I& Y
75 /* Assert */
& h! I9 P4 Q# | 76 #define ASSERT(EXP) \
* }9 \0 b! D2 e* J" U 77 do{ \/ s# q% X6 i+ e
78 if (!(EXP)) { \
o' ^% ^5 V, N$ W 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \5 i* w u: G4 [% A$ D3 I* ^
80 exit(1); \6 h. I2 f" {% [1 E
81 } \
; k3 N( Y+ k2 ?# j$ [ 82 } while(0)* T$ Y7 B* d1 M' ~( H% Q6 D
83 5 {! u8 {( D/ O2 I$ Q
84 #endif2 ^; H# V" v- w* y/ I
|
|