diff nuc-fw/serial/debug.c @ 136:3b5c3f3646fb

RV bring-up: lack of timer ticks fixed, still investigating the lack of "system time" messages from the RVT task
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Mon, 04 Nov 2013 23:35:11 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nuc-fw/serial/debug.c	Mon Nov 04 23:35:11 2013 +0000
@@ -0,0 +1,47 @@
+/*
+ * This module is a FreeCalypso addition for very low-level debugging.
+ * The functions implemented in this module produce "forced" serial output
+ * on the RVTMUX UART without going through the normal RV trace mechanism.
+ * Calls to these FC debug functions should be added during difficult
+ * debug sessions, but should never remain in stable checked-in code:
+ * these functions are too disruptive to be used in "production" fw images.
+ */
+
+#include "../include/config.h"
+#include "../include/sys_types.h"
+
+#include "serialswitch.h" 
+
+#include <string.h>
+
+freecalypso_raw_dbgout(char *string)
+{
+	char *p;
+	int l, cc;
+
+	p = string;
+	l = strlen(p);
+	while (l) {
+		cc = SER_tr_WriteNBytes(SER_LAYER_1, p, l);
+		p += cc;
+		l -= cc;
+	}
+}
+
+freecalypso_lldbg_intinfo()
+{
+	char strbuf[128];
+	extern unsigned IQ_TimerCount2;
+	extern unsigned TMD_System_Clock;
+	extern unsigned INT_Check_IRQ_Mask();
+
+	sprintf(strbuf, "*CPSR=%08x, IQ_TimerCount2=%u, TMD_System_Clock=%u",
+		INT_Check_IRQ_Mask(), IQ_TimerCount2, TMD_System_Clock);
+	freecalypso_raw_dbgout(strbuf);
+}
+
+freecalypso_nucidle_dbghook()
+{
+	freecalypso_raw_dbgout("*In Nucleus idle loop");
+	freecalypso_lldbg_intinfo();
+}