summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Daniel <cd@maintech.de>2012-10-18 22:22:54 +0200
committerChristian Daniel <cd@maintech.de>2012-10-18 22:22:54 +0200
commitb17fd2ca39ef6ef5b52a4e3ed6101d08ce755c51 (patch)
tree5760494a6d26f05f898d02ae19f8e6b0f52ee01b
parentd79e4f8dca10542b3f53a6b8b95095bcad42bf9c (diff)
make rum-ba reset the device after flashing
-rw-r--r--utils/rum-ba/src/main.c2
-rw-r--r--utils/rum-ba/src/osmosdr.c5
-rw-r--r--utils/rum-ba/src/osmosdr.h1
-rw-r--r--utils/rum-ba/src/sam3u.c5
-rw-r--r--utils/rum-ba/src/sam3u.h2
5 files changed, 15 insertions, 0 deletions
diff --git a/utils/rum-ba/src/main.c b/utils/rum-ba/src/main.c
index 498accc..a350c98 100644
--- a/utils/rum-ba/src/main.c
+++ b/utils/rum-ba/src/main.c
@@ -99,6 +99,8 @@ int main(int argc, char* argv[])
res = osmoSDRDetect(fd);
if(res >= 0)
res = osmoSDRFlashMCU(fd, bin, binSize);
+ if(res >= 0)
+ osmoSDRReset(fd);
serialClose(fd);
} else {
return printSyntax();
diff --git a/utils/rum-ba/src/osmosdr.c b/utils/rum-ba/src/osmosdr.c
index 5cd4aae..0a64c98 100644
--- a/utils/rum-ba/src/osmosdr.c
+++ b/utils/rum-ba/src/osmosdr.c
@@ -137,3 +137,8 @@ int osmoSDRFlashFPGA(HANDLE fd, const void* algo, size_t algoSize, const void* b
return 0;
}
+
+int osmoSDRReset(HANDLE fd)
+{
+ return sam3uReset(fd);
+}
diff --git a/utils/rum-ba/src/osmosdr.h b/utils/rum-ba/src/osmosdr.h
index 8abbad4..751bb86 100644
--- a/utils/rum-ba/src/osmosdr.h
+++ b/utils/rum-ba/src/osmosdr.h
@@ -10,5 +10,6 @@ int osmoSDRBlink(HANDLE fd);
int osmoSDRRamLoad(HANDLE fd, const void* bin, size_t binSize);
int osmoSDRFlashMCU(HANDLE fd, const void* bin, size_t binSize);
int osmoSDRFlashFPGA(HANDLE fd, const void* algo, size_t algoSize, const void* bin, size_t binSize);
+int osmoSDRReset(HANDLE fd);
#endif // INCLUDE_OSMOSDR_H
diff --git a/utils/rum-ba/src/sam3u.c b/utils/rum-ba/src/sam3u.c
index 9d3b355..bce857b 100644
--- a/utils/rum-ba/src/sam3u.c
+++ b/utils/rum-ba/src/sam3u.c
@@ -306,3 +306,8 @@ error:
printf(" -- ERROR\n");
return -1;
}
+
+int sam3uReset(HANDLE fd)
+{
+ return sam3uWrite32(fd, 0x400e1200, 0xa500000f);
+}
diff --git a/utils/rum-ba/src/sam3u.h b/utils/rum-ba/src/sam3u.h
index 8fd14c3..fddba29 100644
--- a/utils/rum-ba/src/sam3u.h
+++ b/utils/rum-ba/src/sam3u.h
@@ -17,4 +17,6 @@ int sam3uDetect(HANDLE fd, uint32_t* chipID);
int sam3uReadUniqueID(HANDLE fd, int bank, uint8_t* uniqueID);
int sam3uFlash(HANDLE fd, int bank, const void* bin, size_t binSize);
+int sam3uReset(HANDLE fd);
+
#endif // INCLUDE_SAM3U_H