This commit is contained in:
maliakal_d 2021-09-03 09:29:40 +02:00
parent a02e8099da
commit 3465f01e3d
2 changed files with 49 additions and 42 deletions

View File

@ -10,6 +10,8 @@
#define MTDSIZE 10
#define MAX_TIME_FPGA_TOUCH_FLASH_US (10 * 1000 * 1000) // 10s
#define TEMP_PROG_FILE_NAME "/var/tmp/tmp.pof"
int gpioDefined = 0;
char mtdvalue[MTDSIZE] = {0};

View File

@ -3714,56 +3714,61 @@ int program_fpga(int file_des) {
}
#else // jungfrau, ctb, moench
uint64_t filesize = 0;
char *fpgasrc = NULL;
FILE *fp = NULL;
uint64_t offset = 0;
// filesize
uint64_t filesize = 0;
if (receiveData(file_des, &filesize, sizeof(filesize), INT64) < 0)
return printSocketReadError();
LOG(logINFOBLUE, ("Program size is: %lld\n",
(long long unsigned int)filesize));
struct sysinfo info;
sysinfo(&info);
printf("freeram %ld\n", info.freeram);
/*
// delete old /var/tmp/file
char cmd[MAX_STR_LENGTH] = {0};
memset(cmd, 0, MAX_STR_LENGTH);
sprintf(cmd, "rm -fr /var/tmp/tmp.pof");
char retvals[MAX_STR_LENGTH] = {0};
memset(retvals, 0, MAX_STR_LENGTH);
int success = executeCommand(cmd, retvals, logDEBUG1);
if (success == FAIL) {
ret = FAIL;
strcpy(mess, retvals);
// LOG(logERROR, (mess)); already printed in executecommand
} else {
memset(cmd, 0, MAX_STR_LENGTH);
sprintf(cmd, "free | grep Mem | cut -f 2");.// fix this
memset(retvals, 0, MAX_STR_LENGTH);
int success = executeCommand(cmd, retvals, logDEBUG1);
if (success == FAIL) {
ret = FAIL;
strcpy(mess, retvals);
// LOG(logERROR, (mess)); already printed in
executecommand
}
}
Server_SendResult(file_des, INT32, NULL, 0);
*/
size_t fsize = filesize;
fpgasrc = malloc(fsize);
if (fpgasrc == NULL) {
LOG(logERROR, ("Could not malloc\n"));
ret = FAIL;
// delete old /var/tmp/file
{
char cmd[MAX_STR_LENGTH] = {0};
memset(cmd, 0, MAX_STR_LENGTH);
sprintf(cmd, "rm -fr %s", TEMP_PROG_FILE_NAME);
char retvals[MAX_STR_LENGTH] = {0};
memset(retvals, 0, MAX_STR_LENGTH);
ret = executeCommand(cmd, retvals, logDEBUG1);
if (ret == FAIL) {
strcpy(mess, retvals);
// LOG(logERROR, (mess)); already printed in executecommand
}
}
//fpgasrc = malloc(filesize + 1);
// check available memory to copy program
if (ret == OK) {
struct sysinfo info;
sysinfo(&info);
if (filesize >= info.freeram) {
ret = FAIL;
sprintf(mess,
"Could not program fpga. Not enough memory to copy "
"program. [File size:%dMb, free RAM: %dMb]\n",
(filesize / (1024 * 1024), (info.freeram / (1024 * 1024))));
LOG(logERROR, (mess));
}
}
// open file to copy
Server_SendResult(file_des, INT32, NULL, 0);
/*
size_t fsize = filesize;
fpgasrc = malloc(fsize);
if (fpgasrc == NULL) {
LOG(logERROR, ("Could not malloc\n"));
ret = FAIL;
}*/
// fpgasrc = malloc(filesize + 1);
char *fpgasrc = NULL;
FILE *fp = NULL;
uint64_t offset = 0;
uint64_t totalsize = filesize;
// writing to flash part by part