|
|
1 #ifndef _LOG_H_
; s( \8 u+ t: i 2 #define _LOG_H_; G+ S- `+ E5 Q' b4 ~
3
, I$ d& {/ f# C 4 /* 0: printf; 1: UART1 */! w; ?* Q3 c a' |
5 #define OUTPUT_TO_UART1 1. u, B/ h0 x8 i; A0 j
6 , ^1 H+ q% x! v! p) @; `# g0 r% t4 N
7 /* Switch Log Output */
8 r' [$ w8 ? ?: b7 e8 Y 8 #if OUTPUT_TO_UART1
7 H5 J- v: k! ~" h3 a6 [ 9 /* For UART1 Initial */; d9 j( d8 O) ?1 ~# i) C( G0 f
10 #include <stdlib.h>
9 l' |+ m2 [7 C9 m7 a' T- D 11 #include "hw_types.h"
/ ^% u" e# g) c, N, Q- v! ~7 C 12 #include "hw_syscfg0_C6748.h"1 v& D6 _* j i0 g( `% k
13 #include "soc_C6748.h"! C; F+ f4 f1 i) Q- T" W
14 #include "psc.h"
0 q! O$ q" N# @ 15 #include "gpio.h" ( c$ X% @) Y; @; c, N, S- @
16 #include "uart.h"5 Y6 I# c( Z! m2 G
17 #include "uartStdio.h"( w# O) h# H; X* ]# S2 j: S7 s1 B' n t
18
8 b8 K% x6 j3 W, ` 19 #define OUTPUT UARTprintf
( Y; n4 u' e' B; h. M 20 #else
/ {4 R: _9 H% z( j8 c! B 21 #include <stdio.h>. C' {5 u8 g0 B# E( a. _
22 #include <stdbool.h># a2 {3 S# w2 T) }7 X$ H( C
23 1 _# _' [: b& d H! y! J& v5 K
24 #define OUTPUT printf" H# b2 D* _; F7 a) s. M$ m4 x
25 #endif
5 v; R @) C8 a4 ] O5 V 26
9 v1 j+ F6 x k 27 /* Log init */5 ^4 j( p3 X' m: z; ^
28 #if OUTPUT_TO_UART1
/ c7 E/ u: C: C1 D: v% O 29 #define LOG_INIT() do { \) y5 G0 T0 Y9 O: @; D. @
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \( \6 D% M1 i* g- x* N6 U
31 PSC_POWERDOMAIN_ALWAYS_ON, \! b; o) P8 T; Z
32 PSC_MDCTL_NEXT_ENABLE); \
7 f2 F- c" a/ H7 {3 s1 m7 ^) ^ 33 GPIOBank6Pin12PinMuxSetup(); \
. L& ^' y% [5 Y; _" z w2 {9 E 34 GPIOBank6Pin13PinMuxSetup(); \
: }- D6 @9 l2 ~* e. s2 x' ? 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
: \ G0 p: M3 Q! w4 d. Q0 s+ u: L 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \- b: S6 \5 T9 g/ [
37 UARTStdioInit(); \1 I, b" n7 k4 I' N' o3 z: m' V
38 } while (0)* {! Q: G# }; a. W- B+ l
39 #else; j; V0 k) E# P+ i9 J* M
40 #define LOG_INIT() do { } while (0)
' |$ _# t, }3 H/ y' E3 ?% y' V 41 #endif. i* [6 U/ ]6 R* k4 e7 R9 P: R# t
42
! `' |$ p2 S+ E7 `% R1 o0 ^ 43 /* Log Output */' C9 h4 E$ y+ h
44 #define LOG_INFO(format, ...) \
& ]5 E! e4 T% z' {, w$ R* I 45 do { \3 L6 G: d0 r' e1 }; f! [
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
3 K \5 }: K5 M, ?6 y& T 47 } while (0)
/ M3 T0 t y' Q 48
B, J- [# F- V4 D 49 #define LOG_ERROR(format, ...) \
& i! |& ?) I _- u- I$ w3 X 50 do { \% d3 i+ t; p. H/ j0 y8 d
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \2 e* I+ S+ r2 h' K6 a+ J
52 } while (0)4 t+ H* H8 ?* B6 l9 [ ]
53 + A1 m- H6 v* b9 X" b; U, q6 L
54 #define LOG_DEBUG(format, ...) \
# P$ k; C/ A8 A2 r5 p) L i 55 do { \1 v0 B& f; Y; X( ?
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \4 Z t6 j! A" ~. x
57 } while (0)
% F+ v/ G* \+ N% a 58
% U7 t3 j& ?* _% O! E8 B 59 #define LOG_WARN(format, ...) \
/ G. m. M% J; o1 d 60 do { \
; O2 \: Q, s ^9 { 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
4 Z- Y; S7 A- {, {3 ~4 x 62 } while (0)1 P7 V/ F: R! X& V$ B) W
63 " ]1 ]; [. c+ R( p3 K7 e$ \
64 #define LOG_TRACE(format, ...) \
5 m' B5 L$ d7 O' c' M3 ~ \+ J 65 do { \
: f$ X* \. Q+ t H; j 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
0 x( Z- U( I l0 k 67 } while (0)+ { w4 j& Y; U, O$ b/ |
68 " [! C8 G i' ^4 e' V
69 #define LOG_FATAL(format, ...) \) g, `. x7 P/ i
70 do { \
4 @- U9 q9 h( l 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
7 t8 E6 V# P( S* ~7 Y* d. p 72 exit(1); \, g3 \7 o4 ]0 f) h" {% W* l
73 } while (0): d. u( |* z4 t2 K* T
74 8 J/ n" B7 ~9 ]1 r4 F
75 /* Assert */
7 S( T V+ i/ [7 N6 e/ Z 76 #define ASSERT(EXP) \) C4 z0 s3 Y$ H4 R; Y6 D" ^
77 do{ \& U" o8 l" a7 F1 k! B4 h
78 if (!(EXP)) { \3 D( V" s: a6 O3 R
79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \
6 I+ j& q5 i6 O5 X 80 exit(1); \
. M+ f) S+ ~% \4 A b/ Y 81 } \
& U0 ]& [. e J$ a) o6 y" B) R 82 } while(0)" u9 ~/ T8 m+ G0 |; k7 G
83
8 s1 c: O9 ]) W8 H 84 #endif
0 t4 g# i# W0 d( U: b& O |
|