void bitfile_reverse_bits_of_chunk(bitfile_chunk_t *chunk) { int i; for (i = 0; i < chunk->size; i ++) { chunk->data[i] = bitfile_reverse_bits(chunk->data[i]); } }
static int usb_program_fpga(llio_t *self, char *bitfile_name) { board_t *board = self->board; int bindex, bytesread; u32 status, control; char part_name[32]; struct stat file_stat; FILE *fp; u8 cmd = '0'; if (stat(bitfile_name, &file_stat) != 0) { printf("Can't find file %s\n", bitfile_name); return -1; } fp = fopen(bitfile_name, "rb"); if (fp == NULL) { printf("Can't open file %s: %s\n", bitfile_name, strerror(errno)); return -1; } if (print_bitfile_header(fp, (char*) &part_name, board->llio.verbose) == -1) { fclose(fp); return -1; } printf("Programming FPGA...\n"); printf(" |"); fflush(stdout); lbp_send(&cmd, 1); lbp_send(&cmd, 1); lbp_send(&cmd, 1); lbp_send(&cmd, 1); // program the FPGA while (!feof(fp)) { bytesread = fread(&file_buffer, 1, 8192, fp); bindex = 0; while (bindex < bytesread) { file_buffer[bindex] = bitfile_reverse_bits(file_buffer[bindex]); bindex++; } lbp_send(&file_buffer, bytesread); printf("W"); fflush(stdout); } printf("\n"); fclose(fp); return 0; }