diff --git a/src/periph/fpga.cpp b/src/periph/fpga.cpp index 65e4462dd2ca5c1eaeb354bc19030334a3f6278a..ff23885253fe6d1903b6c9cf692bc58595f99304 100644 --- a/src/periph/fpga.cpp +++ b/src/periph/fpga.cpp @@ -631,6 +631,7 @@ bool Periph_fpga::read_system_info(TermOutput& termout) return false; } + // Register can be read, now get mmap if empty. if (mmap->empty()) { if (mmap != NULL) { delete mmap; } mmap = new CMMap(read_reg_map()); @@ -647,8 +648,13 @@ bool Periph_fpga::read_system_info(TermOutput& termout) } } - // string design_name = read_design_name(); - my_current_design_name = read_design_name(); + // If the design name is changed clear the mmap. + string design_name = read_design_name(); + if (design_name != my_current_design_name) { + mmap->clear(); + } + my_current_design_name = design_name; + // cout << "node " << GlobalNr << " design_name= " << my_current_design_name << endl; // FIXME: get rid of magic constants in masks, should be in CCFG: