|
|
1 #ifndef _LOG_H_6 {7 j1 l+ E3 |! G0 J
2 #define _LOG_H_- X$ k/ Q# V$ S+ e5 z/ J. Q i
3
8 O' S$ c( M `' B% J- l 4 /* 0: printf; 1: UART1 */( H ?) o, ^; a& G% s& r
5 #define OUTPUT_TO_UART1 1- ~& m7 |- n, Y4 s4 e; p
6
5 ?" L) R3 R( n. ?8 q 7 /* Switch Log Output *// z. K4 F. i- R0 y; J& e
8 #if OUTPUT_TO_UART18 ]! u8 x8 P& Q
9 /* For UART1 Initial */
F* k0 h5 E; y( G- X- X 10 #include <stdlib.h>
! L. Z1 k/ R# m1 d4 ~ 11 #include "hw_types.h"
3 |6 T0 s" S- o 12 #include "hw_syscfg0_C6748.h"5 y7 j& j1 X8 R5 [/ R- l
13 #include "soc_C6748.h"
* q a& q. X9 X1 N8 P2 b! @ 14 #include "psc.h"
, @8 N. A, |& k 15 #include "gpio.h" ' c. W' X( }5 l( z
16 #include "uart.h"" _% E5 p+ m* o
17 #include "uartStdio.h"
2 i8 n8 B) j: U. E 18
. H! j' j0 s) Z! i+ Y 19 #define OUTPUT UARTprintf5 u8 n2 }2 G# j& c# }# _
20 #else3 ~. V" a2 E2 U) I8 ^
21 #include <stdio.h>" |" w0 t) ?8 E# {( F% V
22 #include <stdbool.h>
/ I3 y) z6 h' L 23 ' D( q, H! _# H- b2 n# K/ _$ @
24 #define OUTPUT printf( e4 }# h$ C! G9 N n) d8 A
25 #endif
# b$ A# {' S( a/ Q/ e 26
6 W4 e( |0 G+ p1 ]4 @5 b8 ` 27 /* Log init */
' I4 K, s2 w6 [0 J5 l 28 #if OUTPUT_TO_UART1. |% c! \ }1 n9 U1 B3 e, B. I9 L; H
29 #define LOG_INIT() do { \4 R$ H+ e2 v1 L& T+ A
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \: B* {; p. r/ t% ]
31 PSC_POWERDOMAIN_ALWAYS_ON, \% d3 R* A9 x2 {) ]8 D/ o
32 PSC_MDCTL_NEXT_ENABLE); \
8 @2 b* T4 Y$ W+ c; i' k2 A% U 33 GPIOBank6Pin12PinMuxSetup(); \/ p5 m* A9 ^' `" a
34 GPIOBank6Pin13PinMuxSetup(); \
- R" J: ~# _6 q/ w 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \$ R" d* {8 n8 G6 q* X* S
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
- w4 I# h! Q* _ 37 UARTStdioInit(); \. ~$ }' B! J9 @0 v, j0 A8 q
38 } while (0)9 }8 _, `- ]6 z; I0 u' c
39 #else: o8 g5 U/ t' s& R( f- U
40 #define LOG_INIT() do { } while (0)
$ T* A8 p% F* S8 w2 b 41 #endif* i9 _, J& Y4 P& h) z' [) w* a
42 % v0 f% l3 ?& C+ d/ ]
43 /* Log Output */
8 v8 e' t+ j; F0 l 44 #define LOG_INFO(format, ...) \6 @5 S7 h' y) p% Y/ i
45 do { \3 T' {' H \/ h9 T
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \7 S+ X, Z6 X, f& m
47 } while (0)/ H" n! Z" N5 w0 K! v: r
48 2 z1 [' t' a U6 v
49 #define LOG_ERROR(format, ...) \9 ?$ A4 K4 v# G3 s
50 do { \
6 N6 I2 \. L6 N8 f+ e 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# M, c7 l4 U4 i' ~( E( r' U 52 } while (0)# H0 r7 P$ x Q7 K& m) j
53 $ a! S7 r; Y+ G, `( ^
54 #define LOG_DEBUG(format, ...) \
# X- O( t d$ z7 F 55 do { \
& \5 c: Y6 Y. T& Z9 a$ p M* r 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \# w: e, V# E- [# E
57 } while (0)
4 C ~$ |) k M6 Y 58 ' E7 j/ u* W9 ^9 ^, s/ u
59 #define LOG_WARN(format, ...) \
. E2 _, }! q; D$ ~6 |6 w 60 do { \' q& U7 \' g }- o$ i: F
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
4 {4 X) j/ H' K0 @* ^4 {9 ?. A$ T 62 } while (0)
' P8 c, T, U8 b% V, A 63
2 x- N$ L5 \9 i o1 b& h 64 #define LOG_TRACE(format, ...) \9 P0 X% O$ q6 \# j, [# S
65 do { \. C; v/ h6 X, [. w
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# e! y) c- Y, b! y$ P 67 } while (0)
! s2 k) ]3 D* }6 C 68 ; i; t" c3 a2 \1 x7 h0 m
69 #define LOG_FATAL(format, ...) \2 p% l7 V6 \/ I/ I" k3 J! o' s6 x
70 do { \( @ T9 y+ e4 T) T1 Z
71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \6 N7 w1 c; N1 u" c: k# O f+ T
72 exit(1); \9 q1 i1 r; k& @$ @
73 } while (0)4 U5 A9 Y2 U+ h5 E4 I4 W
74 * t! o' W7 }4 {1 `. c& `% p' S
75 /* Assert */
0 B7 a( s5 j; @+ e0 a" A% y 76 #define ASSERT(EXP) \! J U. ?; `8 d2 D
77 do{ \- }: I6 ?: J# [" S8 I* T: c
78 if (!(EXP)) { \
/ W: u! o' {9 t7 T% s 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
) Y6 K% {( V/ J4 @- _9 Z+ F 80 exit(1); \
! d8 j; m; U- s 81 } \
: K) X g7 z a$ Q+ H. i" S 82 } while(0)
5 g; M! h2 d$ [$ E8 I8 a ] 83 # J. T: y2 T0 ?5 o' x
84 #endif
, v8 k7 r" i: p1 Z |
|