|
|
1 #ifndef _LOG_H_$ M! V, u7 s) g" s+ Y# I! w( R
2 #define _LOG_H_
! p( w+ O0 |0 ?& U7 w) D4 D) P 3 6 ?& k& M: n4 q
4 /* 0: printf; 1: UART1 */
" d, r3 Y% i" X9 b& i5 p3 ? 5 #define OUTPUT_TO_UART1 15 a5 c+ ^$ o& x' ^! D3 K4 ~
6
3 a! s1 j7 g! _ 7 /* Switch Log Output */( v# n4 a" v1 R# l. e
8 #if OUTPUT_TO_UART1
7 h1 e/ P( d: C; P4 K% W! _ 9 /* For UART1 Initial */+ I4 b- g) I5 H! x6 e
10 #include <stdlib.h>
: t6 a% J6 o* B! ^, l( o+ N* `4 p: [ 11 #include "hw_types.h" ; ?5 a) y5 b, G5 N$ P* l
12 #include "hw_syscfg0_C6748.h"
) L3 \( _' n" M! r: d) ^1 p4 [ 13 #include "soc_C6748.h"& X" N1 v- g+ {. d% M4 G6 Z
14 #include "psc.h"
4 ^+ v" ?& ~0 ~* C5 i5 `) { 15 #include "gpio.h"
3 t' z8 E/ V1 E7 y1 ~ 16 #include "uart.h"
3 V! D6 @) g$ c% k4 a 17 #include "uartStdio.h"
0 p+ f0 j. @) p1 {! v7 l# t5 [ 18
4 @- q& ?# k, N; M 19 #define OUTPUT UARTprintf
" Z! I+ P; I* O) J9 A/ ~ D 20 #else; G* |: D. \& \8 J- C& q- J
21 #include <stdio.h>7 W. t* q/ ?' p5 D& e
22 #include <stdbool.h>* g- G& U' A! G# C' q; H+ K3 I
23
1 {% m) \0 X u( D/ J, n; o% N 24 #define OUTPUT printf) Z& o1 L T, r: f2 l
25 #endif5 G8 h0 d3 d& L: g, K9 G2 [2 ^
26 ! g2 t6 @/ f" t% Y
27 /* Log init */
6 V, \4 p) r. @$ J0 D8 J 28 #if OUTPUT_TO_UART1
' S1 \$ f) B# B 29 #define LOG_INIT() do { \. Z1 r, G/ J k% E$ @5 k. u, p8 H
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \
* m! _' j) d: m9 i 31 PSC_POWERDOMAIN_ALWAYS_ON, \ ?8 W7 u* x, A% s! l
32 PSC_MDCTL_NEXT_ENABLE); \
& B I$ O9 @6 I' `& x8 n N 33 GPIOBank6Pin12PinMuxSetup(); \. A' D( r$ h+ N4 G& B: N8 E. c
34 GPIOBank6Pin13PinMuxSetup(); \
% r, a! Z9 L9 @+ i z* O* e 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \8 r4 E7 ~! R# ?* h2 Z, o1 j9 g
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \% T0 i1 v. A' l# M- Z+ N2 f
37 UARTStdioInit(); \
/ ]4 S* A/ @7 @5 O5 z D# Z: p/ x 38 } while (0)( z, c6 }7 ~* n( c( v, `" \/ K
39 #else
* v8 b7 n) V5 H \1 o0 K8 M 40 #define LOG_INIT() do { } while (0)# v6 {: {4 r# P- O1 A9 t, V; k
41 #endif6 F1 V* @$ E, y; | o
42 ( x8 j* O6 q8 Y, D
43 /* Log Output */7 y. d* C h' ]7 l8 b2 P
44 #define LOG_INFO(format, ...) \8 D9 V6 n" z) A. X9 Z, [7 p/ B
45 do { \
5 @/ x3 s5 |# [, ~; c 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
7 t" D- M7 O2 d! U: ] 47 } while (0)+ d- `4 m4 j: ~4 F8 \+ n; K1 |4 h
48 & K/ h! A+ y, |
49 #define LOG_ERROR(format, ...) \- j- N! {2 F! X, Z i$ ?8 D& G
50 do { \9 r+ @+ D# S9 E
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \' H8 u/ j4 S8 D" j+ L7 u i: ^ Y, H
52 } while (0)" p6 X) l1 o' B
53
: ~# v; B0 ^7 c) O- n 54 #define LOG_DEBUG(format, ...) \) B1 p) ]& E* @. ]; \% D: }
55 do { \
+ C1 V, E2 R$ p: m3 A 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
5 w) ~4 @, y0 o, S: [' B 57 } while (0)
: ~: @" {2 Q: k1 s, j 58
' T/ R7 B9 ~ j, |" D$ Q+ B 59 #define LOG_WARN(format, ...) \6 {* O7 d" U5 \8 \
60 do { \; E, d( x2 p& _4 W
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
; s" \, X. v8 R4 B6 o. d 62 } while (0)
: i* j" a; j$ d1 G7 S) v. c. R 63 1 K5 Z; L* V2 F- `+ C4 ~
64 #define LOG_TRACE(format, ...) \
- O0 C$ w( c- V4 T 65 do { \, {8 J. s) X0 u% O$ r( Y2 }: {
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \* C4 P; {0 \- a6 Y: i- a
67 } while (0)
4 ?$ z4 L: s: V7 V7 t& G 68 3 r5 }' d0 A4 V/ s# i* D. f( `4 J) a
69 #define LOG_FATAL(format, ...) \
9 K0 h* Z7 Z- [5 z; z: O 70 do { \" s3 D" _# e; b7 f2 u' v
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
, D( w1 H& G, X; a$ N* i( q 72 exit(1); \, U& q' F( c& I4 r
73 } while (0)3 A# r* {: K& a: l+ g/ v! W( Q
74 " K2 d' C& t$ m! k0 r3 M6 c/ A, ]
75 /* Assert */
2 N8 H6 F+ V8 Y! y% [ 76 #define ASSERT(EXP) \/ z9 m" }4 u0 h
77 do{ \
# p; D0 i- D# R! h& _7 h 78 if (!(EXP)) { \
) K O0 F* f5 l0 w) A7 \1 i 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
+ Q P( @5 Z8 ^ 80 exit(1); \
8 Z# t4 i: M1 g 81 } \
" g9 T$ Y. V( K) U* B; e% R 82 } while(0)
: v V& p; y6 b1 N0 P 83 8 @+ ^3 A/ Y5 O4 A& T) ~
84 #endif! Q* n4 M: t8 D2 P9 k
|
|