|
1 #ifndef _LOG_H_
2 N7 w& K4 j- q6 y" M }9 x7 a) X 2 #define _LOG_H_& r6 M4 c) c: E& o1 O3 U; k: E
3
3 ^2 h- }: z- R4 X* a1 R* {% } 4 /* 0: printf; 1: UART1 */2 i+ U. L2 D2 m C6 j F4 ~
5 #define OUTPUT_TO_UART1 1
9 r* b# L0 a1 `1 U 6 m& \9 T' ^$ m' M" [/ s
7 /* Switch Log Output */$ y, C& f, \% g+ }3 `8 H: e9 P
8 #if OUTPUT_TO_UART1; j6 }- i: I h9 M
9 /* For UART1 Initial */' S& u0 M, q( v: G0 Z. G/ i& Q
10 #include <stdlib.h>
$ a! t: l x! b5 X- s 11 #include "hw_types.h"
5 ~2 x* v! H3 O, w! P0 H 12 #include "hw_syscfg0_C6748.h"3 Q$ j0 L; y. |% P) C! Y0 t' Z
13 #include "soc_C6748.h"
( G; M! _: k( A& T$ i& ] 14 #include "psc.h" $ i! E) \! `$ m# D9 B3 i4 \) O
15 #include "gpio.h"
3 ]/ p3 d+ p* q; @" E9 C! g& T 16 #include "uart.h"
% l, j) B/ w" i3 |7 K9 L 17 #include "uartStdio.h". s, D: ^4 ]" l
18
- ~/ N' B2 r& C* C 19 #define OUTPUT UARTprintf# T) B8 b V: e! R7 G! s" x
20 #else: t) ~5 k& I) l& q% c5 P
21 #include <stdio.h>
" t8 v* U2 l# I5 @! @* X1 { 22 #include <stdbool.h>* H9 r0 u: g/ s9 k1 G
23
$ E1 u; Y# z E3 [* t8 d 24 #define OUTPUT printf0 u. e& h }1 g( U1 v# k4 n. c6 N
25 #endif- c' S- A( S) B, Q9 [7 j& C7 ?5 }
26 W4 @/ }8 v9 G) T
27 /* Log init */- V, J4 ~1 C; |/ C% M
28 #if OUTPUT_TO_UART1
! {( j, ?! K+ [' v 29 #define LOG_INIT() do { \8 m. g% M$ Y3 N9 ~- T( h! q$ q3 v
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \7 u0 l/ K x" b" R$ X( {
31 PSC_POWERDOMAIN_ALWAYS_ON, \
' y( d! t: d+ e 32 PSC_MDCTL_NEXT_ENABLE); \0 _% u0 `/ O5 a" g7 D, S
33 GPIOBank6Pin12PinMuxSetup(); \
. T4 |* L- ~/ L7 O* f 34 GPIOBank6Pin13PinMuxSetup(); \; d' j+ _+ N3 j
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \" Q" K3 U$ x: I8 z' U( _& u" P
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \8 U, S- O$ v8 J7 j) w" h# _
37 UARTStdioInit(); \
+ ~( D: u B9 _- Q 38 } while (0)4 I; w' d+ ~7 a+ Y" v
39 #else/ V/ y6 F, r- b+ F. Z
40 #define LOG_INIT() do { } while (0)9 \% ]$ M5 Y$ ?' d2 n3 ?$ c
41 #endif& }9 W3 d: d6 Z# m& P0 l$ P
42 ! [5 T: a3 f# u+ S6 o$ S7 k! v+ I
43 /* Log Output */
$ b! i8 ~9 X% w7 q4 i# K$ D, J 44 #define LOG_INFO(format, ...) \
. q, b7 k6 _( M+ q( O& s6 X w9 @ 45 do { \
7 q/ h5 W+ e) c H 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
9 V( U* d @1 ]2 d) q0 \ G" E5 a; t 47 } while (0)
5 x! p6 o- L- j% N3 N* K 48
8 q5 i9 U& A$ u7 u 49 #define LOG_ERROR(format, ...) \
- ?2 e2 X2 N* T& a, c9 T 50 do { \: M7 q& g0 s4 R1 Q2 r7 a
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
1 g& n+ o1 B! o& U: U$ U/ s! |9 E, Q 52 } while (0)
0 ?. B# g! G# J# G \. q& a# d+ L 53 $ L. ^/ e& C v
54 #define LOG_DEBUG(format, ...) \7 q* Z0 Z/ E' ~, F3 o( O0 D* E! H
55 do { \ N" ]! x; s8 X" ~
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \4 Y3 b& @; t6 w6 j! f/ u% S
57 } while (0)
0 I. T; e) J* x8 D 58
( ~4 k! V" ~5 j; {) ] 59 #define LOG_WARN(format, ...) \7 ]" y7 \, s3 \3 V
60 do { \2 X8 E, x$ M8 Z. e$ t9 `) a! p
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \. b a3 }. I$ ]" W# ~5 v: b
62 } while (0)
) B: D/ I* i- p5 a 63 1 b [4 Z$ Q7 @/ L( V
64 #define LOG_TRACE(format, ...) \
' o1 A+ c- c5 R' L- @& n' T 65 do { \
* {- A1 r9 T, ] C) l1 D; U/ i 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
( y/ H! [5 [' C. b" I' \ U 67 } while (0)' H6 U o! J, M$ ~6 a" T7 d
68 6 ?, x4 g) }$ `- w' d! [+ b2 X
69 #define LOG_FATAL(format, ...) \/ p, a1 D1 }. C( U
70 do { \
$ |0 w F2 W4 ? X( O+ A6 H4 d 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \# D3 d5 @" U- s, }* }; v6 O" T
72 exit(1); \( P: V* H5 W! p6 c
73 } while (0)
/ {- \0 [+ `) J4 }4 P 74 1 L( h+ \- J f/ K8 z, n
75 /* Assert */. {: ] K# f8 A3 i$ W& j# T' r; n
76 #define ASSERT(EXP) \) o( X. |5 p) Z% _4 c
77 do{ \
q9 W+ J l, I& [ 78 if (!(EXP)) { \
5 ~. c- H% v* d' {0 i4 B 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
3 Z9 v0 q7 @+ x6 j: i1 _9 P 80 exit(1); \) Y4 j* e5 L: U% P6 H. A7 Q' R
81 } \4 `6 w7 g1 E n: ?' ?2 ^
82 } while(0)9 x5 P7 J0 ~) _9 X8 N$ H
83 ; ~ ~* y% X% }# e, d/ y# j
84 #endif
: P9 q* @* {4 Z& P, J |
|