From d27d75e4cedfab56742717f3ac990be059f8e168 Mon Sep 17 00:00:00 2001 From: travisutk Date: Fri, 5 Feb 2010 04:54:12 +0000 Subject: [PATCH] Plugin architecture stuff. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@299 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- firmware/apps/glitch/glitch.c | 4 +- firmware/apps/plugins/Makefile | 3 ++ firmware/apps/plugins/ps2.c | 74 ++++++++++++++++++++++++++++++++++ firmware/goodfet.c | 3 -- firmware/include/apps.h | 1 + firmware/include/ps2.h | 1 + 6 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 firmware/apps/plugins/Makefile create mode 100644 firmware/apps/plugins/ps2.c create mode 100644 firmware/include/ps2.h diff --git a/firmware/apps/glitch/glitch.c b/firmware/apps/glitch/glitch.c index 65742bc..0ff76f1 100644 --- a/firmware/apps/glitch/glitch.c +++ b/firmware/apps/glitch/glitch.c @@ -23,8 +23,8 @@ void glitchprime(){ TACTL|=TACLR; //Clear TimerA Config TACTL|= TASSEL_SMCLK | //SMCLK source, - MC_1; //Count up to CCR0 - //TAIE; //Enable Interrupt + MC_1 | //Count up to CCR0 + TAIE; //Enable Interrupt CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = glitchcount; diff --git a/firmware/apps/plugins/Makefile b/firmware/apps/plugins/Makefile new file mode 100644 index 0000000..fc5470e --- /dev/null +++ b/firmware/apps/plugins/Makefile @@ -0,0 +1,3 @@ + +ps2.hex: + cd ../.. && moreapps=apps/plugins/ps2.o make clean all && mv goodfet.hex apps/plugins/ps2.hex diff --git a/firmware/apps/plugins/ps2.c b/firmware/apps/plugins/ps2.c new file mode 100644 index 0000000..53b939c --- /dev/null +++ b/firmware/apps/plugins/ps2.c @@ -0,0 +1,74 @@ +/*! \file glitch.c + \author Travis Goodspeed + \brief PS2 Timing Monitor for GoodFET + + This module spies on PS/2. For now, it just reports the + inter-character timing information. +*/ + +#include "platform.h" +#include "command.h" +#include "ps2.h" +#include "jtag.h" + + +u16 mclock=0; +u32 clock=0; + +// Timer A0 interrupt service routine +interrupt(TIMERA0_VECTOR) Timer_A (void) +{ + if(!clock++) + mclock++; + return; +} + + + +/** Pins (Clk, Dat) + TDI P5.1 + TDO P5.2 +*/ + +// This is just a plugin for now. +#define ps2handle pluginhandle + +u32 oldclock=0; +//! Handles a monitor command. +int ps2handle(unsigned char app, + unsigned char verb, + unsigned int len){ + switch(verb){ + case START: + WDTCTL = WDTPW + WDTHOLD; // Stop WDT + TACTL = TASSEL1 + TACLR; // SMCLK, clear TAR + CCTL0 = CCIE; // CCR0 interrupt enabled + CCR0 = 0x100; //clock divider + TACTL |= MC_3; + _EINT(); // Enable interrupts + + + P5DIR&=~(TDI+TDO);//input mode + P5OUT=0; // pull down + + debugstr("Waiting for a keypress."); + //Wait for a keypress. + + while(1){ + //Debounce the 1s polling + while((P5IN&TDI && P5IN&TDO)) + while((P5IN&TDI));// && P5IN&TDO)); + + //Transmit the data only if it is new. + + if((cmddatalong[0]=clock-oldclock)>0x100) + txdata(app,verb,4); + oldclock=clock; + } + break; + case STOP: + default: + debugstr("Unknown ps2 verb."); + txdata(app,NOK,0); + } +} diff --git a/firmware/goodfet.c b/firmware/goodfet.c index 3da4d04..1e9b015 100644 --- a/firmware/goodfet.c +++ b/firmware/goodfet.c @@ -13,9 +13,6 @@ #include "glitch.h" -//LED on P1.0 -//IO on P5 - //! Initialize registers and all that jazz. void init(){ int i; diff --git a/firmware/include/apps.h b/firmware/include/apps.h index f33a315..e2b93fb 100644 --- a/firmware/include/apps.h +++ b/firmware/include/apps.h @@ -15,5 +15,6 @@ #define OCT 0x70 #define GLITCH 0x71 +#define PLUGIN 0x72 #define DEBUGAPP 0xFF diff --git a/firmware/include/ps2.h b/firmware/include/ps2.h new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/firmware/include/ps2.h @@ -0,0 +1 @@ + -- 2.20.1