From 6c8a5ae62d740c2ca0e43f985b556453911b0880 Mon Sep 17 00:00:00 2001 From: hackbard <hackbard@sage.physik.uni-augsburg.de> Date: Mon, 28 Mar 2011 13:33:48 +0200 Subject: [PATCH] implemented set ir stuff --- jtag.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/jtag.c b/jtag.c index 2497cf7..9d05d5f 100644 --- a/jtag.c +++ b/jtag.c @@ -1,6 +1,7 @@ /* * jtag.c - basic jtag stuff (good excercise!) * + * build: gcc -Wall jtag.c -o jtag * author: hackbard@hackdaworld.org * */ @@ -164,12 +165,15 @@ int jtag_read_data(u8 *p,int bitlen) { memset(p,0,bitlen+7/8); count=0; + printf(" <- "); while(bitlen) { in=jtag_clock(0,0); p[count/8]|=((in&1)<<(count%8)); + printf("%d",p[count/8]&(1<<(count%8))?1:0); count+=1; bitlen-=1; } + printf("\n"); return 0; @@ -181,11 +185,14 @@ int jtag_write_data(u8 *p,int bitlen) { count=0; + printf(" -> "); while(bitlen) { - jtag_clock(0,p[count/8]&(1<<count)?1:0); + jtag_clock(0,p[count/8]&(1<<(count%8))?1:0); + printf("%d",p[count/8]&(1<<(count%8))?1:0); bitlen-=1; count+=1; } + printf("\n"); return 0; @@ -239,18 +246,20 @@ int jtag_set_ir(char *s,int bitlen) { } memset(ir,0,MAXDEV*MAXIRLEN/8*sizeof(u8)); + count=0; - printf("ir to set: "); + printf("set ir: "); while(bitlen) { - ir[count/8]|=(s[count]<<(count%8)); - printf("%d",ir[count/8]&(1<<count%8)?1:0); + if(s[count]=='1') + ir[count/8]|=(1<<(count%8)); + printf("%d",ir[count/8]&(1<<(count%8))?1:0); count+=1; bitlen-=1; } printf("\n"); jtag_enter_shift_ir(); - jtag_write_data(ir,bitlen); + jtag_write_data(ir,count); jtag_leave_shift_ir(); return 0; @@ -261,7 +270,6 @@ int main(int argc,char **argv) { t_jtag jtag; u8 io[256]; - int i; memset(&jtag,0,sizeof(t_jtag)); @@ -281,10 +289,6 @@ int main(int argc,char **argv) { jtag_set_ir("000001000001",12); jtag_enter_shift_dr(); jtag_read_data(io,64); - for(i=0;i<64;i++) { - printf("%d",io[i/8]&(1<<(i%8))?1:0); - } - printf("\n"); jtag_leave_shift_dr(); return 0; -- 2.39.5