feature: Make the FPGA bitstreams working with SKIP_* define.

Now, you can enable at least two of your favorite technologies (such as LF and HF 14443A) attached a standalone mode and still have spare ROM space for other functionalities on a Proxmark3 Easy with a 256KiB ROM.
This commit is contained in:
douniwan5788 2024-08-26 02:34:14 +08:00
commit 413a17a7a6
5 changed files with 74 additions and 14 deletions

View file

@ -420,8 +420,9 @@ static void print_version_info_preamble(FILE *outfile, int num_infiles) {
fprintf(outfile, "// This file is generated by fpga_compress. Don't edit!\n");
fprintf(outfile, "//-----------------------------------------------------------------------------\n");
fprintf(outfile, "\n\n");
fprintf(outfile, "#include \"fpga.h\"\n\n");
fprintf(outfile, "const int g_fpga_bitstream_num = %d;\n", num_infiles);
fprintf(outfile, "const char *const g_fpga_version_information[%d] = {\n", num_infiles);
fprintf(outfile, "const FPGA_VERSION_INFORMATION g_fpga_version_information[%d] = {\n", num_infiles);
}
static int generate_fpga_version_info(FILE *infile[], char *infile_names[], int num_infiles, FILE *outfile) {
@ -432,7 +433,19 @@ static int generate_fpga_version_info(FILE *infile[], char *infile_names[], int
for (int i = 0; i < num_infiles; i++) {
FpgaGatherVersion(infile[i], infile_names[i], version_string, sizeof(version_string));
fprintf(outfile, " \" %s\"", version_string);
fprintf(outfile, " { \"%s\"", version_string);
if (!memcmp("fpga_pm3_lf.ncd", version_string, sizeof("fpga_pm3_lf.ncd") - 1))
fprintf(outfile, ", FPGA_BITSTREAM_LF }");
else if (!memcmp("fpga_pm3_hf_15.ncd", version_string, sizeof("fpga_pm3_hf_15.ncd") - 1))
fprintf(outfile, ", FPGA_BITSTREAM_HF_15 }");
else if (!memcmp("fpga_pm3_hf.ncd", version_string, sizeof("fpga_pm3_hf.ncd") - 1))
fprintf(outfile, ", FPGA_BITSTREAM_HF }");
else if (!memcmp("fpga_pm3_felica.ncd", version_string, sizeof("fpga_pm3_felica.ncd") - 1))
fprintf(outfile, ", FPGA_BITSTREAM_HF_FELICA }");
else
fprintf(outfile, ", FPGA_BITSTREAM_UNKNOWN }");
if (i != num_infiles - 1) {
fprintf(outfile, ",");
}