Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/famicom-dumper.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCluster <clusterrr@clusterrr.com>2020-07-15 19:22:59 +0300
committerCluster <clusterrr@clusterrr.com>2020-07-15 19:22:59 +0300
commit8a2d12407b61d9ccee7b3d606951a16886544cc9 (patch)
tree49c98e8227afd5f989c96bef28ec1a8452b4d1fd
parentf713ed1fb487c46bd71e99048c9f1668dac48428 (diff)
Removed deprecated JTAG-related code
-rw-r--r--Makefile2
-rw-r--r--defines.h16
-rw-r--r--dumper.c77
-rw-r--r--famicom-dumper.hex564
-rw-r--r--jtag.c175
-rw-r--r--jtag.h16
-rw-r--r--jtag_commands.h7
7 files changed, 280 insertions, 577 deletions
diff --git a/Makefile b/Makefile
index ccecbc3..444daec 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ PROGRAMMER_TYPE ?= avr109
PROGRAMMER_PORT ?= com28
PRG = famicom-dumper
-OBJ = dumper.o usart.o comm.o jtag.o
+OBJ = dumper.o usart.o comm.o
#MCU_TARGET = at90s2313
#MCU_TARGET = at90s2333
#MCU_TARGET = at90s4414
diff --git a/defines.h b/defines.h
index 53116a7..ada87b0 100644
--- a/defines.h
+++ b/defines.h
@@ -1,12 +1,12 @@
+#ifndef _DEFINES_H_
+#define _DEFINES_H_
+
#define F_CPU 8000000UL
-//#define F_CPU 11059200UL
-//#define UART_BAUD 38400UL
#define UART_BAUD 250000UL
#define RECV_BUFFER 1050
-//#define SEND_DELAY 100
-#define JTAG_PORT B
-#define TMS_PIN 2
-#define TCK_PIN 4
-#define TDO_PIN 3
-#define TDI_PIN 1
+#define COOLBOY_GPIO_PORT B
+#define COOLBOY_RD_PIN 4
+#define COOLBOY_WR_PIN 3
+
+#endif \ No newline at end of file
diff --git a/dumper.c b/dumper.c
index 4e46e2b..c2f75b0 100644
--- a/dumper.c
+++ b/dumper.c
@@ -1,7 +1,7 @@
/* Famicom Dumper/Programmer
*
* Copyright notice for this file:
- * Copyright (C) 2016 Cluster
+ * Copyright (C) 2020 Cluster
* http://clusterrr.com
* clusterrr@clusterrr.com
*
@@ -29,7 +29,7 @@
#include <inttypes.h>
#include "usart.h"
#include "comm.h"
-#include "jtag.h"
+#include "dumper.h"
#define LED_RED_ON PORTB |= (1<<7)
#define LED_RED_OFF PORTB &= ~(1<<7)
@@ -134,8 +134,8 @@ static unsigned char read_coolboy_byte(unsigned int address)
set_address(address);
PHI2_HI;
ROMSEL_LOW;
- PORTB |= 1<<TDO_PIN;
- PORTB &= ~(1<<TCK_PIN);
+ COOLBOY_PORT |= 1<<COOLBOY_WR_PIN;
+ COOLBOY_PORT &= ~(1<<COOLBOY_RD_PIN);
_delay_us(1);
return PIND;
}
@@ -233,10 +233,10 @@ static void read_chr_crc_send(unsigned int address, unsigned int len)
static void read_coolboy_send(unsigned int address, unsigned int len)
{
LED_GREEN_ON;
- PORTB |= 1<<TCK_PIN;
- PORTB |= 1<<TDO_PIN;
- DDRB |= 1<<TCK_PIN;
- DDRB |= 1<<TDO_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_WR_PIN;
+ COOLBOY_DDR |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_DDR |= 1<<COOLBOY_WR_PIN;
comm_start(COMMAND_PRG_READ_RESULT, len);
while (len > 0)
{
@@ -246,11 +246,12 @@ static void read_coolboy_send(unsigned int address, unsigned int len)
}
set_address(0);
ROMSEL_HI;
- PORTB |= 1<<TCK_PIN;
- PORTB |= 1<<TDO_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_WR_PIN;
- jtag_shutdown();
- LED_GREEN_OFF;
+ COOLBOY_DDR &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
+ COOLBOY_PORT &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
+ LED_GREEN_OFF;
}
static void write_prg_byte(unsigned int address, uint8_t data)
@@ -333,8 +334,8 @@ static void write_prg_flash_command(unsigned int address, uint8_t data)
static void write_coolboy_flash_command(unsigned int address, uint8_t data)
{
- PORTB |= 1<<TCK_PIN;
- PORTB |= 1<<TDO_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_WR_PIN;
ROMSEL_HI;
PRG_READ;
set_address(address);
@@ -344,11 +345,11 @@ static void write_coolboy_flash_command(unsigned int address, uint8_t data)
ROMSEL_LOW;
_delay_us(1);
- PORTB &= ~(1<<TDO_PIN);
+ PORTB &= ~(1<<COOLBOY_WR_PIN);
_delay_us(1);
- PORTB |= 1<<TDO_PIN;
+ PORTB |= 1<<COOLBOY_WR_PIN;
set_address(0);
ROMSEL_HI;
MODE_READ;
@@ -437,10 +438,10 @@ static int erase_prg_flash()
static int erase_coolboy_sector()
{
LED_RED_ON;
- PORTB |= 1<<TCK_PIN;
- PORTB |= 1<<TDO_PIN;
- DDRB |= 1<<TCK_PIN;
- DDRB |= 1<<TDO_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_WR_PIN;
+ COOLBOY_DDR |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_DDR |= 1<<COOLBOY_WR_PIN;
ROMSEL_HI;
write_coolboy_flash_command(0x0000, 0xF0);
@@ -464,7 +465,8 @@ static int erase_coolboy_sector()
set_address(0);
ROMSEL_HI;
- jtag_shutdown();
+ COOLBOY_DDR &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
+ COOLBOY_PORT &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
LED_RED_OFF;
return timeout < 3000;
}
@@ -547,10 +549,10 @@ static int write_prg_flash(unsigned int address, unsigned int len, uint8_t* data
static int write_coolboy(unsigned int address, unsigned int len, uint8_t* data)
{
LED_RED_ON;
- PORTB |= 1<<TCK_PIN;
- PORTB |= 1<<TDO_PIN;
- DDRB |= 1<<TCK_PIN;
- DDRB |= 1<<TDO_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_PORT |= 1<<COOLBOY_WR_PIN;
+ COOLBOY_DDR |= 1<<COOLBOY_RD_PIN;
+ COOLBOY_DDR |= 1<<COOLBOY_WR_PIN;
ROMSEL_HI;
uint8_t ok = 1;
while (len > 0)
@@ -613,7 +615,8 @@ static int write_coolboy(unsigned int address, unsigned int len, uint8_t* data)
data = d;
}
ROMSEL_HI;
- jtag_shutdown();
+ COOLBOY_DDR &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
+ COOLBOY_PORT &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
LED_RED_OFF;
return ok;
}
@@ -761,7 +764,8 @@ int main (void)
sei();
USART_init();
init_ports();
- jtag_shutdown();
+ COOLBOY_DDR &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
+ COOLBOY_PORT &= ~((1<<COOLBOY_RD_PIN) | (1<<COOLBOY_RD_PIN));
LED_RED_OFF;
LED_GREEN_OFF;
@@ -938,25 +942,6 @@ int main (void)
comm_start(COMMAND_CHR_WRITE_DONE, 0);
break;
- case COMMAND_JTAG_SETUP:
- jtag_setup();
- comm_start(COMMAND_JTAG_RESULT, 1);
- comm_send_byte(1);
- break;
-
- case COMMAND_JTAG_SHUTDOWN:
- jtag_shutdown();
- comm_start(COMMAND_JTAG_RESULT, 1);
- comm_send_byte(1);
- break;
-
- case COMMAND_JTAG_EXECUTE:
- address = recv_buffer[0] | ((uint16_t)recv_buffer[1]<<8);
- comm_start(COMMAND_JTAG_RESULT, 1);
- LED_RED_ON;
- comm_send_byte(jtag_execute(address, (uint8_t*) &recv_buffer[2]));
- LED_RED_OFF;
- break;
case COMMAND_BOOTLOADER:
cli();
MCUCSR = 0;
diff --git a/famicom-dumper.hex b/famicom-dumper.hex
index 20bd1de..216fac6 100644
--- a/famicom-dumper.hex
+++ b/famicom-dumper.hex
@@ -8,7 +8,7 @@
:100070000C9458000C9458000C9458000C945800A0
:100080000C9458000C9458000C94580011241FBE76
:10009000CFEFD0E1DEBFCDBF25E0A0E0B1E001C0F1
-:1000A0001D92AC33B207E1F70E94A9050C94040C31
+:1000A0001D92A732B207E1F70E942C030C9462095B
:1000B0000C9400008BBB95BB95FD06C0809162003F
:1000C0008061809362000895809162008F7E8093AA
:1000D00062000895CF93DF932FEF22BB11BAC2E6DF
@@ -49,338 +49,254 @@
:1003000008958D7F80936200F4CF1F920F920FB6F5
:100310000F9211242F933F934F935F936F937F938B
:100320008F939F93AF93BF93EF93FF935F9B05C012
-:100330008CB10E94A6025F99FBCFFF91EF91BF9114
+:100330008CB10E9490025F99FBCFFF91EF91BF912A
:10034000AF919F918F917F916F915F914F913F916D
:100350002F910F900FBE0F901F901895CF93DF93A2
-:1003600064E070E082E10E948102C69A1BBA15BA6D
+:1003600064E070E082E10E945102C69A1BBA15BA9D
:10037000C2E6D0E088818061888382E08A95F1F7C7
-:1003800000C081B182FB882780F90E9469021BBAF4
+:1003800000C081B182FB882780F90E9479021BBAE4
:1003900084E085BB88818061888382E08A95F1F75B
-:1003A00000C081B182FB882780F90E9469021BBAD4
+:1003A00000C081B182FB882780F90E9479021BBAC4
:1003B00088E085BB88818061888382E08A95F1F737
-:1003C00000C081B182FB882780F90E9469021BBAB4
+:1003C00000C081B182FB882780F90E9479021BBAA4
:1003D0008CE085BB88818061888382E08A95F1F713
-:1003E00000C081B182FB882780F90E9469021BBA94
+:1003E00000C081B182FB882780F90E9479021BBA84
:1003F00015BA888180618883DF91CF91089581E06B
:1004000089B91092900088E98AB9E5E9F0E0808125
:100410008660808308955D9BFECF8CB90895982FE8
:1004200092959F709A3070F4905D8F708A3040F48E
:10043000805D5D9BFECF9CB95D9BFECF8CB908951E
-:10044000895CF7CF995CF1CFFC018081882339F07A
-:100450005D9BFECF8CB9319680818823C9F70895C2
-:100460009C01411551056105710599F080E090E00E
-:10047000A0E0B0E0F901E80FF91FE0815D9BFECF3D
-:10048000ECB90196A11DB11D84179507A607B70702
-:1004900088F3089510920601109205011092200130
-:1004A000109208010895582F90910001382F20E0F4
-:1004B0004CE801C03695892F8327969580FD9427B7
-:1004C0002F5F2830B9F790930001852F0E940B020F
-:1004D00008950E94530280910301909104010196B6
-:1004E0009093040180930301209101013091020156
-:1004F0008217930709F00895809100010E940B0272
-:100500000895FF920F931F93F82E8B011092000114
-:1005100086E40E9453028F2D0E945302802F0E9476
-:100520005302812F0E945302109302010093010194
-:100530001092040110920301012B21F4809100011B
-:100540000E940B021F910F91FF900895782F8091C8
-:100550000801882319F0763409F0089510920801F3
-:1005600040910501509106014115510509F440C023
-:1005700030910701272F90E06CE801C02695832F6A
-:100580008227369580FD36279F5F9830B9F73093E4
-:1005900007014130510589F1423051050CF44AC040
-:1005A0004230510509F43FC04330510579F1FA0159
-:1005B000349784E0EA31F80708F053C080911E01B7
-:1005C00090911F01E817F90708F447C080911E01B8
-:1005D00090911F01E817F90791F4332309F04EC0F9
-:1005E00081E0809320011092060110920501089588
-:1005F0001092070110922001BBCF709321014F5F31
-:100600005F4F5093060140930501089520911E010C
-:1006100030911F01972F80E0822B932B90931F0125
-:1006200080931E01ECCF872F90E090931F01809361
-:100630001E01E5CF4115510509F0B9CF7634F9F225
-:1006400081E08093080182E060E070E00E94810216
-:100650004091050150910601D2CFEE5DFE4F7083AF
-:10066000CECF109206011092050181E0809308011F
-:1006700084E060E070E00E948102089581E0809350
-:10068000080183E060E070E00E948102ACCF88B393
-:10069000817F88BB87B3866187BBBB9810920901B5
-:1006A000089588B3817E88BB87B3817E87BB089518
-:1006B0002F923F924F925F926F927F928F929F9272
-:1006C000AF92BF92CF92DF92EF92FF920F931F9360
-:1006D000DF93CF93CDB7DEB72A970FB6F894DEBF7E
-:1006E0000FBECDBF9C838B837E836D831816190646
-:1006F0000CF079C020901C0130901D0160901A010F
-:1007000070901B0120911801309119013A832983BF
-:100710008090140190901501A0901601B0901701DF
-:1007200040911001509111016091120170911301DB
-:10073000E0900C01F0900D0100910E0110910F015D
-:1007400080910A0190910B019A8789875090090145
-:10075000CC24DD24ED81FE81EC0DFD1DE0819DEFBB
-:10076000591609F443C0AEEF5A1609F4C1C055201A
-:1007700009F06EC05E2E1A8619860894C11CD11C21
-:100780002B813C81C216D3062CF330921D0120929E
-:100790001C0170921B0160921A0189819A819093C9
-:1007A0001901809318018092140190921501A09272
-:1007B0001601B092170140931001509311016093FC
-:1007C000120170931301E0920C01F0920D0100935D
-:1007D0000E0110930F01A985BA85B0930B01A09368
-:1007E0000A015092090121E030E068C029853A856C
-:1007F000232B09F0BDC08E2E9924AA24BB2440E0EF
-:1008000050E060E070E0EE24FF248701D501C401D0
-:1008100086709070A070B0700097A105B10509F4C2
-:1008200080C084309105A105B10509F42DC1823045
-:100830009105A105B10509F427C10697A105B105E8
-:1008400009F469C0A985BA851196BA87A98795CF99
-:1008500030921D0120921C0170921B0160921A01BE
-:10086000A981BA81B0931901A09318018092140153
-:1008700090921501A0921601B092170140931001B9
-:10088000509311016093120170931301E0920C01D7
-:10089000F0920D0100930E0110930F01E985FA8586
-:1008A000F0930B01E0930A015092090188B3817E15
-:1008B00088BB87B3817E87BB20E030E0C9012A96E0
-:1008C0000FB6F894DEBF0FBECDBFCF91DF911F9161
-:1008D0000F91FF90EF90DF90CF90BF90AF909F90DF
-:1008E0008F907F906F905F904F903F902F900895E2
-:1008F00029853A85232B09F05CC08E2F90E09A83DE
-:100900008983222433246624772489859A85019655
-:100910009A87898732CF29853A852830310509F0B1
-:1009200091CF80FE95C0C29AC49AE114F1040105EA
-:10093000110571F020E030E088B390E1892788BB91
-:1009400088B3892788BB2F5F3F4F2E153F05A1F73E
-:10095000411551056105710549F080E090E022E004
-:100960002A95F1F7019684179507C9F755246ACFA0
-:1009700089859A85049708F06DC081FC8BC08E2F05
-:1009800090E0A0E0B0E029853A852150304E220F5A
-:10099000331F220F331F220F331F04C0880F991FEC
-:1009A000AA1FBB1F2A95D2F7482B592B6A2B7B2BEA
-:1009B0002DCFA985BA85119709F48DC02114310472
-:1009C00079F4E7FD0AC02E2E332429813A8162167C
-:1009D000730608F49ACF552498CFA1E02A2E312C23
-:1009E0008E2F90E0DC01A170B070F2E04F2E4E220D
-:1009F000E2FD6AC0EFEFFFEF2114310409F476C085
-:100A000020E030E01EC0C29A442001F1C19AC4988F
-:100A1000C49A8FEFEF3FF80759F086B38695869515
-:100A2000869590E081709070E817F90709F061C031
-:100A30000894611C711C2F5F3F4F2215330508F08D
-:100A400055C0109701F7C298442001F7C198DFCF35
-:100A5000C2986ACF8E2F90E0A0E0B0E029853A8559
-:100A60002550304E220F331F220F331F220F331F0A
-:100A700004C0880F991FAA1FBB1F2A95D2F7482BC5
-:100A8000592B6A2B7B2BC2CEE985FA85349709F066
-:100A9000D4CE47CF8E2F90E0A0E0B0E029853A85F4
-:100AA0002150304E220F331F220F331F220F331FCE
-:100AB00004C0880F991FAA1FBB1F2A95D2F7E82AE6
-:100AC000F92A0A2B1B2BA2CEE695E695E695F0E0D7
-:100AD000E170F07091CFE8871F82E981FA812F8160
-:100AE0003885E22BF32BFA83E9830FCF22243324BA
-:100AF0006CCF30921D0120921C0170921B016092FC
-:100B00001A01A981BA81B0931901A09318018092AA
-:100B1000140190921501A0921601B0921701409312
-:100B20001001509311016093120170931301E09230
-:100B30000C01F0920D0100930E0110930F01E98555
-:100B4000FA85F0930B01E0930A018EEF809309017F
-:100B5000ADCE78940E94FF0187B3806C87BB87EB92
-:100B6000809361008FEF8093620012981A9A82BB83
-:100B700011BA1BBA15BA909162009061909362000D
-:100B80008ABB84BB0E945103C798C6980E944A0240
-:100B900060E070E080E00E948102BEE6AB2EB12CE6
-:100BA0008FB589628FBD8EB581608EBD20E030E04B
-:100BB000E0E041E050E060E070E0809120018111D0
-:100BC00038C08FB589628FBD8EB581608EBD4031D2
-:100BD00087E258076105710508F450C0E11153C060
-:100BE000C90101968E3691050CF455C0E1E09C01D7
-:100BF0002456310939BD28BD9C01C501821B930BC8
-:100C0000853191050CF059C08B3091052CF044E1F1
-:100C100050E0481B590BCA01880F991F9093790027
-:100C20008093780040E050E0BA0180912001882351
-:100C300041F210922001109279001092780019BCB4
-:100C400018BC1FBC809121018A3109F4D3C4C8F5B6
-:100C50008D3009F480C308F04BC0873009F4B6C367
-:100C600008F06AC0853009F4BFC4863009F098CF17
-:100C700060E070E081E00E94810292CF4F5F5F4FA1
-:100C80006F4F7F4F9ACF2150310989F4E0E040E067
-:100C900050E0BA0192CF8436910524F023563109F1
-:100CA00039BD28BD9C0140E050E0BA0186CF243612
-:100CB00031050CF4A2CFC9019ACF40E050E0BA014F
-:100CC0007CCF833209F424C408F1863209F482C24D
-:100CD00008F484C1883209F433C508F4DAC48E3FBD
-:100CE00009F05ECFF89414BEE0E0F8EF099558CF14
-:100CF000833109F4EBC308F08EC08F3009F45EC471
-:100D0000813109F04DCF0E94AE014ACF8D3109F4F7
-:100D10005AC308F047C08B3109F4F5C08C3109F093
-:100D20003FCF0E94470361E070E08FE10E948102A3
-:100D300081E00E94690234CF893009F4EEC28B3021
-:100D400009F02ECF009122018091230110E0182B91
-:100D5000C091240180912501D0E0D82BC69ABE0114
-:100D60008CE00E948102209751F0C8010E946A0025
-:100D70000E94690221970F5F1F4F2097B1F71BBA9E
-:100D800015BA809162008061809362008091620058
-:100D90008160809362008091620082608093620033
-:100DA000C698FECE8E3109F4F9C2823209F0F8CE2F
-:100DB000009122018091230110E0182BC0912401A1
-:100DC00080912501D0E0D82BC69AC49AC39ABC9AC8
-:100DD000BB9ABE0188E00E948102209751F0C801B1
-:100DE0000E9487000E94690221970F5F1F4F209782
-:100DF000B1F71BBA15BA80916200806180936200DE
-:100E000080916200826080936200C49AC39A0E94BB
-:100E10005103C698C5CE883109F415C3893109F04C
-:100E2000BFCEE090220180912301F12CF82A00919D
-:100E300024018091250110E0182BC79A0115110596
-:100E400009F45AC076E2872E71E0972EF401619082
-:100E50004F0160EF80E090E80E94FC006AEA85E5BF
-:100E600095E80E94FC0065E58AEA92E80E94FC0091
-:100E700060EA85E595E80E94FC00E701D068662DF0
-:100E8000CE010E94FC00F5E8FA95F1F70000C12CB4
-:100E9000D12C712C0DC025E82A95F1F700004FEFF9
-:100EA000C41AD40A782E58ECC516D10409F488C0A7
-:100EB000CE010E9451019091620092609093620075
-:100EC0008711E9CF6710E7CF80916200826080933D
-:100ED00062001BBA15BA8091620080618093620043
-:100EE0008AE0C816D1040CF069C09FEFE91AF90A2C
-:100EF0000150110909F0AACFC79860E070E08AE0BC
-:100F00000E9481024DCE009122018091230110E0C8
-:100F1000182BE090240180912501F12CF82AC79A22
-:100F200017FD6AC4E114F10409F431C286E2882E87
-:100F300081E0982EF40171904F0160EF80E090E025
-:100F40000E94A3006AEA85E595E00E94A30065E59A
-:100F50008AEA92E00E94A30060EA85E595E00E949B
-:100F6000A300672DC8010E94A300E801D068C12C2E
-:100F7000D12C09C087EC90E00197F1F700C0000088
-:100F80009FEFC91AD90ACE010E946A00781609F4A7
-:100F90003CC2EAE0CE16D10469F71BBA15BA8091BB
-:100FA0006200806180936200809162008E7F8093F6
-:100FB000620080916200826080936200C798F0CDE9
-:100FC000809162008260809362001BBA15BA8091A2
-:100FD0006200806180936200C798E2CD843209F498
-:100FE00057C0853209F0DCCDC79A60EF80E090E809
-:100FF0000E94FC006AEA8AEA9AE80E94FC0065E521
-:1010000085E595E80E94FC0060E88AEA9AE80E947B
-:10101000FC006AEA8AEA9AE80E94FC0065E585E538
-:1010200095E80E94FC0060E380E090E80E94FC00EC
-:10103000C0E0D0E010C0C83B9BE0D90791F08091A0
-:1010400062008260809362008FEC97E00197F1F775
-:1010500000C00000219680E090E80E9451018F3F7F
-:1010600051F71BBA15BA80916200806180936200CB
-:101070008091620081608093620080916200826052
-:1010800080936200C798C83BDB4009F489CD35CF17
-:10109000E090220180912301F12CF82A0091240193
-:1010A0008091250110E0182BC79AC49AC39ABC9A64
-:1010B000BB9A8091620082608093620001151105E5
-:1010C00009F480C066E2C62E61E0D62E9701207E2C
-:1010D0004601F601E701712C05C0CE01807E28177C
-:1010E0003907C1F581918F3F09F073942196015022
-:1010F00011096F0191F7772009F464C06AEA8AEA5E
-:101100009AE00E94CB0065E585E595E00E94CB0062
-:1011100065E280E090E00E94CB007A94672D80E049
-:1011200090E00E94CB00F40161914F016F3F71F09C
-:10113000C7010E94CB00C7010196772079F07C019E
-:101140007A94F40161914F016F3F91F7FFEFEF1A2D
-:10115000FF0AE9CF7110D2CF7E01B8CF69E280E0FB
-:1011600090E00E94CB00FAE1FA95F1F700C0689494
-:10117000F7F850EA452E56E8552E66246394712CF4
-:10118000312C21E0821A91080CC0FAE1FA95F1F7AE
-:1011900000C021E0421A510861087108382E09F494
-:1011A00022C3C7010E9487009091620092609093D1
-:1011B00062008311EACFF40190819311E6CF01150B
-:1011C000110551F6809162008260809362000E9456
-:1011D000510392CE8090220180912301912C982A74
-:1011E000009124018091250110E0182BC79A80916D
-:1011F00062008260809362000115110509F487C0C6
-:1012000046E2C42E41E0D42E9401207E1601F60160
-:10121000E401712C06C0CE01807E2817390709F041
-:1012200040C081918F3F09F07394219601501109BC
-:101230006F0189F7772009F46AC060EF80E090E8D9
-:101240000E94FC006AEA8AEA9AE80E94FC0065E5CE
-:1012500085E595E80E94FC0065E280E090E80E9448
-:10126000FC007A94672D80E090E80E94FC00F10178
-:1012700061911F016F3F89F074016894F7F8C7010D
-:101280000E94FC00FFEF8F1A9F0A772071F07A947A
-:10129000F10161911F016F3F79F72FEF821A920AD6
-:1012A000E6CF7110CACF4E01AFCF69E280E090E87F
-:1012B0000E94FC002AE12A95F1F700C030EA432E93
-:1012C00036E8532E66246394712C912C41E0241A45
-:1012D00031080CC0FAE1FA95F1F700C021E0421A9A
-:1012E000510861087108982E09F463CEC7010E9465
-:1012F0005101909162009260909362008911EACF4F
-:10130000F10190819911E6CF0115110561F68091E7
-:101310006200826080936200EFCDE09022018091B4
-:101320002301F12CF82AC091240180912501D0E0FD
-:10133000D82BC79A209709F4DFCD06E211E0F80117
-:1013400061918F01C7010E94FC00FFEFEF1AFF0AB5
-:101350002197A9F7D1CDE090220180912301F12CB2
-:10136000F82AC091240180912501D0E0D82BC79A9A
-:10137000209769F006E211E0F80161918F01C70141
-:101380000E94A300FFEFEF1AFF0A2197A9F7C79861
-:1013900060E070E08EE00E94810202CCC0912201E8
-:1013A00080912301D0E0D82B61E070E08FE10E94B2
-:1013B0008102C79A64E271E0CE010E9458030E9444
-:1013C0006902C798EDCB0E945103ADCC0091220178
-:1013D0008091230110E0182BC091240180912501F8
-:1013E000D0E0D82BC69ABE0188E00E9481022097E7
-:1013F00009F4C5CCC8010E9451010E9469022197DD
-:101400000F5F1F4F2097B1F7BACC1BBA15BA809166
-:101410006200806180936200809162008E7F809381
-:10142000620080916200826080936200FAE0CF16D1
-:10143000D10409F4C3CD0F5F1F4F21E0E21AF10878
-:1014400009F078CDA4CFC79A60EF80E090E80E94C1
-:10145000FC006AEA8AEA9AE80E94FC0065E585E5F4
-:1014600095E80E94FC0060E88AEA9AE80E94FC0085
-:101470006AEA8AEA9AE80E94FC0065E585E595E853
-:101480000E94FC0060E18AEA9AE80E94FC0006C023
-:101490008FEC97E00197F1F700C0000080E090E842
-:1014A0000E9451018F3FA1F71BBA15BA80916200CB
-:1014B000806180936200809162008160809362000D
-:1014C0008091620082608093620016CDC79AC69AAE
-:1014D000809162008E7F80936200809162008260C2
-:1014E000809362002FEF40E752E02150404050408F
-:1014F000E1F700C00000809162008160809362008B
-:10150000C798C69860E070E084E10E94810248CBF1
-:10151000C79AC49AC39ABC9ABB9A809162008260AF
-:101520008093620060EF80E090E00E94CB006AEA66
-:101530008AEA9AE00E94CB0065E585E595E00E9485
-:10154000CB0060E88AEA9AE00E94CB006AEA8AEA65
-:101550009AE00E94CB0065E585E595E00E94CB000E
-:1015600060E380E090E00E94CB00C0E0D0E00CC0DF
-:10157000C83BFBE0DF0709F42FC1EFECF7E0319740
-:10158000F1F700C00000219680E090E80E948700FB
-:101590008F3F71F71BBA15BA80916200806180930A
-:1015A0006200809162008260809362000E94510319
-:1015B000C798C83BDB4009F4F3CA9FCC3091620066
-:1015C000316030936200209162002E7F2093620090
-:1015D00080E890E02BBB3BBB0197E1F760E070E057
-:1015E00080E10E948102DCCA60E070E080E00E943D
-:1015F0008102D6CAC79A60EF80E090E00E94A30003
-:101600006AEA85E595E00E94A30065E58AEA92E032
-:101610000E94A30060E885E595E00E94A3006AEAC5
-:1016200085E595E00E94A30065E58AEA92E00E94C4
-:10163000A30060E185E595E00E94A300C0E0D0E052
-:101640000BC0C03197E2D90769F08FEC97E00197A2
-:10165000F1F700C00000219680E090E00E946A004F
-:101660008F3F79F71BBA15BA809162008061809331
-:1016700062008091620081608093620080916200CC
-:10168000826080936200C798C031D74209F488CA4B
-:101690007FCEC091220180912301D0E0D82B009110
-:1016A00024018091250110E0182BC69ACE010E94DA
-:1016B00051010115110509F4A4C080E090E0CBBBF5
-:1016C000D5BBF2E0FA95F1F700C020B3822728E0FD
-:1016D00030E009C09695879541E0842740EA942739
-:1016E0002150310939F080FDF5CF9695879521502D
-:1016F0003109C9F701501109219601151105F9F6B3
-:10170000D82FC92F1BBA15BA8091620080618093CF
-:10171000620080916200816080936200809162002B
-:1017200082608093620062E070E088E00E94810243
-:101730008D2F0E9469028C2F0E946902C69830CAC0
-:10174000E090220180912301F12CF82A00912401DC
-:101750008091250110E0182BC69A0115110509F496
-:101760004DC0C0E0D0E0C7010E946A00C82788E0F1
-:1017700090E04C2FD695C79540FF04C051E0C52797
-:1017800050EAD5270197A9F7015011098FEFE81A00
-:10179000F80A0115110539F71C2FCD2F1BBA15BA00
-:1017A000809162008061809362008091620081601C
-:1017B000809362008091620082608093620062E0A8
-:1017C00070E08CE00E948102812F0E9469028C2FC0
-:1017D0000E946902C698E4C91BBA15BA80916200DA
-:1017E00080618093620080916200826080936200D9
-:1017F0000E945103C798D4C9105894CBC0E010E0A0
-:0C180000CDCFC0E0D0E07ECFF894FFCF49
+:10044000895CF7CF995CF1CFFC019081992339F059
+:1004500031965D9BFECF9CB991919111FACF089591
+:10046000411551056105710551F0FC01480F591FF7
+:1004700081915D9BFECF8CB9E417F507C9F708950C
+:1004800090910801382F28E05CE8492F4327969582
+:1004900040FD952736952150C1F7909308010C94A3
+:1004A0000B021F93CF93DF93182FEB0110920801DB
+:1004B00086E40E944002812F0E9440028C2F0E94FD
+:1004C00040028D2F0E944002D0930701C093060185
+:1004D0001092050110920401CD2B21F0DF91CF91F4
+:1004E0001F91089580910801DF91CF911F910C9485
+:1004F0000B020E9440028091040190910501019637
+:100500009093050180930401209106013091070129
+:100510008217930709F00895809108010C940B024B
+:1005200090910001992319F0863409F008951092F2
+:10053000000160910201709103016115710559F18B
+:1005400090910101382F28E05CE8432F49279695C8
+:1005500040FD952736952150C1F7909301016130F8
+:10056000710509F447C0DCF062307105E9F16330D0
+:10057000710539F52091090130910A01A901582B23
+:1005800050930A01409309016F5F7F4F70930301FD
+:1005900060930201089510920B0190E0D3CF611592
+:1005A000710579F4863481F381E08093000160E085
+:1005B00070E082E00E94510260910201709103019B
+:1005C000E3CF9B01245031092A3154E0350738F537
+:1005D0004091090150910A012417350770F4F9017F
+:1005E000E35FFE4F8083D0CF90E090930A01809329
+:1005F0000901CACF80930C01C7CF409109015091E6
+:100600000A012417350709F0BFCF81E0911113C00B
+:1006100080930B0110920301109202010895109231
+:1006200003011092020181E08093000160E070E01C
+:1006300084E00C9451028093000160E070E083E05C
+:100640000E945102E7CF1092030110920201109212
+:100650000B0110920001089578940E94FF0187B366
+:10066000806C87BB87EB809361008FEF8093620083
+:1006700012981A9A82BB11BA1BBA15BA90916200ED
+:100680009061909362008ABB84BBBC98C498C79861
+:10069000C6980E94230360E070E080E00E9451024F
+:1006A000BEE6AB2EB12C8FB589628FBD8EB5816051
+:1006B0008EBD20E030E0E0E041E050E060E070E03E
+:1006C00080910B01811138C08FB589628FBD8EB5C5
+:1006D00081608EBD403187E258076105710508F4DD
+:1006E00061C0E11164C0C90101968E3691050CF418
+:1006F00066C0E1E09C012456310939BD28BD9C014A
+:10070000C501821B930B853191050CF06AC08B30BB
+:1007100091052CF044E150E0481B590BCA01880FA9
+:10072000991F909379008093780040E050E0BA01DF
+:1007300080910B01882341F210920B0110927900F5
+:100740001092780019BC18BC1FBC80910C01893133
+:1007500009F4C2C408F049C08B3009F49EC408F4FF
+:10076000B6C1813109F4F3C308F0EBC18D3009F44F
+:100770002DC58F3009F097CF3091620031603093F2
+:100780006200209162002E7F2093620080E890E05A
+:100790002BBB3BBB0197E1F760E070E080E10E947A
+:1007A000510281CF4F5F5F4F6F4F7F4F89CF2150F5
+:1007B000310989F4E0E040E050E0BA0181CF8436AD
+:1007C000910524F02356310939BD28BD9C0140E034
+:1007D00050E0BA0175CF243631050CF491CFC90130
+:1007E00089CF40E050E0BA016BCF843209F4B2C344
+:1007F00008F408C1873209F497C208F096C185321F
+:1008000009F419C3863209F04ECF80900D01809112
+:100810000E01912C982A00910F018091100110E097
+:10082000182BC79A80916200826080936200011544
+:10083000110509F4C9C141E1C42E41E0D42E94014F
+:10084000207E1601F601E401712C06C0CE01807EE7
+:100850002817390709F040C081918F3F09F0739440
+:100860002196015011096F0189F7772009F4ACC175
+:1008700060EF80E090E80E94FC006AEA8AEA9AE869
+:100880000E94FC0065E585E595E80E94FC0065E2B4
+:1008900080E090E80E94FC007A94672D80E090E868
+:1008A0000E94FC00F10161911F016F3F89F074010A
+:1008B0006894F7F8C7010E94FC00FFEF8F1A9F0AA7
+:1008C000772071F07A94F10161911F016F3F79F700
+:1008D0002FEF821A920AE6CF7110CACF4E01AFCF26
+:1008E00069E280E090E80E94FC002AE12A95F1F795
+:1008F00000C030EA432E36E8532E66246394712CF0
+:10090000912C41E0241A31080CC0FAE1FA95F1F774
+:1009100000C021E0421A510861087108982E09F4BC
+:100920006AC0C7010E945101909162009260909349
+:1009300062008911EACFF10190819911E6CF01158A
+:10094000110509F441C14E017ACF00910D0180914A
+:100950000E0110E0182BE0900F0180911001F12C96
+:10096000F82AC79A17FD9DC4E114F10409F4B3C134
+:1009700081E1882E81E0982EF40171904F0160EFA3
+:1009800080E090E00E94A3006AEA85E595E00E947D
+:10099000A30065E58AEA92E00E94A30060EA85E58B
+:1009A00095E00E94A300672DC8010E94A300E80102
+:1009B000D068C12CD12C09C087EC90E00197F1F7E9
+:1009C00000C000009FEFC91AD90ACE010E946A0038
+:1009D000781609F463C1EAE0CE16D10469F71BBAB0
+:1009E00015BA8091620080618093620080916200FC
+:1009F0008E7F8093620080916200826080936200AB
+:100A0000C79851CE8B3109F4A0CF08F4F3C08232DD
+:100A100009F46AC2833209F046CEC79AC49AC39ACF
+:100A2000BC9ABB9A8091620082608093620060EF02
+:100A300080E090E00E94CB006AEA8AEA9AE00E9495
+:100A4000CB0065E585E595E00E94CB0060E88AEA89
+:100A50009AE00E94CB006AEA8AEA9AE00E94CB0000
+:100A600065E585E595E00E94CB0060E380E090E0DD
+:100A70000E94CB00C0E0D0E00BC0C83BFBE0DF072A
+:100A800069F0EFECF7E03197F1F700C00000219634
+:100A900080E090E80E9487008F3F79F71BBA15BA73
+:100AA0008091620080618093620080916200826028
+:100AB00080936200BC98C498C798C83BDB4009F497
+:100AC000F2CD60E070E08AE00E945102ECCD863009
+:100AD00009F48AC008F47FC0873009F47CC18930EA
+:100AE00009F0E1CDE0900D0180910E01F12CF82A82
+:100AF000C0910F0180911001D0E0D82BC79A2097A8
+:100B000069F001E111E0F80161918F01C7010E94D4
+:100B1000FC00FFEFEF1AFF0A2197A9F7C79860E0E2
+:100B200070E08AE00E945102BECD883209F46DC3A4
+:100B30008E3F09F0B8CDF89414BEE0E0F8EF0995C7
+:100B4000B2CD833109F4CEC0883109F0ACCDC79A5B
+:100B500060EF80E090E80E94FC006AEA8AEA9AE886
+:100B60000E94FC0065E585E595E80E94FC0060E8D0
+:100B70008AEA9AE80E94FC006AEA8AEA9AE80E94F5
+:100B8000FC0065E585E595E80E94FC0060E18AEAE5
+:100B90009AE80E94FC0006C08FEC97E00197F1F7FD
+:100BA00000C0000080E090E80E9451018F3FA1F753
+:100BB0001BBA15BA809162008061809362008091B7
+:100BC0006200816080936200809162008260809305
+:100BD0006200C798A4CF853009F065CD60E070E071
+:100BE00080E00E9451025FCD60E070E081E00E94F1
+:100BF000510259CDC79A60EF80E090E00E94A300B7
+:100C00006AEA85E595E00E94A30065E58AEA92E03C
+:100C10000E94A30060E885E595E00E94A3006AEACF
+:100C200085E595E00E94A30065E58AEA92E00E94CE
+:100C3000A30060E185E595E00E94A300C0E0D0E05C
+:100C40000BC0C03197E2D90769F08FEC97E00197AC
+:100C5000F1F700C00000219680E090E00E946A0059
+:100C60008F3F79F71BBA15BA80916200806180933B
+:100C700062008091620081608093620080916200D6
+:100C8000826080936200C798C031D74209F40BCDCF
+:100C900060E070E08EE00E94510205CD1BBA15BAEB
+:100CA00080916200806180936200809162008E7FFB
+:100CB0008093620080916200826080936200FAE01B
+:100CC000CF16D10409F49CCE0F5F1F4F21E0E21A2A
+:100CD000F10809F051CEC79860E070E08EE00E9404
+:100CE0005102E1CCC79AC69A809162008E7F8093B0
+:100CF0006200809162008260809362002FEF40E783
+:100D000052E0215040405040E1F700C00000809187
+:100D10006200816080936200C798C69860E070E0CE
+:100D200084E10E945102BFCCC0910D0180910E015F
+:100D3000D0E0D82B00910F018091100110E0182B0A
+:100D4000C69ACE010E9451010115110509F4B4C2E1
+:100D500080E090E0CBBBD5BBF2E0FA95F1F700C0A4
+:100D600020B3822728E030E009C09695879541E0BE
+:100D7000842740EA94272150310939F080FDF5CFCE
+:100D80009695879521503109C9F70150110921968F
+:100D900001151105F9F6D82FC92F1BBA15BA809184
+:100DA0006200806180936200809162008160809324
+:100DB00062008091620082608093620062E070E075
+:100DC00088E00E9451028D2F0E9479028C2F0E9490
+:100DD0007902C69868CC00910D0180910E0110E057
+:100DE000182BC0910F0180911001D0E0D82BC69A2A
+:100DF000BE0188E00E945102209751F0C8010E9474
+:100E000051010E94790221970F5F1F4F2097B1F780
+:100E10001BBA15BA80916200806180936200809154
+:100E200062008160809362008091620082608093A2
+:100E30006200C69838CCC79A60EF80E090E80E94C4
+:100E4000FC006AEA8AEA9AE80E94FC0065E585E50A
+:100E500095E80E94FC0060E88AEA9AE80E94FC009B
+:100E60006AEA8AEA9AE80E94FC0065E585E595E869
+:100E70000E94FC0060E380E090E80E94FC00C0E07B
+:100E8000D0E010C0C83B9BE0D90791F08091620090
+:100E90008260809362008FEC97E00197F1F700C0C9
+:100EA0000000219680E090E80E9451018F3F51F7A9
+:100EB0001BBA15BA809162008061809362008091B4
+:100EC0006200816080936200809162008260809302
+:100ED0006200C798C83BDB4009F4E5CB60E070E0F6
+:100EE0008AE00E945102DFCB00910D0180910E013A
+:100EF00010E0182BC0910F0180911001D0E0D82B89
+:100F0000C69AC49AC39ABC9ABB9ABE0188E00E9452
+:100F10005102209751F0C8010E9487000E94790277
+:100F200021970F5F1F4F2097B1F71BBA15BA809119
+:100F30006200806180936200809162008260809391
+:100F40006200C49AC39ABC98C498C698ACCB0E945D
+:100F5000AE01A9CBE0900D0180910E01F12CF82A91
+:100F600000910F018091100110E0182BC79AC49ACC
+:100F7000C39ABC9ABB9A809162008260809362009F
+:100F80000115110509F480C061E1C62E61E0D62E7D
+:100F90009701207E4601F601E701712C05C0CE01C4
+:100FA000807E28173907C1F581918F3F09F073942E
+:100FB0002196015011096F0191F7772009F464C05F
+:100FC0006AEA8AEA9AE00E94CB0065E585E595E049
+:100FD0000E94CB0065E280E090E00E94CB007A9412
+:100FE000672D80E090E00E94CB00F40161914F01F9
+:100FF0006F3F71F0C7010E94CB00C70101967720B7
+:1010000079F07C017A94F40161914F016F3F91F77F
+:10101000FFEFEF1AFF0AE9CF7110D2CF7E01B8CFF0
+:1010200069E280E090E00E94CB00FAE1FA95F1F7E6
+:1010300000C06894F7F850EA452E56E8552E66240D
+:101040006394712C312C21E0821A91080CC0FAE1D2
+:10105000FA95F1F700C021E0421A510861087108C1
+:10106000382E09F420C1C7010E94870090916200C8
+:101070009260909362008311EACFF4019081931102
+:10108000E6CF0115110551F68091620082608093D0
+:101090006200BC98C498C79842CD00910D01809120
+:1010A0000E0110E0182BC0910F0180911001D0E0CB
+:1010B000D82BC69ABE018CE00E945102209709F4F9
+:1010C000A7CEC8010E946A000E94790221970F5F93
+:1010D0001F4F2097B1F79CCEE0900D0180910E013B
+:1010E000F12CF82A00910F018091100110E0182BCB
+:1010F000C79A0115110509F411CD71E1872E71E030
+:10110000972EF40161904F0160EF80E090E80E941B
+:10111000FC006AEA85E595E80E94FC0065E58AEA3C
+:1011200092E80E94FC0060EA85E595E80E94FC00D8
+:10113000E701D068662DCE010E94FC00F5E8FA9523
+:10114000F1F70000C12CD12C712C0CC025E82A9598
+:10115000F1F700004FEFC41AD40A782E58ECC516E8
+:10116000D10431F1CE010E94510190916200926050
+:10117000909362008711EACF6710E8CF80916200F8
+:101180008260809362001BBA15BA80916200806110
+:10119000809362008AE0C816D1040CF031CC9FEF36
+:1011A000E91AF90A0150110909F0ABCFC798B7CC79
+:1011B000809162008260809362001BBA15BA8091B0
+:1011C0006200806180936200C7986DCAE0900D0153
+:1011D00080910E01F12CF82AC0910F01809110012D
+:1011E000D0E0D82BC79A209709F475CD01E111E022
+:1011F000F80161918F01C7010E94A300FFEFEF1A70
+:10120000FF0A2197A9F7C79867CDE0900D0180915B
+:101210000E01F12CF82A00910F018091100110E0CD
+:10122000182BC69A0115110509F449C0C0E0D0E099
+:10123000C7010E946A00C82788E090E04C2FD6952D
+:10124000C79540FF04C051E0C52750EAD527019754
+:10125000A9F7015011098FEFE81AF80A01151105D5
+:1012600039F71C2FCD2F1BBA15BA8091620080610F
+:10127000809362008091620081608093620080911F
+:10128000620082608093620062E070E08CE00E9405
+:101290005102812F0E9479028C2F0E947902C698F8
+:1012A00002CA105861CB8091620082608093620014
+:1012B000BC98C498C798F7C9C0E0D0E06ECDC0E034
+:0812C00010E0D1CFF894FFCF3C
:00000001FF
diff --git a/jtag.c b/jtag.c
deleted file mode 100644
index 64a9ea6..0000000
--- a/jtag.c
+++ /dev/null
@@ -1,175 +0,0 @@
-#include "defines.h"
-#include <avr/io.h>
-#include <util/delay.h>
-#include <inttypes.h>
-#include "jtag.h"
-#include "jtag_commands.h"
-
-static uint8_t jtag_current_command = 0;
-static uint16_t jtag_pos = 0;
-static uint32_t jtag_tck_delay_value = 0;
-static uint32_t jtag_num_tck = 0;
-static uint32_t jtag_usecs = 0;
-static uint16_t jtag_multi_count = 0;
-static uint16_t jtag_multi_pos = 0;
-static uint16_t jtag_multi_multi = 0;
-
-static void tck_delay(uint8_t tms, uint32_t num_tck, uint32_t usecs)
-{
- if (tms)
- PORT |= (1<<TMS_PIN);
- else
- PORT &= ~(1<<TMS_PIN);
- PORT |= 1<<TCK_PIN;
- int i;
- for (i = 0; i < num_tck; i++)
- {
- PORT ^= 1<<TCK_PIN;
- //_delay_us(1);
- PORT ^= 1<<TCK_PIN;
- //_delay_us(1);
- }
- for (i = 0; i < usecs; i++)
- _delay_us(1);
-}
-
-static uint8_t pulse_tck(int tms, int tdi, int tdo)
-{
- if (tms)
- PORT |= (1<<TMS_PIN);
- else
- PORT &= ~(1<<TMS_PIN);
- if (tdi >= 0)
- {
- if (tdi)
- PORT |= (1<<TDI_PIN);
- else
- PORT &= ~(1<<TDI_PIN);
- }
- PORT &= ~(1<<TCK_PIN);
- //_delay_us(1);
- PORT |= 1<<TCK_PIN;
- //_delay_us(1);
- if (tdo < 0) return 1;
- return ((PORT_PIN >> TDO_PIN) & 1) == tdo;
-}
-
-static int jtag_parse_byte(uint8_t data)
-{
- int i, tms, tdi, tdo;
- switch (jtag_current_command)
- {
- case 0:
- jtag_current_command = data;
- jtag_pos = 0;
- break;
-
- case JTAG_PULSE_TCK_DELAY:
- if (jtag_pos == 0)
- {
- jtag_num_tck = 0;
- jtag_usecs = 0;
- jtag_tck_delay_value = data;
- } else {
- if ((jtag_pos < 4) && (jtag_tck_delay_value & 0b10)) // num_tck
- {
- jtag_num_tck |= (uint32_t)data << (8*(jtag_pos-1));
- } else if ((jtag_pos < 4) && !(jtag_tck_delay_value & 0b10)) // usecs
- {
- jtag_usecs |= (uint32_t)data << (8*(jtag_pos-1));
- } else {
- jtag_usecs |= (uint32_t)data << (8*(jtag_pos-5));
- }
- }
- if ( ((jtag_tck_delay_value & 0b110) == 0)
- || (((((jtag_tck_delay_value & 0b110) == 0b100) || (jtag_tck_delay_value & 0b110) == 0b010)) && jtag_pos == 4)
- || (((jtag_tck_delay_value & 0b110) == 0b110) && jtag_pos == 8)
- )
- {
- tck_delay(jtag_tck_delay_value&1, jtag_num_tck, jtag_usecs);
- jtag_current_command = 0;
- }
- jtag_pos++;
- break;
-
- case JTAG_PULSE_TCK_MULTI:
- if (jtag_pos == 0)
- {
- jtag_multi_count = data;
- jtag_multi_pos = 0;
- jtag_multi_multi = 0;
- } else if (jtag_pos == 1)
- {
- jtag_multi_count |= (uint16_t)data << 8;
- } else {
- if (!jtag_multi_multi && !(data & 0x80))
- {
- jtag_multi_multi = data;
- } else {
- if (!jtag_multi_multi) jtag_multi_multi = 1;
- tms = data&1;
- tdi = (data>>1)&1;
- tdo = -1;
- if (data & (1<<2))
- {
- tdo = (data>>3)&1;
- }
- for (i = 0; i < jtag_multi_multi; i++)
- {
- if (!pulse_tck(tms, tdi, tdo)) return 0;
- jtag_multi_pos++;
- }
- jtag_multi_multi = 0;
- }
- if (jtag_multi_pos >= jtag_multi_count)
- jtag_current_command = 0;
- }
- jtag_pos++;
- break;
-
- /*
- case JTAG_PULSE_TCK:
- tms = data&1;
- tdi = (data>>1)&1;
- tdo = -1;
- if (data & (1<<2))
- {
- tdo = (data>>3)&1;
- }
- if (!pulse_tck(tms, tdi, tdo)) return 0;
- jtag_current_command = 0;
- break;
- */
- default:
- return 0;
- }
- return 1;
-}
-
-void jtag_setup()
-{
- PORT &= ~((1<<TMS_PIN) | (1<<TDO_PIN) | (1<<TDI_PIN)) | (1<<TCK_PIN);
- PORT_DDR |= (1<<TMS_PIN) | (1<<TCK_PIN) | (1<<TDI_PIN);
- PORT_DDR &= ~(1<<TDO_PIN);
- jtag_current_command = 0;
-}
-
-void jtag_shutdown()
-{
- PORT &= ~((1<<TMS_PIN) | (1<<TCK_PIN) | (1<<TDO_PIN) | (1<<TDI_PIN));
- PORT_DDR &= ~((1<<TMS_PIN) | (1<<TCK_PIN) | (1<<TDO_PIN) | (1<<TDI_PIN));
-}
-
-int jtag_execute(int count, uint8_t* data)
-{
- int i;
- for (i = 0; i < count; i++)
- {
- if (!jtag_parse_byte(data[i]))
- {
- jtag_shutdown();
- return 0;
- }
- }
- return 1;
-}
diff --git a/jtag.h b/jtag.h
deleted file mode 100644
index 17d67fb..0000000
--- a/jtag.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "defines.h"
-
-#define CLUJTAG_CONCAT(a, b) a ## b
-#define CLUJTAG_OUTPORT(name) CLUJTAG_CONCAT(PORT, name)
-#define CLUJTAG_INPORT(name) CLUJTAG_CONCAT(PIN, name)
-#define CLUJTAG_DDRPORT(name) CLUJTAG_CONCAT(DDR, name)
-
-#define PORT CLUJTAG_OUTPORT(JTAG_PORT)
-#define PORT_DDR CLUJTAG_DDRPORT(JTAG_PORT)
-#define PORT_PIN CLUJTAG_INPORT(JTAG_PORT)
-#define PORT_LED CLUJTAG_OUTPORT(LED_PORT)
-#define PORT_LED_DDR CLUJTAG_DDRPORT(LED_PORT)
-
-void jtag_setup();
-void jtag_shutdown();
-int jtag_execute(int count, uint8_t* data);
diff --git a/jtag_commands.h b/jtag_commands.h
deleted file mode 100644
index 3bcbd20..0000000
--- a/jtag_commands.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#define JTAG_PULSE_TCK_DELAY 0xFD
-// Дальше 1 байт: 0бит - TMS, 1бит - нужно ли дёргать TCK, 2бит - жужна ли задержка. Если нужно дёргать TCK, потом 4 байта - сколько раз. Если нужна задержка - ещё 4 байта usec
-
-#define JTAG_PULSE_TCK_MULTI 0xFE
-// Дальше 1 байт: кол-во элементов. Каждый элемент это либо:
- // число 1-127 означающее кол-во повторений и байт: 0бит - TMS, 1бит изменять ли TDI, 2бит значение TDI, 3бит - проверять ли TDO, 4бит значение TDO
- // Либо 7бит равный единице и 1бит изменять ли TDI, 2бит значение TDI, 3бит - проверять ли TDI, 4бит значение TDO