|
1 #ifndef _LOG_H_* {6 n3 p: y& H) x$ F. W
2 #define _LOG_H_
/ b7 I2 K9 k$ g! S 3 ! E: x( ~2 W& c* N0 u5 ]8 ]% b
4 /* 0: printf; 1: UART1 */
6 [0 ^9 g9 g2 k# R9 a M. k' | 5 #define OUTPUT_TO_UART1 1% q2 U$ z% z4 v1 u
6 M, y5 p; a/ Z* ^; ~6 T
7 /* Switch Log Output */6 I# B1 F5 s4 l; d% X
8 #if OUTPUT_TO_UART11 r' w: y5 }8 U; T
9 /* For UART1 Initial */9 G) f7 h' [1 M5 g7 a
10 #include <stdlib.h>
+ ~1 r; s% r6 x7 A2 W: Q' M 11 #include "hw_types.h" ( n' |! t' x) b3 P" V
12 #include "hw_syscfg0_C6748.h": r- ]; p/ s6 p5 w# ?
13 #include "soc_C6748.h"
. l& Y8 L1 w" R1 Q& ~. R( A) b 14 #include "psc.h"
0 \$ ?' F8 i5 L# y; A 15 #include "gpio.h" 9 h8 @$ z% d/ z; ?+ Q; u
16 #include "uart.h"
( h' r `- U# | 17 #include "uartStdio.h"( y5 {2 I+ I4 ?# T2 e
18 , x8 w0 A; N1 H8 x& G
19 #define OUTPUT UARTprintf
. s9 q. b: L5 Y, b- \1 a7 c 20 #else9 ?0 ?0 s. s& r5 L5 C
21 #include <stdio.h>
" {+ ^7 f$ t+ t. ^( S2 ^0 @9 W 22 #include <stdbool.h>2 Y9 Q: S0 L9 \) H5 H6 y9 E, N
23 9 B% m, ~& M" {
24 #define OUTPUT printf$ M, |5 q7 f0 s# g7 Z4 Y* l0 }6 f+ |
25 #endif
5 A. b) o! x9 \ 26
0 w/ C# K8 e! G 27 /* Log init */2 |- z6 |3 ?7 i+ w
28 #if OUTPUT_TO_UART1# P- x1 c% b0 A. E; Y
29 #define LOG_INIT() do { \4 U! ?0 w( H- }. j0 @. a! S
30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \" Y0 P A D# Y2 A7 ]0 U
31 PSC_POWERDOMAIN_ALWAYS_ON, \
9 K3 r( F- C4 D9 H- i 32 PSC_MDCTL_NEXT_ENABLE); \6 @" y( ]+ H S8 h* b
33 GPIOBank6Pin12PinMuxSetup(); \' \2 Y* Z4 S( T2 d4 @* ` p
34 GPIOBank6Pin13PinMuxSetup(); \
0 {+ E7 O# n q7 a+ T 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \5 T3 \# H7 w: J% z6 g/ o2 K6 n
36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
* B$ w9 V. B& P6 [3 I/ Q8 O- e$ t9 B 37 UARTStdioInit(); \
1 M) i2 F9 p" a3 ~6 m. V 38 } while (0)+ S' P! ]) d" N% m
39 #else
: M9 E2 h+ F5 D' v i 40 #define LOG_INIT() do { } while (0). Z* \' ~; z0 Y* j, C ^+ R& _% z
41 #endif4 u2 |( h! Y6 S6 c: a: A
42 9 B# t- ?0 g( @8 o, N) I& K2 L7 N
43 /* Log Output */
9 C7 s! \/ i8 W% z 44 #define LOG_INFO(format, ...) \
3 g5 }" [* t) z" D" C3 z4 F! H 45 do { \& [& `% G7 N( P2 i C% O
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \/ n) Y& _. z" G/ C
47 } while (0)
! s9 e$ V3 g/ U4 X7 k9 \ 48
' R/ C) W+ f% O, _# |+ ]6 ` 49 #define LOG_ERROR(format, ...) \
5 H$ I3 K0 H1 z 50 do { \
" i8 n5 g# G- q4 t% A/ r 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \2 `" }- y+ ]. y* R
52 } while (0)
5 d7 a& n0 Q3 B* E 53
$ D6 c, ~8 R" |. C6 ?) {, A& n 54 #define LOG_DEBUG(format, ...) \
! Y, u s% I1 M% `$ j 55 do { \
9 z7 P6 l) u0 ?; Q/ V9 R 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
7 b3 y# {- v% u9 {8 {/ u; h* m, l 57 } while (0)
# |& |& Y) t7 I9 M. q" j 58 4 Q! O: t/ v1 Z6 C
59 #define LOG_WARN(format, ...) \
3 k& d4 C* q# s. e, i! U2 m$ Q. e 60 do { \: C/ ?! T4 v9 d: [. N/ u
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
: i9 Q. ^# `+ O& w' g2 g: Q$ Y5 k 62 } while (0)! C0 Z; _1 o; ?6 V) k; O& ~( q
63
5 N& h; S9 @/ o1 M- c+ B0 t7 u 64 #define LOG_TRACE(format, ...) \
0 J2 {$ g! A3 @+ r, O7 O9 ~ 65 do { \
; X& ]: Z: S- v5 ^8 L# K9 ~3 e9 i 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \ o1 G) q7 S. c- F
67 } while (0)
; I' P& V9 b8 z5 T 68 : G+ Q1 q0 S6 I% O3 M0 E" \
69 #define LOG_FATAL(format, ...) \) v7 }# M- ~" G
70 do { \
5 t7 o) w" @* N$ X5 e o 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
% W) a6 z0 w( n6 ~, y2 y1 i6 A 72 exit(1); \
+ G+ p+ T* u" _ ]( u. i) E' q 73 } while (0)
) ]3 M+ y9 c6 U; x2 n: `- M8 R 74 / J2 u+ ]8 k& Z% l
75 /* Assert */, \% h& L8 d4 I& k. Y0 L
76 #define ASSERT(EXP) \
. @/ i; H: r4 `! e K& ?2 r 77 do{ \* q, I3 Z# B0 y% Q" P* u* `
78 if (!(EXP)) { \
* @! @% E% {" O' Q 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \! ]" ~0 \. T0 z+ `: M/ Q1 ]- x+ L
80 exit(1); \
/ e w, h1 u |: X 81 } \
) A( ^+ p* {0 J; `# h7 t K 82 } while(0): w) O' C! D, O3 B9 I
83 / M3 A0 B1 `5 h
84 #endif% x1 r! C9 f T5 L$ G
|
|