diff --git a/.gitmodules b/.gitmodules
index 21aa4e7d57437acffa8a84786621f5640a68077d..968fe3882123a1162f24f54356b604743faed026 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -16,3 +16,6 @@
 [submodule "nanosoc/synopsys_28nm_slm_integration"]
 	path = nanosoc/synopsys_28nm_slm_integration
 	url = https://git.soton.ac.uk/soclabs/synopsys_28nm_slm_integration.git
+[submodule "nanosoc/ahb_qspi"]
+	path = nanosoc/ahb_qspi
+	url = https://git.soton.ac.uk/soclabs/ahb_qspi.git
diff --git a/flist/nanosoc.flist b/flist/nanosoc.flist
index 56ca5e4252e23972781828a332a65eabec8bc30a..3f8e75373f835945381994cd97d59e6faaff30ef 100644
--- a/flist/nanosoc.flist
+++ b/flist/nanosoc.flist
@@ -39,3 +39,6 @@ $(SOCLABS_NANOSOC_TECH_DIR)/extio8x4-axis/rtl/extio8x4_sync.v
 // DMAC IP (better included at top level configuration)
 //-f $(SOCLABS_SLDMA350_TECH_DIR)/flist/sldma350_ahb.flist
 //-f $(SOCLABS_SLDMA230_TECH_DIR)/flist/sldma230_ip.flist
+
+// AHB QSPI 
+-f $(SOCLABS_AHB_QSPI_DIR)/flist/Top/ahb_QSPI.flist 
diff --git a/flist/nanosoc_FPGA.flist b/flist/nanosoc_FPGA.flist
index 3d54da0e5c88a029483dfd14bf64b5439ed4476a..aed3f5d8961fca8c8c6f5c181400ad2cdae832b7 100644
--- a/flist/nanosoc_FPGA.flist
+++ b/flist/nanosoc_FPGA.flist
@@ -37,3 +37,8 @@ $(SOCLABS_NANOSOC_TECH_DIR)/extio8x4-axis/rtl/extio8x4_sync.v
 // DMAC IP (better included at top level configuration)
 //-f $(SOCLABS_SLDMA350_TECH_DIR)/flist/sldma350_ahb.flist
 //-f $(SOCLABS_SLDMA230_TECH_DIR)/flist/sldma230_ip.flist
+
+// AHB QSPI 
+-f $(SOCLABS_AHB_QSPI_DIR)/flist/Top/ahb_QSPI.flist 
+$(SOCLABS_AHB_QSPI_DIR)/logical/cache_models/generic/cache_ram.v
+$(ARM_IP_LIBRARY_PATH)/CG092/CG092-BU-50000-r2p0-00rel0/p_flash_cache_f0/logical/testbench/execution_tb/verilog/p_flash_cache_f0_sp_ram.v
diff --git a/flist/nanosoc_ip.flist b/flist/nanosoc_ip.flist
index fc6b47ca1746d05c03ee756a10b9e798ba39c7d9..b58920d32f80b490806f361afd6319ce61856887 100644
--- a/flist/nanosoc_ip.flist
+++ b/flist/nanosoc_ip.flist
@@ -42,6 +42,7 @@ $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/bootrom_0/verilog/nanosoc_re
 // NanoSoC Regions - CPU Memories
 $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v
 $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v
+$(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/flash_0/verilog/nanosoc_region_flash_0.v
 
 // NanoSoC Regions - Expansion Regions
 $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/exp/verilog/nanosoc_region_exp.v
@@ -54,6 +55,7 @@ $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysctr
 $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_apb_ss.v
 $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_adc_ss.v
 $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
+$(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_qspi_apb_ss.v
 
 // NanoSoC Regions - SysTable Region
 $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/systable/verilog/nanosoc_coresight_systable.v
diff --git a/flist/nanosoc_qs.flist b/flist/nanosoc_qs.flist
index bd1f5ceafb842e22c9c08b79c39c92bfbbcf49db..e66af1bfca332955031733a01ada8f1206cf771f 100644
--- a/flist/nanosoc_qs.flist
+++ b/flist/nanosoc_qs.flist
@@ -33,3 +33,6 @@ $(SOCLABS_NANOSOC_TECH_DIR)/extio8x4-axis/rtl/extio8x4_sync.v
 
 // Debug IP
 -f $(SOCLABS_SOCDEBUG_TECH_DIR)/flist/socdebug.flist
+
+// AHB QSPI 
+-f $(SOCLABS_AHB_QSPI_DIR)/flist/Top/ahb_QSPI.flist 
diff --git a/flist/nanosoc_vip.flist b/flist/nanosoc_vip.flist
index f610d0842edee329fa343f985a938e2f6f2a684d..74d9fed87d750095000828f7e365a8d893cdc888 100644
--- a/flist/nanosoc_vip.flist
+++ b/flist/nanosoc_vip.flist
@@ -29,3 +29,9 @@ $(SOCLABS_NANOSOC_TECH_DIR)/verif/trace/verilog/nanosoc_ft1248x1_track.v
 $(SOCLABS_NANOSOC_TECH_DIR)/verif/trace/verilog/nanosoc_dma_log_to_file.v
 $(SOCLABS_NANOSOC_TECH_DIR)/verif/trace/verilog/nanosoc_accelerator_ss_logger.v
 $(SOCLABS_NANOSOC_TECH_DIR)/verif/trace/verilog/nanosoc_axi_stream_io_8_txd_from_datafile.v
+
+// AHB Qspi Components
+-f $(SOCLABS_AHB_QSPI_DIR)/flist/VIP/ahb_QSPI_VIP.flist
+
+$(SOCLABS_AHB_QSPI_DIR)/logical/cache_models/generic/cache_ram.v
+$(ARM_IP_LIBRARY_PATH)/CG092/CG092-BU-50000-r2p0-00rel0/p_flash_cache_f0/logical/testbench/execution_tb/verilog/p_flash_cache_f0_sp_ram.v
diff --git a/flows/makefile.regression b/flows/makefile.regression
index d62b6e5bdad2e1ca44682c473044a612cbdece3d..3fd923929d47262bcd99ce017a256d16edd065a7 100644
--- a/flows/makefile.regression
+++ b/flows/makefile.regression
@@ -13,7 +13,7 @@
 PARALLEL_TESTS = 4
 
 # Regression Simulation Timeout
-TIMEOUT = 40m
+TIMEOUT = 60m
 
 # Create a Directory to Run a Regression in
 $(eval REGRESSION_NAME =$(shell date +%Y_%m_%d_%H_%M_%S))
diff --git a/flows/makefile.software b/flows/makefile.software
index 6447521c6a963883c99a663445dde4adb780ed02..2fda512cfe5e57d180691d82455826cabaa11e4b 100644
--- a/flows/makefile.software
+++ b/flows/makefile.software
@@ -23,7 +23,7 @@ SW_MAKE_OPTIONS = CPU_PRODUCT=CORTEX_M0 TOOL_CHAIN=$(TOOL_CHAIN)
 # Bootrom Parameters:
 # Boot Loader image
 BOOTLOADER        ?= bootloader
-BOOTROM_ADDRW     ?= 8
+BOOTROM_ADDRW     ?= 9
 BOOTROM_HEX       ?= $(SOCLABS_NANOSOC_TECH_DIR)/testcodes/bootloader/$(BOOTLOADER).hex
 BOOTROM_BUILD_DIR ?= $(SOCLABS_PROJECT_DIR)/system/src/bootrom
 
diff --git a/fpga/targets/pynq_z2/fpga_pinmap.xdc b/fpga/targets/pynq_z2/fpga_pinmap.xdc
index 1dc9791544de0f085c0feb2d0424d88c2ca81946..3eda9ded20ad541004c76051f52140c8eb889179 100644
--- a/fpga/targets/pynq_z2/fpga_pinmap.xdc
+++ b/fpga/targets/pynq_z2/fpga_pinmap.xdc
@@ -32,4 +32,12 @@ set_property PULLUP true [get_ports PMOD0_5]
 set_property PULLUP true [get_ports PMOD0_6]
 set_property PULLUP true [get_ports PMOD0_7]
 
+set_property -dict {PACKAGE_PIN W14 IOSTANDARD LVCMOS33} [get_ports QSPI_nCS_0]
+set_property -dict {PACKAGE_PIN Y14 IOSTANDARD LVCMOS33} [get_ports {QSPI_IO_0[0]}]
+set_property -dict {PACKAGE_PIN T11 IOSTANDARD LVCMOS33} [get_ports {QSPI_IO_0[1]}]
+set_property -dict {PACKAGE_PIN T10 IOSTANDARD LVCMOS33} [get_ports QSPI_SCLK_0]
+set_property -dict { PACKAGE_PIN W16 IOSTANDARD LVCMOS33 } [get_ports RESET];
+set_property -dict {PACKAGE_PIN V12 IOSTANDARD LVCMOS33} [get_ports {QSPI_IO_0[2]}]
+set_property -dict {PACKAGE_PIN W13 IOSTANDARD LVCMOS33} [get_ports {QSPI_IO_0[3]}]
+
 ##set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets PMOD0_7_IBUF]
diff --git a/fpga/targets/pynq_z2/nanosoc_design_wrapper.v b/fpga/targets/pynq_z2/nanosoc_design_wrapper.v
index 742a7c14b6cca8eaa83c2ef241cce1c3c879f8bf..61966656f651c44cff01c23c1e0a0669c1201b66 100644
--- a/fpga/targets/pynq_z2/nanosoc_design_wrapper.v
+++ b/fpga/targets/pynq_z2/nanosoc_design_wrapper.v
@@ -17,7 +17,11 @@ module nanosoc_design_wrapper
     PMOD0_4,
     PMOD0_5,
     PMOD0_6,
-    PMOD0_7
+    PMOD0_7,
+
+    QSPI_IO_0,
+    QSPI_SCLK_0,
+    QSPI_nCS_0
     );
 //    PMOD1_0,
 //    PMOD1_1,
@@ -38,14 +42,10 @@ module nanosoc_design_wrapper
   inout wire PMOD0_5;
   inout wire PMOD0_6;
   inout wire PMOD0_7;
-//  inout wire PMOD1_0;
-//  inout wire PMOD1_1;
-//  inout wire PMOD1_2;
-//  inout wire PMOD1_3;
-//  inout wire PMOD1_4;
-//  inout wire PMOD1_5;
-//  inout wire PMOD1_6;
-//  inout wire PMOD1_7;
+
+  inout wire [3:0] QSPI_IO_0;
+  output wire QSPI_SCLK_0;
+  output wire QSPI_nCS_0;
 
 //  input wire [3:0]dip_switch_4bits_tri_i;
 //  output wire [3:0]led_4bits_tri_o;
@@ -94,10 +94,60 @@ module nanosoc_design_wrapper
 //  assign PMOD1_6 = PMOD1_tri_z[6] ? 1'bz : PMOD1_tri_o[6];
 //  assign PMOD1_7 = PMOD1_tri_z[7] ? 1'bz : PMOD1_tri_o[7];
 
+   wire [3:0] qspi_io_i;
+   wire [3:0] qspi_io_o;
+   wire [3:0] qspi_io_e;
+   wire qspi_sclk;
+   wire qspi_ncs;
+
+
+    IOBUF QSPI_io0_iobuf(
+    .I(qspi_io_o[0]),
+    .IO(QSPI_IO_0[0]),
+    .O(qspi_io_i[0]),
+    .T(~qspi_io_e[0])
+    );
+    IOBUF QSPI_io1_iobuf(
+    .I(qspi_io_o[1]),
+    .IO(QSPI_IO_0[1]),
+    .O(qspi_io_i[1]),
+    .T(~qspi_io_e[1])
+    );
+    IOBUF QSPI_io2_iobuf(
+    .I(qspi_io_o[2]),
+    .IO(QSPI_IO_0[2]),
+    .O(qspi_io_i[2]),
+    .T(~qspi_io_e[2])
+    );
+    IOBUF QSPI_io3_iobuf(
+    .I(qspi_io_o[3]),
+    .IO(QSPI_IO_0[3]),
+    .O(qspi_io_i[3]),
+    .T(~qspi_io_e[3])
+    );
+    IOBUF QSPI_sclk_iobuf(
+    .I(qspi_sclk),
+    .IO(QSPI_SCLK_0),
+    .O(),
+    .T(1'b0)
+    );
+    IOBUF QSPI_ncs_iobuf(
+    .I(qspi_ncs),
+    .IO(QSPI_nCS_0),
+    .O(),
+    .T(1'b0)
+    );
+
+
   nanosoc_design nanosoc_design_i
        (.pmoda_tri_i(PMOD0_tri_i),
         .pmoda_tri_o(PMOD0_tri_o),
-        .pmoda_tri_z(PMOD0_tri_z)//,
+        .pmoda_tri_z(PMOD0_tri_z),
+        .qspi_io_i_0(qspi_io_i),
+        .qspi_io_o_0(qspi_io_o),
+        .qspi_io_e_0(qspi_io_e),
+        .qspi_sclk_0(qspi_sclk),
+        .qspi_ncs_0(qspi_ncs)
 //        .PMOD1_tri_i(PMOD1_tri_i),
 //        .PMOD1_tri_o(PMOD1_tri_o),
 //        .PMOD1_tri_z(PMOD1_tri_z),
diff --git a/fpga/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl b/fpga/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl
index 5b6771df2525f2742951c304a0c719378bfee601..ab841c8aa720571da45592d7c976327bd73ea48f 100644
--- a/fpga/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl
+++ b/fpga/targets/pynq_z2/vivado_script/2021_1/nanosoc_design.tcl
@@ -745,6 +745,12 @@ proc create_root_design { parentCell } {
   set pmoda_tri_o [ create_bd_port -dir O -from 7 -to 0 pmoda_tri_o ]
   set pmoda_tri_z [ create_bd_port -dir O -from 7 -to 0 pmoda_tri_z ]
 
+  set qspi_io_i_0 [ create_bd_port -dir I -from 3 -to 0 qspi_io_i_0]
+  set qspi_io_o_0 [ create_bd_port -dir O -from 3 -to 0 qspi_io_o_0]
+  set qspi_io_e_0 [ create_bd_port -dir O -from 3 -to 0 qspi_io_e_0]
+  set qspi_sclk_0 [ create_bd_port -dir O -from 0 -to 0 qspi_sclk_0]
+  set qspi_ncs_0 [ create_bd_port -dir O -from 0 -to 0 qspi_ncs_0]
+
   # Create instance: cmsdk_socket
   create_hier_cell_cmsdk_socket [current_bd_instance .] cmsdk_socket
 
@@ -864,6 +870,11 @@ proc create_root_design { parentCell } {
   connect_bd_net -net xlconstant_zero_dout [get_bd_pins xlconstant_zero/dout] [get_bd_pins nanosoc_chip_0/diag_mode] [get_bd_pins nanosoc_chip_0/diag_ctrl] [get_bd_pins nanosoc_chip_0/scan_mode] [get_bd_pins nanosoc_chip_0/scan_enable] [get_bd_pins nanosoc_chip_0/bist_mode] [get_bd_pins nanosoc_chip_0/bist_enable] [get_bd_pins nanosoc_chip_0/alt_mode] [get_bd_pins nanosoc_chip_0/uart_rxd_i] [get_bd_pins nanosoc_chip_0/swd_mode] [get_bd_pins nanosoc_chip_0/test_i]
   connect_bd_net -net xlconstant_zerox4_dout [get_bd_pins xlconstant_zerox4/dout] [get_bd_pins nanosoc_chip_0/scan_in] [get_bd_pins nanosoc_chip_0/bist_in]
   connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins cmsdk_socket/aclk] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins nanosoc_chip_0/clk_i]
+  connect_bd_net -net qspi_io_i_1 [get_bd_pins nanosoc_chip_0/qspi_io_i] [get_bd_ports qspi_io_i_0]
+  connect_bd_net -net qspi_io_o_1 [get_bd_pins nanosoc_chip_0/qspi_io_o] [get_bd_ports qspi_io_o_0]
+  connect_bd_net -net qspi_io_e_1 [get_bd_pins nanosoc_chip_0/qspi_io_e] [get_bd_ports qspi_io_e_0]
+  connect_bd_net -net qspi_sclk_1 [get_bd_pins nanosoc_chip_0/qspi_sclk] [get_bd_ports qspi_sclk_0]
+  connect_bd_net -net qspi_ncs_1 [get_bd_pins nanosoc_chip_0/qspi_ncs] [get_bd_ports qspi_ncs_0]
 
   # Create address segments
   assign_bd_address -offset 0x41200000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs cmsdk_socket/axi_gpio_0/S_AXI/Reg] -force
diff --git a/fpga/targets/pynq_zcu104/nanosoc_design_wrapper.v b/fpga/targets/pynq_zcu104/nanosoc_design_wrapper.v
index 742a7c14b6cca8eaa83c2ef241cce1c3c879f8bf..19dd346f5cde0f076559953fd5f1da33b7345515 100644
--- a/fpga/targets/pynq_zcu104/nanosoc_design_wrapper.v
+++ b/fpga/targets/pynq_zcu104/nanosoc_design_wrapper.v
@@ -93,11 +93,23 @@ module nanosoc_design_wrapper
 //  assign PMOD1_5 = PMOD1_tri_z[5] ? 1'bz : PMOD1_tri_o[5];
 //  assign PMOD1_6 = PMOD1_tri_z[6] ? 1'bz : PMOD1_tri_o[6];
 //  assign PMOD1_7 = PMOD1_tri_z[7] ? 1'bz : PMOD1_tri_o[7];
+   wire [3:0] qspi_io_i;
+   wire [3:0] qspi_io_o;
+   wire [3:0] qspi_io_e;
+   wire qspi_sclk;
+   wire qspi_ncs;
 
+  assign qspi_io_i=4'hF;
+  
   nanosoc_design nanosoc_design_i
        (.pmoda_tri_i(PMOD0_tri_i),
         .pmoda_tri_o(PMOD0_tri_o),
-        .pmoda_tri_z(PMOD0_tri_z)//,
+        .pmoda_tri_z(PMOD0_tri_z),
+        .qspi_io_i_0(qspi_io_i),
+        .qspi_io_o_0(qspi_io_o),
+        .qspi_io_e_0(qspi_io_e),
+        .qspi_sclk_0(qspi_sclk),
+        .qspi_ncs_0(qspi_ncs)
 //        .PMOD1_tri_i(PMOD1_tri_i),
 //        .PMOD1_tri_o(PMOD1_tri_o),
 //        .PMOD1_tri_z(PMOD1_tri_z),
diff --git a/fpga/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl b/fpga/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl
index e11d1a3b2d3163c7ce02f80b20c77e398e2c36be..84cf9a9c04112eecaaaf989a03d24fb1da8bb834 100644
--- a/fpga/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl
+++ b/fpga/targets/pynq_zcu104/vivado_script/2021_1/nanosoc_design.tcl
@@ -741,6 +741,12 @@ proc create_root_design { parentCell } {
   set pmoda_tri_i [ create_bd_port -dir I -from 7 -to 0 pmoda_tri_i ]
   set pmoda_tri_o [ create_bd_port -dir O -from 7 -to 0 pmoda_tri_o ]
   set pmoda_tri_z [ create_bd_port -dir O -from 7 -to 0 pmoda_tri_z ]
+  
+  set qspi_io_i_0 [ create_bd_port -dir I -from 3 -to 0 qspi_io_i_0]
+  set qspi_io_o_0 [ create_bd_port -dir O -from 3 -to 0 qspi_io_o_0]
+  set qspi_io_e_0 [ create_bd_port -dir O -from 3 -to 0 qspi_io_e_0]
+  set qspi_sclk_0 [ create_bd_port -dir O -from 0 -to 0 qspi_sclk_0]
+  set qspi_ncs_0 [ create_bd_port -dir O -from 0 -to 0 qspi_ncs_0]
 
   # Create instance: cmsdk_socket
   create_hier_cell_cmsdk_socket [current_bd_instance .] cmsdk_socket
@@ -1788,6 +1794,11 @@ Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD05000
   connect_bd_net -net xlconstant_zero_dout [get_bd_pins xlconstant_zero/dout] [get_bd_pins nanosoc_chip_0/diag_mode] [get_bd_pins nanosoc_chip_0/diag_ctrl] [get_bd_pins nanosoc_chip_0/scan_mode] [get_bd_pins nanosoc_chip_0/scan_enable] [get_bd_pins nanosoc_chip_0/bist_mode] [get_bd_pins nanosoc_chip_0/bist_enable] [get_bd_pins nanosoc_chip_0/alt_mode] [get_bd_pins nanosoc_chip_0/uart_rxd_i] [get_bd_pins nanosoc_chip_0/swd_mode] [get_bd_pins nanosoc_chip_0/test_i]
   connect_bd_net -net xlconstant_zerox4_dout [get_bd_pins xlconstant_zerox4/dout] [get_bd_pins nanosoc_chip_0/scan_in] [get_bd_pins nanosoc_chip_0/bist_in]
   connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins cmsdk_socket/aclk] [get_bd_pins nanosoc_chip_0/clk_i] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_lpd_aclk]
+  connect_bd_net -net qspi_io_i_1 [get_bd_pins nanosoc_chip_0/qspi_io_i] [get_bd_ports qspi_io_i_0]
+  connect_bd_net -net qspi_io_o_1 [get_bd_pins nanosoc_chip_0/qspi_io_o] [get_bd_ports qspi_io_o_0]
+  connect_bd_net -net qspi_io_e_1 [get_bd_pins nanosoc_chip_0/qspi_io_e] [get_bd_ports qspi_io_e_0]
+  connect_bd_net -net qspi_sclk_1 [get_bd_pins nanosoc_chip_0/qspi_sclk] [get_bd_ports qspi_sclk_0]
+  connect_bd_net -net qspi_ncs_1 [get_bd_pins nanosoc_chip_0/qspi_ncs] [get_bd_ports qspi_ncs_0]
 
   # Create address segments
   assign_bd_address -offset 0x80000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs cmsdk_socket/axi_gpio_0/S_AXI/Reg] -force
diff --git a/fpga/targets/pynq_zcu104/vivado_script/2024_1/nanosoc_design.tcl b/fpga/targets/pynq_zcu104/vivado_script/2024_1/nanosoc_design.tcl
index e11d1a3b2d3163c7ce02f80b20c77e398e2c36be..655abc1d3fdd1838e7ebc79382747520e2f43d20 100644
--- a/fpga/targets/pynq_zcu104/vivado_script/2024_1/nanosoc_design.tcl
+++ b/fpga/targets/pynq_zcu104/vivado_script/2024_1/nanosoc_design.tcl
@@ -742,6 +742,12 @@ proc create_root_design { parentCell } {
   set pmoda_tri_o [ create_bd_port -dir O -from 7 -to 0 pmoda_tri_o ]
   set pmoda_tri_z [ create_bd_port -dir O -from 7 -to 0 pmoda_tri_z ]
 
+  set qspi_io_i_0 [ create_bd_port -dir I -from 3 -to 0 qspi_io_i_0]
+  set qspi_io_o_0 [ create_bd_port -dir O -from 3 -to 0 qspi_io_o_0]
+  set qspi_io_e_0 [ create_bd_port -dir O -from 3 -to 0 qspi_io_e_0]
+  set qspi_sclk_0 [ create_bd_port -dir O -from 0 -to 0 qspi_sclk_0]
+  set qspi_ncs_0 [ create_bd_port -dir O -from 0 -to 0 qspi_ncs_0]
+
   # Create instance: cmsdk_socket
   create_hier_cell_cmsdk_socket [current_bd_instance .] cmsdk_socket
 
@@ -1788,6 +1794,11 @@ Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD05000
   connect_bd_net -net xlconstant_zero_dout [get_bd_pins xlconstant_zero/dout] [get_bd_pins nanosoc_chip_0/diag_mode] [get_bd_pins nanosoc_chip_0/diag_ctrl] [get_bd_pins nanosoc_chip_0/scan_mode] [get_bd_pins nanosoc_chip_0/scan_enable] [get_bd_pins nanosoc_chip_0/bist_mode] [get_bd_pins nanosoc_chip_0/bist_enable] [get_bd_pins nanosoc_chip_0/alt_mode] [get_bd_pins nanosoc_chip_0/uart_rxd_i] [get_bd_pins nanosoc_chip_0/swd_mode] [get_bd_pins nanosoc_chip_0/test_i]
   connect_bd_net -net xlconstant_zerox4_dout [get_bd_pins xlconstant_zerox4/dout] [get_bd_pins nanosoc_chip_0/scan_in] [get_bd_pins nanosoc_chip_0/bist_in]
   connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins cmsdk_socket/aclk] [get_bd_pins nanosoc_chip_0/clk_i] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_lpd_aclk]
+  connect_bd_net -net qspi_io_i_1 [get_bd_pins nanosoc_chip_0/qspi_io_i] [get_bd_ports qspi_io_i_0]
+  connect_bd_net -net qspi_io_o_1 [get_bd_pins nanosoc_chip_0/qspi_io_o] [get_bd_ports qspi_io_o_0]
+  connect_bd_net -net qspi_io_e_1 [get_bd_pins nanosoc_chip_0/qspi_io_e] [get_bd_ports qspi_io_e_0]
+  connect_bd_net -net qspi_sclk_1 [get_bd_pins nanosoc_chip_0/qspi_sclk] [get_bd_ports qspi_sclk_0]
+  connect_bd_net -net qspi_ncs_1 [get_bd_pins nanosoc_chip_0/qspi_ncs] [get_bd_ports qspi_ncs_0]
 
   # Create address segments
   assign_bd_address -offset 0x80000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs cmsdk_socket/axi_gpio_0/S_AXI/Reg] -force
diff --git a/nanosoc/ahb_qspi b/nanosoc/ahb_qspi
new file mode 160000
index 0000000000000000000000000000000000000000..32f89699e9e142bfd8bd267145c8710962d8d2ca
--- /dev/null
+++ b/nanosoc/ahb_qspi
@@ -0,0 +1 @@
+Subproject commit 32f89699e9e142bfd8bd267145c8710962d8d2ca
diff --git a/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v b/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v
index 12253d740a74707c81312d1585587d3ac1aa4eab..576eae18b21ecdf401cbc597bf88c894c947cfd7 100644
--- a/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v
+++ b/nanosoc/nanosoc_chip/chip/verilog/nanosoc_chip.v
@@ -51,7 +51,15 @@ module nanosoc_chip #(
   output wire          swdio_o,
   output wire          swdio_e,
   output wire          swdio_z,
-  input  wire          swdclk_i // alternate test scan enable
+  input  wire          swdclk_i, // alternate test scan enable
+
+  // QSPI
+  output wire          qspi_sclk,
+  output wire          qspi_ncs,
+  output wire [3:0]    qspi_io_o,
+  input  wire [3:0]    qspi_io_i,
+  output wire [3:0]    qspi_io_e
+
 );
 
   //--------------------------
@@ -166,7 +174,14 @@ module nanosoc_chip #(
       .P0_OUTEN(P0_OUTEN),
       .P1_IN(P1_IN), //_MUX),
       .P1_OUT(P1_OUT),
-      .P1_OUTEN(P1_OUTEN)
+      .P1_OUTEN(P1_OUTEN),
+
+      .QSPI_SCLK(qspi_sclk),
+      .QSPI_nCS(qspi_ncs),
+      .QSPI_IO_o(qspi_io_o),
+      .QSPI_IO_i(qspi_io_i),
+      .QSPI_IO_e(qspi_io_e)
+
   );
 
 endmodule
diff --git a/nanosoc/nanosoc_chip/pads/glib/verilog/nanosoc_chip_pads.v b/nanosoc/nanosoc_chip/pads/glib/verilog/nanosoc_chip_pads.v
index e90a05005a4fd6c416c9ba88abc24b992e0e2758..21d8a1f8be947122f3c770bfe2ae4b79c616c352 100644
--- a/nanosoc/nanosoc_chip/pads/glib/verilog/nanosoc_chip_pads.v
+++ b/nanosoc/nanosoc_chip/pads/glib/verilog/nanosoc_chip_pads.v
@@ -51,7 +51,11 @@ module nanosoc_chip_pads (
   inout  wire  [15:0]  P0,
   inout  wire  [15:0]  P1,
   inout  wire          SWDIO,
-  inout  wire          SWDCK);
+  inout  wire          SWDCK,
+  inout  wire [3:0]    QSPI_IO,
+  output wire          QSPI_SCLK,
+  output wire          QSPI_nCS
+);
 
 
 //------------------------------------
@@ -75,6 +79,12 @@ wire [15:0] pad_gpio_port1_i ;
 wire [15:0] pad_gpio_port1_o ;
 wire [15:0] pad_gpio_port1_e ;
 wire [15:0] pad_gpio_port1_z ;
+wire        pad_qspi_sclk;
+wire        pad_qspi_ncs;
+wire [3:0]  pad_qspi_io_o;
+wire [3:0]  pad_qspi_io_i;
+wire [3:0]  pad_qspi_io_e;
+
 wire        soc_nreset;
 wire        soc_diag_mode;
 wire        soc_diag_ctrl;
@@ -217,7 +227,12 @@ nanosoc_chip_cfg #(
   .swdio_o     (soc_swd_dio_o),
   .swdio_e     (soc_swd_dio_e),
   .swdio_z     (soc_swd_dio_z),
-  .swdclk_i    (pad_swdclk_i)
+  .swdclk_i    (pad_swdclk_i),
+  .qspi_sclk   (pad_qspi_sclk),
+  .qspi_ncs    (pad_qspi_ncs),
+  .qspi_io_o   (pad_qspi_io_o),
+  .qspi_io_i   (pad_qspi_io_i),
+  .qspi_io_e   (pad_qspi_io_e)
   );
 
 
@@ -296,6 +311,50 @@ PAD_INOUT8MA_NOE uPAD_SWDCK_I (
    .NOE (tiehi)
    );
 
+PAD_INOUT8MA_NOE uPAD_QSPI_SCLK_o (
+   .PAD (QSPI_SCLK), 
+   .O   (pad_qspi_sclk), 
+   .I   (),
+   .NOE (tielo)
+   );
+
+PAD_INOUT8MA_NOE uPAD_QSPI_nCS_o (
+   .PAD (QSPI_nCS), 
+   .O   (pad_qspi_ncs), 
+   .I   (),
+   .NOE (tielo)
+   );
+
+
+// QSPI IO
+PAD_INOUT8MA_NOE uPAD_QSPI_IO_0 (
+   .PAD (QSPI_IO[0]),
+   .O   (pad_qspi_io_o[0]),
+   .I   (pad_qspi_io_i[0]),
+   .NOE (~pad_qspi_io_e[0])
+   );
+PAD_INOUT8MA_NOE uPAD_QSPI_IO_1 (
+   .PAD (QSPI_IO[1]),
+   .O   (pad_qspi_io_o[1]),
+   .I   (pad_qspi_io_i[1]),
+   .NOE (~pad_qspi_io_e[1])
+   );
+
+PAD_INOUT8MA_NOE uPAD_QSPI_IO_2 (
+   .PAD (QSPI_IO[2]),
+   .O   (pad_qspi_io_o[2]),
+   .I   (pad_qspi_io_i[2]),
+   .NOE (~pad_qspi_io_e[2])
+   );
+
+PAD_INOUT8MA_NOE uPAD_QSPI_IO_3 (
+   .PAD (QSPI_IO[3]),
+   .O   (pad_qspi_io_o[3]),
+   .I   (pad_qspi_io_i[3]),
+   .NOE (~pad_qspi_io_e[3])
+   );
+
+
 // GPI.I Port 0 x 16
 
 PAD_INOUT8MA_NOE uPAD_P0_00 (
diff --git a/nanosoc/nanosoc_regions/flash_0/verilog/nanosoc_region_flash_0.v b/nanosoc/nanosoc_regions/flash_0/verilog/nanosoc_region_flash_0.v
new file mode 100644
index 0000000000000000000000000000000000000000..26c3f85e77520858f418343e89a4c5ee381d306c
--- /dev/null
+++ b/nanosoc/nanosoc_regions/flash_0/verilog/nanosoc_region_flash_0.v
@@ -0,0 +1,98 @@
+//-----------------------------------------------------------------------------
+// Nanosoc CPU Instruction Memory Region (IMEM) - SRAM
+// - Region Mapped to: 0x20000000-0x2fffffff
+// - Memory Exhibits Wrapping Behaviour
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Mapstone (d.a.mapstone@soton.ac.uk)
+//
+// Copyright 2021-3, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+module nanosoc_region_flash_0 #(
+  parameter    SYS_ADDR_W        = 32,         // System Address Width
+  parameter    SYS_DATA_W        = 32         // System Data Width
+)(
+  input  wire                   HCLK,
+  input  wire                   HRESETn,
+  input  wire                   PCLK,
+  input  wire                   PRESETn,
+  input  wire                   SYS_RESETn,
+  // AHB connection to Initiator
+  input  wire                   HSEL,
+  input  wire  [SYS_ADDR_W-1:0] HADDR,
+  input  wire             [1:0] HTRANS,
+  input  wire             [2:0] HSIZE,
+  input  wire             [3:0] HPROT,
+  input  wire                   HWRITE,
+  input  wire                   HREADY,
+  input  wire  [SYS_DATA_W-1:0] HWDATA,
+
+  output wire                   HREADYOUT,
+  output wire                   HRESP,
+  output wire  [SYS_DATA_W-1:0] HRDATA,
+
+  // APB Signals
+  input  wire [15:0]            PADDR,
+  input  wire [2:0]             PPROT,
+  input  wire                   PSEL,
+  input  wire                   PENABLE,
+  input  wire                   PWRITE,
+  input  wire [31:0]            PWDATA,
+  input  wire [3:0]             PSTRB,
+  output wire [31:0]            PRDATA,
+  output wire                   PREADY,
+  output wire                   PSLVERR,
+
+  // QSPI Signals
+  output wire                   QSPI_SCLK,
+  output wire                   QSPI_nCS,
+  output wire [3:0]             QSPI_IO_o,
+  input  wire [3:0]             QSPI_IO_i,
+  output wire [3:0]             QSPI_IO_e
+
+);
+
+  top_ahb_qspi #(
+      .ADDR_W(SYS_ADDR_W),
+      .DATA_W(SYS_DATA_W)
+  ) u_imem_qspi (
+      .HCLK(HCLK),
+      .HRESETn(SYS_RESETn),
+      .PCLK(PCLK),
+      .PRESETn(SYS_RESETn),
+
+      .HADDR(HADDR),
+      .HTRANS(HTRANS),
+      .HWRITE(HWRITE),
+      .HSIZE(HSIZE),
+      .HBURST(3'b000),
+      .HPROT(HPROT),
+      .HWDATA(HWDATA),
+      .HSELx(HSEL),
+      .HRDATA(HRDATA),
+      .HREADY(HREADY),
+      .HREADYOUT(HREADYOUT),
+      .HRESP(HRESP),
+
+      .PADDR(PADDR),
+      .PPROT(PPROT),
+      .PSEL(PSEL),
+      .PENABLE(PENABLE),
+      .PWRITE(PWRITE),
+      .PWDATA(PWDATA),
+      .PSTRB(PSTRB),
+      .PRDATA(PRDATA),
+      .PREADY(PREADY),
+      .PSLVERR(PSLVERR),
+
+      .QSPI_SCLK(QSPI_SCLK),
+      .QSPI_nCS(QSPI_nCS),
+      .QSPI_IO_o(QSPI_IO_o),
+      .QSPI_IO_i(QSPI_IO_i),
+      .QSPI_IO_e(QSPI_IO_e)
+  );
+
+endmodule
diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_qspi_apb_ss.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_qspi_apb_ss.v
new file mode 100644
index 0000000000000000000000000000000000000000..8fc3862707533dcc6ad89219a3277f2ac4a75d0d
--- /dev/null
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_qspi_apb_ss.v
@@ -0,0 +1,177 @@
+//-----------------------------------------------------------------------------
+// NanoSoC APB Subsystem adapted from Arm CMSDK APB Subsystem
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Flynn (d.w.flynn@soton.ac.uk)
+//
+// Copyright � 2021-3, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// The confidential and proprietary information contained in this file may
+// only be used by a person authorised under and to the extent permitted
+// by a subsisting licensing agreement from Arm Limited or its affiliates.
+//
+//            (C) COPYRIGHT 2010-2011 Arm Limited or its affiliates.
+//                ALL RIGHTS RESERVED
+//
+// This entire notice must be reproduced on all copies of this file
+// and copies of this file may only be made by a person if such person is
+// permitted to do so under the terms of a subsisting license agreement
+// from Arm Limited or its affiliates.
+//
+//      SVN Information
+//
+//      Checked In          : $Date: 2017-10-10 15:55:38 +0100 (Tue, 10 Oct 2017) $
+//
+//      Revision            : $Revision: 371321 $
+//
+//      Release Information : Cortex-M System Design Kit-r1p1-00rel0
+//
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// Abstract : APB sub system
+//-----------------------------------------------------------------------------
+module nanosoc_qspi_apb_ss #(
+  // Big endian - Add additional endian conversion logic to support big endian.
+  //              (for ARM internal testing and evaluation of the processor in
+  //              big endian configuration).
+  //              0 = little endian, 1 = big endian
+  //
+  //              The example systems including this APB subsystem are designed as
+  //              little endian. Most of the peripherals and memory system are
+  //              little endian. This parameter is introduced to allows ARM to
+  //              perform system level tests to verified behaviour of bus
+  //              components in big endian configuration, and to allow designers
+  //              to evaluate the processor in big endian configuration.
+  //
+  //              Use of this parameter is not recommended for actual product
+  //              development as this adds extra hardware. For big endian systems
+  //              ideally the peripherals should be modified to use a big endian
+  //              programmer's model.
+  parameter  BE = 0)
+ (
+// --------------------------------------------------------------------------
+// Port Definitions
+// --------------------------------------------------------------------------
+  // AHB interface for AHB to APB bridge
+
+  input  wire           HCLK,
+  input  wire           HRESETn,
+
+  input  wire           HSEL,
+  input  wire   [15:0]  HADDR,
+  input  wire    [1:0]  HTRANS,
+  input  wire           HWRITE,
+  input  wire    [2:0]  HSIZE,
+  input  wire    [3:0]  HPROT,
+  input  wire           HREADY,
+  input  wire   [31:0]  HWDATA,
+  output wire           HREADYOUT,
+  output wire   [31:0]  HRDATA,
+  output wire           HRESP,
+
+  input  wire           PCLK,    // Peripheral clock
+  input  wire           PCLKG,   // Gate PCLK for bus interface only
+  input  wire           PCLKEN,  // Clock divider for AHB to APB bridge
+  input  wire           PRESETn, // APB reset
+
+  // APB Signals
+  input  wire [15:0]    PADDR,
+  input  wire [2:0]     PPROT,
+  input  wire           PSEL,
+  input  wire           PENABLE,
+  input  wire           PWRITE,
+  input  wire [31:0]    PWDATA,
+  input  wire [3:0]     PSTRB,
+  output wire [31:0]    PRDATA,
+  output wire           PREADY,
+  output wire           PSLVERR,
+
+  output wire           APBACTIVE
+);
+
+  // --------------------------------------------------------------------------
+  // Internal wires
+  // --------------------------------------------------------------------------
+
+  // endian handling
+  wire             bigendian;
+  assign           bigendian = (BE!=0) ? 1'b1 : 1'b0;
+
+  wire   [31:0]    hwdata_le; // Little endian write data
+  wire   [31:0]    hrdata_le; // Little endian read data
+  wire             reg_be_swap_ctrl_en = HSEL & HTRANS[1] & HREADY & bigendian;
+  reg     [1:0]    reg_be_swap_ctrl; // registered byte swap control
+  wire    [1:0]    nxt_be_swap_ctrl; // next state of byte swap control
+
+  assign nxt_be_swap_ctrl[1] = bigendian & (HSIZE[1:0]==2'b10); // Swap upper and lower half word
+  assign nxt_be_swap_ctrl[0] = bigendian & (HSIZE[1:0]!=2'b00); // Swap byte within hafword
+
+  // Register byte swap control for data phase
+  always @(posedge HCLK or negedge HRESETn)
+    begin
+    if (~HRESETn)
+      reg_be_swap_ctrl <= 2'b00;
+    else if (reg_be_swap_ctrl_en)
+      reg_be_swap_ctrl <= nxt_be_swap_ctrl;
+    end
+
+  // swap byte within half word
+  wire  [31:0] hwdata_mux_1 = (reg_be_swap_ctrl[0] & bigendian) ?
+     {HWDATA[23:16],HWDATA[31:24],HWDATA[7:0],HWDATA[15:8]}:
+     {HWDATA[31:24],HWDATA[23:16],HWDATA[15:8],HWDATA[7:0]};
+  // swap lower and upper half word
+  assign       hwdata_le    = (reg_be_swap_ctrl[1] & bigendian) ?
+     {hwdata_mux_1[15: 0],hwdata_mux_1[31:16]}:
+     {hwdata_mux_1[31:16],hwdata_mux_1[15:0]};
+  // swap byte within half word
+  wire  [31:0] hrdata_mux_1 = (reg_be_swap_ctrl[0] & bigendian) ?
+     {hrdata_le[23:16],hrdata_le[31:24],hrdata_le[ 7:0],hrdata_le[15:8]}:
+     {hrdata_le[31:24],hrdata_le[23:16],hrdata_le[15:8],hrdata_le[7:0]};
+  // swap lower and upper half word
+  assign       HRDATA       = (reg_be_swap_ctrl[1] & bigendian) ?
+     {hrdata_mux_1[15: 0],hrdata_mux_1[31:16]}:
+     {hrdata_mux_1[31:16],hrdata_mux_1[15:0]};
+
+  // AHB to APB bus bridge
+  cmsdk_ahb_to_apb
+  #(.ADDRWIDTH      (16),
+    .REGISTER_RDATA (1),
+    .REGISTER_WDATA (0))
+  u_ahb_to_apb(
+    // AHB side
+    .HCLK     (HCLK),
+    .HRESETn  (HRESETn),
+    .HSEL     (HSEL),
+    .HADDR    (HADDR[15:0]),
+    .HTRANS   (HTRANS),
+    .HSIZE    (HSIZE),
+    .HPROT    (HPROT),
+    .HWRITE   (HWRITE),
+    .HREADY   (HREADY),
+    .HWDATA   (hwdata_le),
+
+    .HREADYOUT(HREADYOUT), // AHB Outputs
+    .HRDATA   (hrdata_le),
+    .HRESP    (HRESP),
+
+    .PADDR    (PADDR[15:0]),
+    .PSEL     (PSEL),
+    .PENABLE  (PENABLE),
+    .PSTRB    (PSTRB),
+    .PPROT    (PPROT),
+    .PWRITE   (PWRITE),
+    .PWDATA   (PWDATA),
+
+    .APBACTIVE(APBACTIVE),
+    .PCLKEN   (PCLKEN),     // APB clock enable signal
+
+    .PRDATA   (PRDATA),
+    .PREADY   (PREADY),
+    .PSLVERR  (PSLVERR)
+    );
+
+endmodule
diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
index 46c146b2d2ba52fb95085460dc81ef87def5b1cd..39c9e0baa5bf23db24c024804a9c3e0ab45ed7e9 100644
--- a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
@@ -66,6 +66,18 @@ module nanosoc_region_sysio #(
     input  wire                   exp15_pready,
     input  wire                   exp15_pslverr,
 
+    // QSPI APB signals
+    output wire [15:0]            QSPI_PADDR,
+    output wire [2:0]             QSPI_PPROT,
+    output wire                   QSPI_PSEL,
+    output wire                   QSPI_PENABLE,
+    output wire                   QSPI_PWRITE,
+    output wire [31:0]            QSPI_PWDATA,
+    output wire [3:0]             QSPI_PSTRB,
+    input  wire [31:0]            QSPI_PRDATA,
+    input  wire                   QSPI_PREADY,
+    input  wire                   QSPI_PSLVERR,
+
     // CPU sideband signalling
     output wire                 SYS_NMI,          // watchdog_interrupt;
     output wire         [31:0]  SYS_APB_IRQ,      // apbsubsys_interrupt;
@@ -169,6 +181,11 @@ module nanosoc_region_sysio #(
   wire     [SYS_DATA_W-1:0]   pvtsys_hrdata;
   wire                        pvtsys_hresp;
 
+  wire                        qspi_hsel;  // QSPI subsystem AHB interface signals
+  wire                        qspi_hreadyout;
+  wire     [SYS_DATA_W-1:0]   qspi_hrdata;
+  wire                        qspi_hresp;
+
 
   // AHB address decode
   nanosoc_sysio_decode #(
@@ -185,6 +202,7 @@ module nanosoc_region_sysio #(
     .gpio0_hsel   (gpio0_hsel),
     .gpio1_hsel   (gpio1_hsel),
     .sysctrl_hsel (sysctrl_hsel),
+    .qspi_hsel    (qspi_hsel),
   `ifdef AMS_PERIPHERALS
     .adcsys_hsel  (adcsys_hsel),
   `endif
@@ -212,7 +230,7 @@ module nanosoc_region_sysio #(
     .PORT4_ENABLE  (1), // Default
     .PORT5_ENABLE  (AMS_PERIPHERAL_PORT), // ADC Region
     .PORT6_ENABLE  (SNPS_PERIPHERAL_PORT), // Synopsys PVT monitoring region
-    .PORT7_ENABLE  (0),
+    .PORT7_ENABLE  (1),
     .PORT8_ENABLE  (0),
     .PORT9_ENABLE  (0),
     .DW            (32)
@@ -248,10 +266,10 @@ module nanosoc_region_sysio #(
     .HREADYOUT6   (pvtsys_hreadyout),
     .HRESP6       (pvtsys_hresp),
     .HRDATA6      (pvtsys_hrdata),
-    .HSEL7        (1'b0),     // Input Port 7
-    .HREADYOUT7   (defslv_hreadyout),
-    .HRESP7       (defslv_hresp),
-    .HRDATA7      (defslv_hrdata),
+    .HSEL7        (qspi_hsel),     // Input Port 7
+    .HREADYOUT7   (qspi_hreadyout),
+    .HRESP7       (qspi_hresp),
+    .HRDATA7      (qspi_hrdata),
     .HSEL8        (1'b0),     // Input Port 8
     .HREADYOUT8   (defslv_hreadyout),
     .HRESP8       (defslv_hresp),
@@ -598,4 +616,37 @@ module nanosoc_region_sysio #(
       .PRESETn(PRESETn) // APB reset
   );
 `endif
+
+nanosoc_qspi_apb_ss #(.BE(BE)) u_nanosoc_qspi_apb_ss(
+  .HCLK(HCLK),
+  .HRESETn(HRESETn),
+  .HSEL(qspi_hsel),
+  .HADDR(HADDR[15:0]),
+  .HTRANS(HTRANS),
+  .HWRITE(HWRITE),
+  .HSIZE(HSIZE),
+  .HPROT(HPROT),
+  .HREADY(HREADY),
+  .HWDATA(HWDATA),
+  .HREADYOUT(qspi_hreadyout),
+  .HRDATA(qspi_hrdata),
+  .HRESP(qspi_hresp),
+
+  .PCLK(PCLK),
+  .PCLKG(PCLKG),
+  .PCLKEN(1'b1),
+  .PRESETn(PRESETn),
+  .PADDR(QSPI_PADDR),
+  .PPROT(QSPI_PPROT),
+  .PSEL(QSPI_PSEL),
+  .PENABLE(QSPI_PENABLE),
+  .PWRITE(QSPI_PWRITE),
+  .PWDATA(QSPI_PWDATA),
+  .PSTRB(QSPI_PSTRB),
+  .PRDATA(QSPI_PRDATA),
+  .PREADY(QSPI_PREADY),
+  .PSLVERR(QSPI_PSLVERR),
+  .APBACTIVE()
+);
+
 endmodule
diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
index 5cb63f01ad43dda6766228a50265b89ffa72511a..9c738fb116fdef451e4a67fb5ec6b8485d7e958a 100644
--- a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
@@ -49,7 +49,8 @@ module nanosoc_sysio_decode #(
   parameter BASEADDR_GPIO1       = 32'h4001_1000,
   // Sysctrl base address
   parameter BASEADDR_SYSCTRL     = 32'h4001_f000,
-  parameter BASEADDR_ADC         = 32'h4002_0000
+  parameter BASEADDR_ADC         = 32'h4002_0000,
+  parameter BASEADDR_QSPI_CTRL   = 32'h4003_0000
 )(
     // System Address
     input wire                  hsel,
@@ -60,6 +61,7 @@ module nanosoc_sysio_decode #(
     output wire                 gpio0_hsel,
     output wire                 gpio1_hsel,
     output wire                 sysctrl_hsel,
+    output wire                 qspi_hsel,
   `ifdef AMS_PERIPHERALS
     output wire                 adcsys_hsel,
   `endif
@@ -72,6 +74,8 @@ module nanosoc_sysio_decode #(
   // 0x40010000 - 0x40010FFF : AHB peripherals (GPIO0)
   // 0x40011000 - 0x40011FFF : AHB peripherals (GPIO1)
   // 0x4001F000 - 0x4001FFFF : AHB peripherals (SYS control)
+  // 0x40020000 - 0x4002FFFF : AMS peripherals
+  // 0x40030000 -
 
   // ----------------------------------------------------------
   // Peripheral Selection decode logic
@@ -85,6 +89,9 @@ module nanosoc_sysio_decode #(
                         BASEADDR_GPIO1[31:12]);   // 0x40011000
   assign sysctrl_hsel = hsel & (haddr[31:12]==
                         BASEADDR_SYSCTRL[31:12]); // 0x4001F000
+  assign qspi_hsel = hsel & (haddr[31:16]==
+                        BASEADDR_QSPI_CTRL[31:16]); // 0x4001F000
+
 `ifdef AMS_PERIPHERALS
   assign adcsys_hsel  = hsel & (haddr[31:12]==
                         BASEADDR_ADC[31:12]);     // 0x40020000
@@ -93,12 +100,12 @@ module nanosoc_sysio_decode #(
   // Default slave decode logic
   // ----------------------------------------------------------
 `ifdef AMS_PERIPHERALS
-  assign defslv_hsel  = ~(apbsys_hsel |
+  assign defslv_hsel  = ~(apbsys_hsel | qspi_hsel |
                           gpio0_hsel   | gpio1_hsel  |
                           sysctrl_hsel | adcsys_hsel
                          );
 `else
-  assign defslv_hsel  = ~(apbsys_hsel |
+  assign defslv_hsel  = ~(apbsys_hsel | qspi_hsel |
                           gpio0_hsel   | gpio1_hsel  |
                           sysctrl_hsel
                          );
diff --git a/nanosoc/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v b/nanosoc/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
index c4974707404039481a6856b4fafa6055f8ba068c..98120a368df2e0438bba54fd0c7f27f7f6399fd5 100644
--- a/nanosoc/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
+++ b/nanosoc/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
@@ -104,7 +104,41 @@ module nanosoc_ss_cpu #(
     output wire   [31:0] IMEM_0_HRDATA,          // Read data bus
     output wire          IMEM_0_HRESP,           // Transfer response
     output wire          IMEM_0_HREADYOUT,       // AHB ready out
-    
+
+    // FLASH 0 AHB Lite port
+    input  wire          FLASH_0_HSEL,            // Select
+    input  wire   [31:0] FLASH_0_HADDR,           // Address bus
+    input  wire    [1:0] FLASH_0_HTRANS,          // Transfer type
+    input  wire          FLASH_0_HWRITE,          // Transfer direction
+    input  wire    [2:0] FLASH_0_HSIZE,           // Transfer size
+    input  wire    [2:0] FLASH_0_HBURST,          // Burst type
+    input  wire    [3:0] FLASH_0_HPROT,           // Protection control
+    input  wire   [31:0] FLASH_0_HWDATA,          // Write data
+    input  wire          FLASH_0_HMASTLOCK,       // Locked Sequence
+    input  wire          FLASH_0_HREADY,          // HREADY feedback
+    output wire   [31:0] FLASH_0_HRDATA,          // Read data bus
+    output wire          FLASH_0_HRESP,           // Transfer response
+    output wire          FLASH_0_HREADYOUT,       // AHB ready out
+
+    // IMEM QSPI APB Signals
+    input  wire [15:0]   QSPI_PADDR,
+    input  wire [2:0]    QSPI_PPROT,
+    input  wire          QSPI_PSEL,
+    input  wire          QSPI_PENABLE,
+    input  wire          QSPI_PWRITE,
+    input  wire [31:0]   QSPI_PWDATA,
+    input  wire [3:0]    QSPI_PSTRB,
+    output wire [31:0]   QSPI_PRDATA,
+    output wire          QSPI_PREADY,
+    output wire          QSPI_PSLVERR,
+
+    // QSPI Signals
+    output wire          QSPI_SCLK,
+    output wire          QSPI_nCS,
+    output wire [3:0]    QSPI_IO_o,
+    input  wire [3:0]    QSPI_IO_i,
+    output wire [3:0]    QSPI_IO_e,
+
     // DMEM 0 AHB Lite port
     input  wire          DMEM_0_HSEL,            // Select
     input  wire   [31:0] DMEM_0_HADDR,           // Address bus
@@ -261,7 +295,55 @@ module nanosoc_ss_cpu #(
         .HRESP(IMEM_0_HRESP),
         .HRDATA(IMEM_0_HRDATA)
     );
-    
+    // -----------------------------------------------
+    // CPU 0 Instruction Memory (FLASH) Region Instantiation
+    // -----------------------------------------------
+    nanosoc_region_flash_0 #(
+        .SYS_ADDR_W        (SYS_ADDR_W),
+        .SYS_DATA_W        (SYS_DATA_W)
+    ) u_region_flash_0 (
+        // Clock and Reset
+        .HCLK(SYS_HCLK),
+        .HRESETn(SYS_HRESETn),
+        .PCLK(SYS_HCLK),
+        .PRESETn(SYS_HRESETn),
+
+        .SYS_RESETn(SYS_SYSRESETn),
+        // AHB connection to Initiator
+        .HSEL(FLASH_0_HSEL),
+        .HADDR(FLASH_0_HADDR),
+        .HTRANS(FLASH_0_HTRANS),
+        .HSIZE(FLASH_0_HSIZE),
+        .HPROT(FLASH_0_HPROT),
+        .HWRITE(FLASH_0_HWRITE),
+        .HREADY(FLASH_0_HREADY),
+        .HWDATA(FLASH_0_HWDATA),
+
+        // Outputs
+        .HREADYOUT(FLASH_0_HREADYOUT),
+        .HRESP(FLASH_0_HRESP),
+        .HRDATA(FLASH_0_HRDATA),
+
+        // APB
+        .PADDR(QSPI_PADDR),
+        .PPROT(QSPI_PPROT),
+        .PSEL(QSPI_PSEL),
+        .PENABLE(QSPI_PENABLE),
+        .PWRITE(QSPI_PWRITE),
+        .PWDATA(QSPI_PWDATA),
+        .PSTRB(QSPI_PSTRB),
+        .PRDATA(QSPI_PRDATA),
+        .PREADY(QSPI_PREADY),
+        .PSLVERR(QSPI_PSLVERR),
+
+        // QSPI Signals
+        .QSPI_SCLK(QSPI_SCLK),
+        .QSPI_nCS(QSPI_nCS),
+        .QSPI_IO_o(QSPI_IO_o),
+        .QSPI_IO_i(QSPI_IO_i),
+        .QSPI_IO_e(QSPI_IO_e)
+    );
+
     // ---------------------------------------
     // CPU 0 Data Memory Region Instantiation
     // ---------------------------------------
@@ -290,6 +372,6 @@ module nanosoc_ss_cpu #(
         .HRESP(DMEM_0_HRESP),
         .HRDATA(DMEM_0_HRDATA)
     );
-    
-    
-endmodule
\ No newline at end of file
+
+
+endmodule
diff --git a/nanosoc/nanosoc_subsystems/systemctrl/verilog/nanosoc_ss_systemctrl.v b/nanosoc/nanosoc_subsystems/systemctrl/verilog/nanosoc_ss_systemctrl.v
index 2796e1e9e04cb533c38187bab5a640be4f5b025a..343ca69f37fcac82ee33b4b83f71832475757936 100644
--- a/nanosoc/nanosoc_subsystems/systemctrl/verilog/nanosoc_ss_systemctrl.v
+++ b/nanosoc/nanosoc_subsystems/systemctrl/verilog/nanosoc_ss_systemctrl.v
@@ -67,6 +67,18 @@ module nanosoc_ss_systemctrl #(
     output  wire                  SYSTABLE_HRESP,          // AHB response
     output  wire                  SYSTABLE_HREADYOUT,      // AHB ready out
 
+    // QSPI APB signals
+    output wire [15:0]            QSPI_PADDR,
+    output wire [2:0]             QSPI_PPROT,
+    output wire                   QSPI_PSEL,
+    output wire                   QSPI_PENABLE,
+    output wire                   QSPI_PWRITE,
+    output wire [31:0]            QSPI_PWDATA,
+    output wire [3:0]             QSPI_PSTRB,
+    input  wire [31:0]            QSPI_PRDATA,
+    input  wire                   QSPI_PREADY,
+    input  wire                   QSPI_PSLVERR,
+
     // APB clocking control
     output wire                   SYS_PCLK,             // Peripheral clock
     output wire                   SYS_PCLKG,            // Gated Peripheral bus clock
@@ -308,6 +320,18 @@ module nanosoc_ss_systemctrl #(
         .exp15_pready(DMAC_0_PREADY),
         .exp15_pslverr(DMAC_0_PSLVERR),
 
+        // QSPI APB interface
+        .QSPI_PADDR(QSPI_PADDR),
+        .QSPI_PPROT(QSPI_PPROT),
+        .QSPI_PSEL(QSPI_PSEL),
+        .QSPI_PENABLE(QSPI_PENABLE),
+        .QSPI_PWRITE(QSPI_PWRITE),
+        .QSPI_PWDATA(QSPI_PWDATA),
+        .QSPI_PSTRB(QSPI_PSTRB),
+        .QSPI_PRDATA(QSPI_PRDATA),
+        .QSPI_PREADY(QSPI_PREADY),
+        .QSPI_PSLVERR(QSPI_PSLVERR),
+
         // CPU sideband signaling
         .SYS_NMI(SYS_NMI),
         .SYS_APB_IRQ(SYS_APB_IRQ),
diff --git a/nanosoc/nanosoc_system/verilog/nanosoc_system.v b/nanosoc/nanosoc_system/verilog/nanosoc_system.v
index 05751f4b05ce7a59253092226a2907c97c8926cc..ced6aa7d7ceac8873ac13021d773cf0458e32480 100644
--- a/nanosoc/nanosoc_system/verilog/nanosoc_system.v
+++ b/nanosoc/nanosoc_system/verilog/nanosoc_system.v
@@ -22,7 +22,7 @@ module nanosoc_system #(
     parameter    APB_DATA_W           = 32,  // APB Peripheral Data Width
     
     // Bootrom 0 Parameters
-    parameter    BOOTROM_ADDR_W       = 10,          // Size of Bootrom (Based on Address Width) - Default 1KB
+    parameter    BOOTROM_ADDR_W       = 11,          // Size of Bootrom (Based on Address Width) - Default 2KB
     
     // IMEM 0 Parameters
     parameter    IMEM_RAM_ADDR_W      = 14,          // Width of IMEM RAM Address - Default 16KB
@@ -98,7 +98,14 @@ module nanosoc_system #(
     output wire               [15:0] P0_OUTEN,         // GPIO 0 output enables
     input  wire               [15:0] P1_IN,            // GPIO 1 inputs
     output wire               [15:0] P1_OUT,           // GPIO 1 outputs
-    output wire               [15:0] P1_OUTEN          // GPIO 1 output enables
+    output wire               [15:0] P1_OUTEN,          // GPIO 1 output enables
+
+    // QSPI
+    output wire                      QSPI_SCLK,
+    output wire                      QSPI_nCS,
+    output wire [3:0]                QSPI_IO_o,
+    input  wire [3:0]                QSPI_IO_i,
+    output wire [3:0]                QSPI_IO_e
 );
 
 // system General purpose I/O ports - before NANOSOC specific mappings
@@ -268,7 +275,20 @@ module nanosoc_system #(
 
     wire          CPU_0_SLEEPING;         // Processor status - sleeping
     wire          CPU_0_SLEEPDEEP;        // Processor status - deep sleep
-    
+
+    // QSPI APB port for FLASH
+    wire [15:0]   QSPI_PADDR;
+    wire [2:0]    QSPI_PPROT;
+    wire          QSPI_PSEL;
+    wire          QSPI_PENABLE;
+    wire          QSPI_PWRITE;
+    wire [31:0]   QSPI_PWDATA;
+    wire [3:0]    QSPI_PSTRB;
+    wire [31:0]   QSPI_PRDATA;
+    wire          QSPI_PREADY;
+    wire          QSPI_PSLVERR;
+
+
     // Interrupt Wiring
     //--------------------------
     assign CPU_0_NMI = SYS_NMI;
@@ -277,10 +297,6 @@ module nanosoc_system #(
     //--------------------------
     assign CPU_0_PMUENABLE = SYS_PMUENABLE;
     
-// QSPI ROM controller here, plus APB control port
-    assign  EXTROM_0_HRDATA[31:0] = 32'hEEEEEEEE; // Read data bus
-    assign  EXTROM_0_HREADYOUT    = 1'b1;         // HREADY tied off always ready 
-    assign  EXTROM_0_HRESP        = 1'b0;         // Transfer response no error
 
     // Instantiate Subsystem
     //--------------------------
@@ -367,7 +383,41 @@ module nanosoc_system #(
         .IMEM_0_HREADY(IMEM_0_HREADY),          
         .IMEM_0_HRESP(IMEM_0_HRESP),           
         .IMEM_0_HREADYOUT(IMEM_0_HREADYOUT),           
-        
+
+        // FLASH 0 AHB Lite port
+        .FLASH_0_HSEL(EXTROM_0_HSEL),           
+        .FLASH_0_HADDR(EXTROM_0_HADDR),           
+        .FLASH_0_HTRANS(EXTROM_0_HTRANS),          
+        .FLASH_0_HWRITE(EXTROM_0_HWRITE),          
+        .FLASH_0_HSIZE(EXTROM_0_HSIZE),           
+        .FLASH_0_HBURST(EXTROM_0_HBURST),          
+        .FLASH_0_HPROT(EXTROM_0_HPROT),           
+        .FLASH_0_HWDATA(EXTROM_0_HWDATA),          
+        .FLASH_0_HMASTLOCK(EXTROM_0_HMASTLOCK),       
+        .FLASH_0_HRDATA(EXTROM_0_HRDATA),          
+        .FLASH_0_HREADY(EXTROM_0_HREADY),          
+        .FLASH_0_HRESP(EXTROM_0_HRESP),           
+        .FLASH_0_HREADYOUT(EXTROM_0_HREADYOUT),           
+
+        // FLASH QSPI APB Signals
+        .QSPI_PADDR(QSPI_PADDR),
+        .QSPI_PPROT(QSPI_PPROT),
+        .QSPI_PSEL(QSPI_PSEL),
+        .QSPI_PENABLE(QSPI_PENABLE),
+        .QSPI_PWRITE(QSPI_PWRITE),
+        .QSPI_PWDATA(QSPI_PWDATA),
+        .QSPI_PSTRB(QSPI_PSTRB),
+        .QSPI_PRDATA(QSPI_PRDATA),
+        .QSPI_PREADY(QSPI_PREADY),
+        .QSPI_PSLVERR(QSPI_PSLVERR),
+
+        // IMEM QSPI Signals
+        .QSPI_SCLK(QSPI_SCLK),
+        .QSPI_nCS(QSPI_nCS),
+        .QSPI_IO_o(QSPI_IO_o),
+        .QSPI_IO_i(QSPI_IO_i),
+        .QSPI_IO_e(QSPI_IO_e),
+
         // DMEM 0 AHB Lite port
         .DMEM_0_HSEL(DMEM_0_HSEL),           
         .DMEM_0_HADDR(DMEM_0_HADDR),           
@@ -1176,6 +1226,17 @@ wire       EXT_DAT_TXD_TREADY ;
         .SYSTABLE_HRESP(SYSTABLE_HRESP),         // AHB response
         .SYSTABLE_HREADYOUT(SYSTABLE_HREADYOUT), // AHB ready out
         
+        .QSPI_PADDR(QSPI_PADDR),
+        .QSPI_PPROT(QSPI_PPROT),
+        .QSPI_PSEL(QSPI_PSEL),
+        .QSPI_PENABLE(QSPI_PENABLE),
+        .QSPI_PWRITE(QSPI_PWRITE),
+        .QSPI_PWDATA(QSPI_PWDATA),
+        .QSPI_PSTRB(QSPI_PSTRB),
+        .QSPI_PRDATA(QSPI_PRDATA),
+        .QSPI_PREADY(QSPI_PREADY),
+        .QSPI_PSLVERR(QSPI_PSLVERR),
+
         // APB clocking control
         .SYS_PCLK(SYS_PCLK),       // Peripheral clock
         .SYS_PCLKG(SYS_PCLKG),     // Gated Peripheral bus clock
diff --git a/nanosoc/synopsys_28nm_slm_integration b/nanosoc/synopsys_28nm_slm_integration
index e88b3d4335b8416b5d78322f45e099ac9a12a1d0..4c4e598a2982a099f5871df1df2515068a288eab 160000
--- a/nanosoc/synopsys_28nm_slm_integration
+++ b/nanosoc/synopsys_28nm_slm_integration
@@ -1 +1 @@
-Subproject commit e88b3d4335b8416b5d78322f45e099ac9a12a1d0
+Subproject commit 4c4e598a2982a099f5871df1df2515068a288eab
diff --git a/projbranch b/projbranch
index 035ef78c2223c9129606d1bdd3be39d26a4d82a0..447d68173874ae653d9b00d6a8f4abe72cc5081a 100644
--- a/projbranch
+++ b/projbranch
@@ -15,4 +15,5 @@ nanosoc/sldma230_tech: main
 nanosoc/socdebug_tech: main
 nanosoc/sldma350_tech: main
 nanosoc/sl_ams_tech: main
-nanosoc/synopsys_28nm_slm_integration: main
\ No newline at end of file
+nanosoc/synopsys_28nm_slm_integration: main
+nanosoc/ahb_qspi: main
\ No newline at end of file
diff --git a/software/cmsis/Device/ARM/CMSDK_CM0/Include/SL_QSPI.h b/software/cmsis/Device/ARM/CMSDK_CM0/Include/SL_QSPI.h
new file mode 100644
index 0000000000000000000000000000000000000000..15de964aa775b72bc6974d8edf92af56581ab0ae
--- /dev/null
+++ b/software/cmsis/Device/ARM/CMSDK_CM0/Include/SL_QSPI.h
@@ -0,0 +1,81 @@
+#include <stdint.h>
+
+#define QSPI_BASEADDR 0x40030000UL
+#define CG092_BASEADDR 0x40031000UL
+
+
+typedef struct{
+    volatile    uint32_t    CTRL;
+    volatile    uint32_t    STATUS;
+    volatile    uint32_t    SPI_CMD;
+    volatile    uint32_t    SPI_ADDR;
+    volatile    uint32_t    READ_DATA[4];
+    volatile    uint32_t    WRITE_DATA[4];
+    volatile    uint32_t    AHB_CMD;
+} SL_AHB_QSPI_TypeDef;
+
+#define SL_AHB_QSPI_CTRL_QIO_Pos        0
+#define SL_AHB_QSPI_CTRL_QIO_Msk        (0x1UL << SL_AHB_QSPI_CTRL_QIO_Pos)
+
+#define SL_AHB_QSPI_CTRL_XiP_Pos        8
+#define SL_AHB_QSPI_CTRL_XiP_Msk        (0x1UL << SL_AHB_QSPI_CTRL_XiP_Pos)
+
+#define SL_AHB_QSPI_CTRL_Mode_Code_Pos  16
+#define SL_AHB_QSPI_CTRL_Mode_Code_Msk  (0xFFUL << SL_AHB_QSPI_CTRL_Mode_Code_Pos)
+
+#define SL_AHB_QSPI_CTRL_Cont_Rd_Pos    24
+#define SL_AHB_QSPI_CTRL_Cont_Rd_Msk    (0x1UL << SL_AHB_QSPI_CTRL_Cont_Rd_Pos)
+
+#define SL_AHB_QSPI_CTRL_No_CMD_Pos     25
+#define SL_AHB_QSPI_CTRL_No_CMD_Msk     (0x1UL << SL_AHB_QSPI_CTRL_No_CMD_Pos)
+
+#define SL_AHB_QSPI_STATUS_Busy_Pos     0
+#define SL_AHB_QSPI_STATUS_Busy_Msk     (0x1UL << SL_AHB_QSPI_STATUS_Busy_Pos)
+
+#define SL_AHB_QSPI_SPI_CMD_Pos         0
+#define SL_AHB_QSPI_SPI_CMD_Msk         (0xFFUL << SL_AHB_QSPI_SPI_CMD_Pos)
+
+#define SL_AHB_QSPI_SPI_CMD_Enable_Pos  8
+#define SL_AHB_QSPI_SPI_CMD_Enable_Msk  (0x1UL << SL_AHB_QSPI_SPI_CMD_Enable_Pos)
+
+#define SL_AHB_QSPI_SPI_CMD_Rd_Enable_Pos  9
+#define SL_AHB_QSPI_SPI_CMD_Rd_Enable_Msk  (0x1UL << SL_AHB_QSPI_SPI_CMD_Rd_Enable_Pos)
+
+#define SL_AHB_QSPI_SPI_CMD_Wr_Enable_Pos  10
+#define SL_AHB_QSPI_SPI_CMD_Wr_Enable_Msk  (0x1UL << SL_AHB_QSPI_SPI_CMD_Wr_Enable_Pos)
+
+#define SL_AHB_QSPI_SPI_CMD_Addr_Enable_Pos  11
+#define SL_AHB_QSPI_SPI_CMD_Addr_Enable_Msk  (0x1UL << SL_AHB_QSPI_SPI_CMD_Addr_Enable_Pos)
+
+#define SL_AHB_QSPI_SPI_CMD_N_Dummy_Pos  12
+#define SL_AHB_QSPI_SPI_CMD_N_Dummy_Msk  (0xFUL << SL_AHB_QSPI_SPI_CMD_N_Dummy_Pos)
+
+#define SL_AHB_QSPI_SPI_CMD_N_RW_Bytes_Pos  16
+#define SL_AHB_QSPI_SPI_CMD_N_RW_Bytes_Msk  (0xFUL << SL_AHB_QSPI_SPI_CMD_N_RW_Bytes_Pos)
+
+
+typedef struct{
+    volatile    uint32_t    CCR;
+    volatile    uint32_t    SR;
+    volatile    uint32_t    IRQMASK;
+    volatile    uint32_t    IRQSTAT;
+    volatile    uint32_t    HWPARAMS;
+    volatile    uint32_t    CSHR;
+    volatile    uint32_t    CSMR;
+} CG092_TypeDef;
+
+
+#define SL_QSPI         ((SL_AHB_QSPI_TypeDef *) QSPI_BASEADDR)
+#define CG092           ((CG092_TypeDef *) CG092_BASEADDR)
+
+extern uint32_t SPI_READ_JEDIC(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+extern int SPI_STARTUP(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+extern void SPI_WAIT_BUSY(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+extern void SPI_RESET(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+extern void SET_QPI_MODE(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+extern void QPI_READ_WORDS_no_data(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI, uint32_t addr, uint8_t n_words, uint32_t n_dummy, uint8_t cont_read);
+extern void QPI_SET_CONT_READ(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+extern void QPI_SET_CONT_READ_MICRON(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+extern void QPI_SET_AHB_MODE(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+
+extern void CACHE_STARTUP(CG092_TypeDef *CACHE);
diff --git a/software/cmsis/Device/ARM/CMSDK_CM0/Source/SL_QSPI.c b/software/cmsis/Device/ARM/CMSDK_CM0/Source/SL_QSPI.c
new file mode 100644
index 0000000000000000000000000000000000000000..f6796e62151785d77762cbffe05f81e2971078de
--- /dev/null
+++ b/software/cmsis/Device/ARM/CMSDK_CM0/Source/SL_QSPI.c
@@ -0,0 +1,134 @@
+
+#include "SL_QSPI.h"
+
+uint8_t SET_QIO_MODE_CMD = 0x38;
+
+uint32_t SPI_READ_JEDIC(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+int SPI_STARTUP(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+void SPI_WAIT_BUSY(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+void SPI_RESET(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+void SET_QPI_MODE(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+void QPI_READ_WORDS_no_data(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI, uint32_t addr, uint8_t n_words, uint32_t n_dummy, uint8_t cont_read);
+void QPI_SET_CONT_READ(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+void QPI_SET_CONT_READ_MICRON(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+void QPI_SET_AHB_MODE(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI);
+
+void CACHE_STARTUP(CG092_TypeDef *CACHE);
+
+void CACHE_STARTUP(CG092_TypeDef *CACHE){
+    CACHE->CCR=0;
+    CACHE->CCR=0x1; //DON'T USE PREFETCH
+    while((CACHE->SR)&0x3 != 2){;}
+}
+
+int SPI_STARTUP(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    uint32_t ID;
+    // Check first if warm reset
+    if(SL_AHB_QSPI->CTRL == 0){
+        SPI_RESET(SL_AHB_QSPI);
+        ID=SPI_READ_JEDIC(SL_AHB_QSPI);
+        if((ID==0xFFFFFFFF)||(ID==0x00000000)){
+            return 1;
+        } else {
+            if((ID&0xFF)!=0xBF){
+                SET_QIO_MODE_CMD = 0x35;
+                SL_AHB_QSPI->AHB_CMD = (8<<SL_AHB_QSPI_SPI_CMD_N_Dummy_Pos) + 0x0B;
+                SET_QPI_MODE(SL_AHB_QSPI);
+                QPI_SET_CONT_READ_MICRON(SL_AHB_QSPI);
+                QPI_READ_WORDS_no_data(SL_AHB_QSPI, 0x00000000, 1, 10, 0);
+                SL_AHB_QSPI->CTRL |= (1<<25);
+                QPI_READ_WORDS_no_data(SL_AHB_QSPI, 0x00001000, 1, 8, 1);
+                QPI_SET_AHB_MODE(SL_AHB_QSPI);        
+            } else{
+                SL_AHB_QSPI->AHB_CMD = (4<<SL_AHB_QSPI_SPI_CMD_N_Dummy_Pos) + 0x0B;
+                SET_QPI_MODE(SL_AHB_QSPI);
+                QPI_READ_WORDS_no_data(SL_AHB_QSPI, 0x00000000, 1, 6, 0);
+                QPI_SET_CONT_READ(SL_AHB_QSPI);
+                QPI_READ_WORDS_no_data(SL_AHB_QSPI, 0x00001000, 1, 4, 1);
+                QPI_SET_AHB_MODE(SL_AHB_QSPI);        
+            }
+            return 0;
+        }
+    }
+    else {
+        return 0;
+    }
+}
+
+void QPI_SET_CONT_READ(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    SL_AHB_QSPI->CTRL |= (1<<25);
+}
+
+void QPI_SET_CONT_READ_MICRON(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    uint32_t CMD=0;
+    // Write Enable
+    SL_AHB_QSPI->SPI_CMD = 0x06;
+    SL_AHB_QSPI->SPI_CMD = 0x106;
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+
+    // Write to volatile register
+    SL_AHB_QSPI->WRITE_DATA[0]=0xF3;
+    CMD = 0x81;
+    CMD |= SL_AHB_QSPI_SPI_CMD_Wr_Enable_Msk;
+    SL_AHB_QSPI->SPI_CMD = CMD;
+    SL_AHB_QSPI->SPI_CMD |= SL_AHB_QSPI_SPI_CMD_Enable_Msk;
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+
+    // Write disable
+    SL_AHB_QSPI->SPI_CMD = 0x04;
+    SL_AHB_QSPI->SPI_CMD = 0x104;
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+}
+
+void QPI_SET_AHB_MODE(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    SL_AHB_QSPI->CTRL |= (1<<8);
+}
+
+void SPI_WAIT_BUSY(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    while(((SL_AHB_QSPI->STATUS)&SL_AHB_QSPI_STATUS_Busy_Msk)!=0){;}
+}
+
+void SPI_RESET(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    SL_AHB_QSPI->SPI_CMD = 0x66;
+    SL_AHB_QSPI->SPI_CMD = 0x166;
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+    SL_AHB_QSPI->SPI_CMD = 0x99;
+    SL_AHB_QSPI->SPI_CMD = 0x199;
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+}
+
+uint32_t SPI_READ_JEDIC(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    SL_AHB_QSPI->SPI_CMD = 0x0003009F;
+    SL_AHB_QSPI->SPI_CMD = 0x0003039F;
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+    return SL_AHB_QSPI->READ_DATA[0];
+}
+
+void QPI_READ_WORDS_no_data(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI, uint32_t addr, uint8_t n_words, uint32_t n_dummy, uint8_t cont_read){
+    uint32_t CMD = 0;
+
+    SL_AHB_QSPI->SPI_ADDR = addr;
+
+    if(cont_read==0){
+        SL_AHB_QSPI->CTRL |= SL_AHB_QSPI_CTRL_Cont_Rd_Msk;
+        SL_AHB_QSPI->CTRL |= (SL_AHB_QSPI_CTRL_Mode_Code_Msk & (0xA0<<16));
+    }
+    CMD |= (SL_AHB_QSPI_SPI_CMD_N_Dummy_Msk & (n_dummy<<12));
+    CMD |= 0x0B;
+    CMD |= SL_AHB_QSPI_SPI_CMD_Rd_Enable_Msk;
+    CMD |= SL_AHB_QSPI_SPI_CMD_Addr_Enable_Msk;
+    CMD |= (SL_AHB_QSPI_SPI_CMD_N_RW_Bytes_Msk & (n_words << 16));
+    SL_AHB_QSPI->SPI_CMD = CMD;
+
+    SL_AHB_QSPI->SPI_CMD |= SL_AHB_QSPI_SPI_CMD_Enable_Msk;
+
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+
+}
+
+void SET_QPI_MODE(SL_AHB_QSPI_TypeDef *SL_AHB_QSPI){
+    SL_AHB_QSPI->SPI_CMD = SET_QIO_MODE_CMD;
+    SL_AHB_QSPI->SPI_CMD = 0x100 + SET_QIO_MODE_CMD;
+    SPI_WAIT_BUSY(SL_AHB_QSPI);
+    SL_AHB_QSPI->CTRL |= SL_AHB_QSPI_CTRL_QIO_Msk;
+}
diff --git a/software/common/bootloader/bootloader.c b/software/common/bootloader/bootloader.c
index 9a9996a9c24a2f7ce2ef7bd437041a47233e0f54..5f8ca8c83c2c9b8a6a68e837133517ddfe2ecf03 100644
--- a/software/common/bootloader/bootloader.c
+++ b/software/common/bootloader/bootloader.c
@@ -52,6 +52,8 @@
 #include "CMSDK_CM4.h"
 #endif
 
+#include "SL_QSPI.h"
+
 #define UART_CTRL_TXEN         CMSDK_UART_CTRL_TXEN_Msk
 #define UART_CTRL_RXEN         CMSDK_UART_CTRL_RXEN_Msk
 #define UART_CTRL_TXRXEN       (CMSDK_UART_CTRL_TXEN_Msk + CMSDK_UART_CTRL_RXEN_Msk)
@@ -139,8 +141,15 @@ void FlashLoader(void)
     UartPutc(0x4); // Terminate simulation
     while (1);
     }
-  UartPuts("REMAP->IMEM0\n"); // CMSDK boot loader\n");
-  CMSDK_SYSCON->REMAP = 0;  // Clear remap
+  if(SPI_STARTUP(SL_QSPI)==0){
+    // QSPI flash present
+    UartPuts("REMAP->FLASH\n"); // CMSDK boot loader\n");
+    CACHE_STARTUP(CG092);
+    CMSDK_SYSCON->REMAP = 3;
+  } else {
+    UartPuts("REMAP->IMEM0\n"); // CMSDK boot loader\n");
+    CMSDK_SYSCON->REMAP = 0;  // Clear remap
+  }
   __DSB();
   __ISB();
 
diff --git a/software/common/scripts/cmsdk_bootloader.ld b/software/common/scripts/cmsdk_bootloader.ld
index 155a8dca6f2bc19aaf2b0e5994b1825edb4d0ba4..34322fad13994c307ebd9d2d7ce5ce1662fe67f3 100644
--- a/software/common/scripts/cmsdk_bootloader.ld
+++ b/software/common/scripts/cmsdk_bootloader.ld
@@ -33,7 +33,7 @@ INCLUDE "lib-nosys.ld"
 
 MEMORY
 {
-  FLASH (rx) : ORIGIN = 0x10000000, LENGTH =  0x1000 /*  4K */
+  FLASH (rx) : ORIGIN = 0x10000000, LENGTH =  0x2000 /*  4K */
   RAM (rwx)  : ORIGIN = 0x30000000, LENGTH = 0x3C00 /* 15K */
 }
 
diff --git a/software/debug_tester/debugtester_be.hex b/software/debug_tester/debugtester_be.hex
index c88abd2e70279fba6073c20b62595b3e06e2464a..0f17ccc331e41e4a0da11f9f21320e2cb74ed2d0 100644
--- a/software/debug_tester/debugtester_be.hex
+++ b/software/debug_tester/debugtester_be.hex
@@ -2,15 +2,15 @@ A8
 05
 00
 20
-AD
+C9
 1A
 00
 00
-B5
+D1
 1A
 00
 00
-B7
+D3
 1A
 00
 00
@@ -42,7 +42,7 @@ B7
 00
 00
 00
-B9
+D5
 1A
 00
 00
@@ -54,139 +54,139 @@ B9
 00
 00
 00
-BB
+D7
 1A
 00
 00
-BD
+D9
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
-BF
+DB
 1A
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-3E
+4C
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+43
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 30
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-B4
+54
+46
+5D
+46
+DF
+E7
+00
+00
+B8
 1A
 00
 00
-D4
+D8
 1A
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -6858,8 +6886,8 @@ E7
 47
 00
 00
-E5
-1A
+01
+1B
 00
 00
 C1
@@ -7030,14 +7058,12 @@ A5
 FF
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -7057,6 +7083,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -7086,7 +7114,7 @@ BD
 01
 00
 20
-D0
+EC
 1B
 00
 00
@@ -7098,12 +7126,12 @@ D0
 01
 00
 00
-04
+1C
 01
 00
 00
-F8
-1C
+14
+1D
 00
 00
 28
@@ -7114,7 +7142,7 @@ F8
 04
 00
 00
-20
+3C
 01
 00
 00
@@ -7286,131 +7314,131 @@ F8
 00
 00
 00
-3B
+57
 02
 00
 00
-3D
+59
 06
 00
 00
-FB
-06
+17
+07
 00
 00
-63
+7F
 07
 00
 00
-D1
+ED
 09
 00
 00
-4B
+67
 0A
 00
 00
-C3
+DF
 0A
 00
 00
-43
+5F
 0B
 00
 00
-93
+AF
 0B
 00
 00
-75
+91
 0C
 00
 00
-25
+41
 0D
 00
 00
-C5
+E1
 0D
 00
 00
-A9
+C5
 0D
 00
 00
-3D
+59
 0F
 00
 00
-49
+65
 10
 00
 00
-E5
-15
+01
+16
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
-9D
+B9
 17
 00
 00
diff --git a/software/debug_tester/debugtester_le.hex b/software/debug_tester/debugtester_le.hex
index 945b789017c41519413f9cdfa3bc7d8b168791bb..59b8e04e55e302964486266969270c409d7ccafd 100644
--- a/software/debug_tester/debugtester_le.hex
+++ b/software/debug_tester/debugtester_le.hex
@@ -2,15 +2,15 @@ A8
 05
 00
 20
-8D
+A9
 1A
 00
 00
-95
+B1
 1A
 00
 00
-97
+B3
 1A
 00
 00
@@ -42,7 +42,7 @@ A8
 00
 00
 00
-99
+B5
 1A
 00
 00
@@ -54,139 +54,139 @@ A8
 00
 00
 00
-9B
+B7
 1A
 00
 00
-9D
+B9
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
-9F
+BB
 1A
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-3E
+4C
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+43
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 30
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-94
+54
+46
+5D
+46
+DF
+E7
+00
+00
+98
 1A
 00
 00
-B4
+B8
 1A
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -6826,7 +6854,7 @@ E7
 47
 00
 00
-C5
+E1
 1A
 00
 00
@@ -6998,14 +7026,12 @@ A5
 FF
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -7025,6 +7051,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -7054,7 +7082,7 @@ BD
 01
 00
 20
-B0
+CC
 1B
 00
 00
@@ -7066,11 +7094,11 @@ B0
 01
 00
 00
-04
+1C
 01
 00
 00
-D8
+F4
 1C
 00
 00
@@ -7082,7 +7110,7 @@ D8
 04
 00
 00
-20
+3C
 01
 00
 00
@@ -7254,131 +7282,131 @@ D8
 00
 00
 00
-3B
+57
 02
 00
 00
-3D
+59
 06
 00
 00
-FB
-06
+17
+07
 00
 00
-63
+7F
 07
 00
 00
-C9
+E5
 09
 00
 00
-41
+5D
 0A
 00
 00
-B9
+D5
 0A
 00
 00
-39
+55
 0B
 00
 00
-89
+A5
 0B
 00
 00
-6B
+87
 0C
 00
 00
-17
+33
 0D
 00
 00
-B9
+D5
 0D
 00
 00
-7D
+99
 0D
 00
 00
-31
+4D
 0F
 00
 00
-3D
+59
 10
 00
 00
-D1
+ED
 15
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
-81
+9D
 17
 00
 00
diff --git a/testcodes/apb_mux_tests/apb_mux_tests.hex b/testcodes/apb_mux_tests/apb_mux_tests.hex
index a2ff3251fbb38106e7fbcbdf838486c5dd584aaa..6285cb911fbe38b6f84eb42a982714294152df9b 100644
--- a/testcodes/apb_mux_tests/apb_mux_tests.hex
+++ b/testcodes/apb_mux_tests/apb_mux_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-BD
+D9
 09
 00
 00
-C5
+E1
 09
 00
 00
-87
+A3
 01
 00
 00
@@ -42,7 +42,7 @@ C5
 00
 00
 00
-C9
+E5
 09
 00
 00
@@ -54,139 +54,139 @@ C9
 00
 00
 00
-CB
+E7
 09
 00
 00
-CD
+E9
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
-CF
+EB
 09
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-46
+54
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4B
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 38
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-E8
+54
+46
+5D
+46
+DF
+E7
+00
+00
+EC
 0C
 00
 00
-08
+0C
 0D
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -414,7 +442,7 @@ F3
 47
 00
 00
-D1
+ED
 08
 00
 00
@@ -1770,7 +1798,7 @@ C5
 30
 00
 00
-7C
+98
 0D
 00
 00
@@ -1810,7 +1838,7 @@ C5
 20
 00
 40
-8C
+A8
 0D
 00
 00
@@ -1870,7 +1898,7 @@ C5
 30
 00
 40
-AC
+C8
 0D
 00
 00
@@ -1906,7 +1934,7 @@ AC
 40
 00
 40
-6C
+88
 0D
 00
 00
@@ -2030,7 +2058,7 @@ AC
 80
 00
 40
-9C
+B8
 0D
 00
 00
@@ -2522,7 +2550,7 @@ E7
 47
 00
 00
-AD
+C9
 09
 00
 00
@@ -3376,14 +3404,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -3403,6 +3429,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -3554,7 +3582,7 @@ B1
 30
 78
 00
-04
+20
 0E
 00
 00
@@ -3566,11 +3594,11 @@ B1
 00
 00
 00
-04
+1C
 01
 00
 00
-1C
+38
 0E
 00
 00
@@ -3582,7 +3610,7 @@ B1
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/bootloader/bootloader.hex b/testcodes/bootloader/bootloader.hex
index 4a91c68ec2c4740520853b11bb5a8c26687794e4..bc9e0ee08e373bac658b627065c5062c27b3bf5c 100644
--- a/testcodes/bootloader/bootloader.hex
+++ b/testcodes/bootloader/bootloader.hex
@@ -2,16 +2,16 @@
 04
 00
 30
-C9
-02
+19
+03
 00
 10
-D1
-02
+21
+03
 00
 10
-D3
-02
+23
+03
 00
 10
 00
@@ -42,8 +42,8 @@ D3
 00
 00
 00
-D5
-02
+25
+03
 00
 10
 00
@@ -54,140 +54,140 @@ D5
 00
 00
 00
-D7
-02
+27
+03
 00
 10
-D9
-02
+29
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
-DB
-02
+2B
+03
 00
 10
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-3E
+4C
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+43
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 30
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,20 +262,24 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-70
-02
+54
+46
+5D
+46
+DF
+E7
 00
 00
-90
-02
+78
+04
+00
+00
+98
+04
 00
 00
 10
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -324,8 +352,8 @@ B5
 BD
 00
 F0
-DF
-F8
+E1
+F9
 11
 46
 FF
@@ -334,12 +362,12 @@ F7
 FF
 00
 F0
-59
+67
 F8
 00
 F0
-F7
-F8
+F9
+F9
 03
 B4
 FF
@@ -350,8 +378,8 @@ FF
 BC
 00
 F0
-FD
-F8
+FF
+F9
 00
 00
 00
@@ -366,7 +394,7 @@ F8
 47
 00
 00
-30
+37
 4A
 10
 68
@@ -378,11 +406,11 @@ F8
 28
 0D
 DA
-2E
+35
 48
 81
 60
-2E
+35
 4B
 03
 61
@@ -406,11 +434,11 @@ D1
 60
 01
 E0
-29
+30
 48
 81
 60
-29
+30
 48
 81
 60
@@ -430,7 +458,7 @@ D1
 60
 70
 47
-24
+2B
 49
 4A
 68
@@ -468,19 +496,29 @@ D1
 BD
 10
 B5
-1C
+23
 4C
 20
 68
 00
 28
-0B
+10
 D0
-1B
+22
+48
+00
+F0
+2F
+F9
+00
+28
+12
+D0
+20
 A0
 FF
 F7
-EC
+E7
 FF
 00
 20
@@ -496,35 +534,53 @@ F3
 8F
 FF
 F7
-B8
+B3
 FF
 10
 BD
-19
+1E
 A0
 FF
 F7
-E0
+DB
 FF
 04
 20
 FF
 F7
-D7
+D2
 FF
 FE
 E7
-10
+1E
+A0
+FF
+F7
+D4
+FF
+20
+48
+00
+F0
+8D
+F8
+03
+20
+20
+60
+E8
+E7
+10
 B5
 FF
 F7
-B3
+A5
 FF
-17
+1D
 A0
 FF
 F7
-D6
+C8
 FF
 08
 48
@@ -534,29 +590,29 @@ FF
 06
 03
 D5
-1C
+22
 A0
 FF
 F7
-CF
+C1
 FF
 02
 E0
-1D
+23
 A0
 FF
 F7
-CB
+BD
 FF
-1F
+25
 A0
 FF
 F7
-C8
+BA
 FF
 FF
 F7
-D2
+C4
 FF
 00
 20
@@ -586,6 +642,10 @@ E0
 F0
 01
 40
+00
+00
+03
+40
 52
 45
 4D
@@ -614,6 +674,26 @@ F0
 00
 00
 00
+52
+45
+4D
+41
+50
+2D
+3E
+46
+4C
+41
+53
+48
+0A
+00
+00
+00
+00
+10
+03
+40
 0A
 53
 6F
@@ -742,8 +822,8 @@ E7
 47
 00
 00
-B9
-02
+09
+03
 00
 10
 C1
@@ -766,96 +846,560 @@ C1
 02
 00
 30
+00
+21
+01
+60
+01
+21
+01
+60
+41
+68
+C9
+07
+FC
+D1
 70
 47
+01
+68
+FF
+22
+01
+32
+11
+43
+01
+60
 70
 47
+41
+68
+C9
+07
+FC
+D1
 70
 47
-75
-46
+10
+B4
+01
+9C
+C1
+60
 00
-F0
+2C
+09
+D1
+01
+68
+01
 24
-F8
-AE
-46
+24
+06
+21
+43
+01
+60
+01
+68
+05
+24
+64
 05
+21
+43
+01
+60
+19
+07
+09
+0C
+0B
+23
+19
+43
+01
+23
+5B
+02
+19
+43
+9B
 00
-69
-46
-53
+19
+43
+12
+07
+12
+0B
+0A
+43
+82
+60
+81
+68
+DA
+10
+11
+43
+81
+60
+10
+BC
+D9
+E7
+01
+68
+01
+22
+52
+06
+11
+43
+01
+60
+70
+47
+00
+B5
+02
 46
-C0
-08
-C0
+4F
+48
 00
-85
+78
+90
+60
+FF
+30
+01
+30
+90
+60
+10
 46
-18
-B0
-20
-B5
 FF
 F7
-DD
+C9
 FF
-60
-BC
-00
-27
-49
+10
+68
+01
+21
 08
-B6
-46
+43
+10
+60
 00
-26
-C0
-C5
-C0
-C5
-C0
-C5
-C0
-C5
-C0
-C5
-C0
-C5
-C0
-C5
-C0
-C5
-40
-3D
-49
+BD
 00
-8D
-46
-70
-47
-10
 B5
-04
-46
-C0
-46
-C0
+02
 46
+06
+20
+90
+60
+FF
 20
+07
+30
+90
+60
+10
 46
 FF
 F7
-02
+BA
 FF
+F3
+20
 10
-BD
-00
+62
+43
 48
-70
-47
-04
-00
+90
+60
+90
+68
+FF
+21
+01
+31
+08
+43
+90
+60
+10
+46
+FF
+F7
+AE
+FF
+04
+20
+90
+60
+FF
+20
+05
+30
+90
+60
+10
+46
+FF
+F7
+A6
+FF
+00
+BD
+00
+B5
+02
+46
+3A
+48
+90
+60
+3A
+48
+90
+60
+10
+46
+FF
+F7
+9C
+FF
+10
+69
+00
+BD
+00
+B5
+02
+46
+66
+20
+90
+60
+FF
+20
+67
+30
+90
+60
+10
+46
+FF
+F7
+90
+FF
+99
+20
+90
+60
+FF
+20
+9A
+30
+90
+60
+10
+46
+FF
+F7
+88
+FF
+00
+BD
+78
+B5
+04
+46
+20
+68
+00
+28
+01
+D0
+00
+20
+78
+BD
+20
+46
+FF
+F7
+E3
+FF
+20
+46
+FF
+F7
+D5
+FF
+41
+1C
+28
+D0
+00
+28
+26
+D0
+01
+25
+C0
+B2
+00
+23
+2E
+03
+BF
+28
+22
+D0
+1E
+49
+35
+20
+08
+70
+21
+48
+20
+63
+20
+46
+FF
+F7
+94
+FF
+20
+46
+FF
+F7
+A1
+FF
+00
+93
+0A
+23
+01
+22
+00
+21
+20
+46
+FF
+F7
+62
+FF
+20
+68
+69
+06
+08
+43
+20
+60
+08
+23
+01
+22
+31
+46
+20
+46
+00
+95
+FF
+F7
+57
+FF
+20
+46
+FF
+F7
+4A
+FF
+1A
+E0
+01
+20
+78
+BD
+12
+48
+20
+63
+20
+46
+FF
+F7
+74
+FF
+00
+93
+06
+23
+01
+22
+00
+21
+20
+46
+FF
+F7
+45
+FF
+20
+46
+FF
+F7
+64
+FF
+04
+23
+01
+22
+31
+46
+20
+46
+00
+95
+FF
+F7
+3B
+FF
+20
+46
+FF
+F7
+2E
+FF
+00
+20
+78
+BD
+04
+00
+00
+30
+81
+04
+00
+00
+9F
+00
+03
+00
+9F
+03
+03
+00
+0B
+80
+00
+00
+0B
+40
+00
+00
+70
+47
+70
+47
+70
+47
+75
+46
+00
+F0
+24
+F8
+AE
+46
+05
+00
+69
+46
+53
+46
+C0
+08
+C0
+00
+85
+46
+18
+B0
+20
+B5
+FF
+F7
+F5
+FE
+60
+BC
+B6
+46
+00
+26
+00
+27
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+40
+3D
+49
+08
+49
+00
+8D
+46
+70
+47
+10
+B5
+04
+46
+C0
+46
+C0
+46
+20
+46
+FF
+F7
+00
+FE
+10
+BD
+00
+48
+70
+47
+08
+00
 00
 30
 01
@@ -874,35 +1418,35 @@ E7
 47
 00
 00
-8C
-03
+AC
+05
 00
 10
 00
 00
 00
 30
-04
+08
 00
 00
 00
-04
+1C
 01
 00
 10
-90
-03
+B4
+05
 00
 10
-04
+08
 00
 00
 30
-64
+60
 04
 00
 00
-20
+3C
 01
 00
 10
@@ -910,3 +1454,7 @@ E7
 1C
 4E
 0E
+38
+00
+00
+00
diff --git a/testcodes/bootloader/makefile b/testcodes/bootloader/makefile
index 910b7f3b758e90b7671e1d0b4cb56eaecaa756ae..fef15f54317f962e699729bb51a840dff8ee93ea 100644
--- a/testcodes/bootloader/makefile
+++ b/testcodes/bootloader/makefile
@@ -191,14 +191,17 @@ all_ds6 : $(BOOTLOADER).hex $(BOOTLOADER).lst
 $(BOOTLOADER).o :  $(SOFTWARE_DIR)/common/bootloader/$(BOOTLOADER).c $(DEPS_LIST)
 	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
 
+SL_QSPI.o : $(DEVICE_DIR)/Source/SL_QSPI.c
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
 $(SYSTEM_FILE).o : $(DEVICE_DIR)/Source/$(SYSTEM_FILE).c $(DEPS_LIST)
 	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
 
 $(STARTUP_FILE).o : $(STARTUP_DIR)/$(STARTUP_FILE).s $(DEPS_LIST)
 	$(ASM_TOOL) $(ARM_ASM_OPTIONS) $(CPU_TYPE) $< -o  $@
 
-$(BOOTLOADER).ELF : $(BOOTLOADER).o $(SYSTEM_FILE).o $(STARTUP_FILE).o $(DEPS_LIST)
-	armlink $(ARM_LINK_OPTIONS) $(BOOTLOADER).o $(SYSTEM_FILE).o  $(STARTUP_FILE).o -o $@
+$(BOOTLOADER).ELF : $(BOOTLOADER).o $(SYSTEM_FILE).o $(STARTUP_FILE).o SL_QSPI.o $(DEPS_LIST)
+	armlink $(ARM_LINK_OPTIONS) $(BOOTLOADER).o $(SYSTEM_FILE).o  $(STARTUP_FILE).o SL_QSPI.o -o $@
 
 $(BOOTLOADER).hex : $(BOOTLOADER).ELF $(DEPS_LIST)
 	fromelf --vhx --8x1 $< --output $@
diff --git a/testcodes/dataio_tests/dataio_tests.hex b/testcodes/dataio_tests/dataio_tests.hex
index 68a237a52d1c19c1703ffb4f6697313c5917db6f..9ef648a4a2aed01d4b1b4156b68335405469a533 100644
--- a/testcodes/dataio_tests/dataio_tests.hex
+++ b/testcodes/dataio_tests/dataio_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-B9
+D5
 02
 00
 00
-C1
+DD
 02
 00
 00
-C3
+DF
 02
 00
 00
@@ -42,7 +42,7 @@ C3
 00
 00
 00
-C5
+E1
 02
 00
 00
@@ -54,139 +54,139 @@ C5
 00
 00
 00
-C7
+E3
 02
 00
 00
-C9
+E5
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
-CB
+E7
 02
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-46
+54
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4B
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 38
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-48
+54
+46
+5D
+46
+DF
+E7
+00
+00
+4C
 07
 00
 00
-68
+6C
 07
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -726,7 +754,7 @@ E7
 47
 00
 00
-A9
+C5
 02
 00
 00
@@ -1984,14 +2012,12 @@ F7
 FD
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -2011,6 +2037,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -2114,7 +2142,7 @@ D2
 00
 10
 00
-64
+80
 08
 00
 00
@@ -2126,11 +2154,11 @@ D2
 00
 00
 00
-04
+1C
 01
 00
 00
-6C
+88
 08
 00
 00
@@ -2142,7 +2170,7 @@ D2
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/debug_tests/debug_tests.hex b/testcodes/debug_tests/debug_tests.hex
index 9046aba306df3d104363ef260c3bf9cf3b5e8e52..83be232ec8556adeb80f44af3b906888c76f3f99 100644
--- a/testcodes/debug_tests/debug_tests.hex
+++ b/testcodes/debug_tests/debug_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-FD
-06
+19
+07
 00
 00
-05
+21
 07
 00
 00
-3D
+59
 04
 00
 00
@@ -42,7 +42,7 @@ FD
 00
 00
 00
-09
+25
 07
 00
 00
@@ -54,139 +54,139 @@ FD
 00
 00
 00
-0B
+27
 07
 00
 00
-0D
+29
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
-0F
+2B
 07
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-50
+5E
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+55
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 42
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-74
+54
+46
+5D
+46
+DF
+E7
+00
+00
+78
 0E
 00
 00
-94
+98
 0E
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -1818,8 +1846,8 @@ E7
 47
 00
 00
-ED
-06
+09
+07
 00
 00
 C1
@@ -3852,14 +3880,12 @@ F7
 FC
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -3879,6 +3905,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -3906,7 +3934,7 @@ BD
 48
 70
 47
-14
+18
 00
 00
 30
@@ -3950,7 +3978,7 @@ BD
 30
 78
 00
-90
+AC
 0F
 00
 00
@@ -3962,23 +3990,23 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-A4
+C0
 0F
 00
 00
-14
+18
 00
 00
 30
-64
+60
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/default_slaves_tests/default_slaves_tests.hex b/testcodes/default_slaves_tests/default_slaves_tests.hex
index ecdc8dbfff2a0db07512185f4224cb9adbfb2d3c..1c4551f18647746ac9355d80d79681c6788ea7d1 100644
--- a/testcodes/default_slaves_tests/default_slaves_tests.hex
+++ b/testcodes/default_slaves_tests/default_slaves_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-15
+31
 04
 00
 00
-1D
+39
 04
 00
 00
-87
+A3
 01
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-21
+3D
 04
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-23
+3F
 04
 00
 00
-25
+41
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
-27
+43
 04
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-46
+54
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4B
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 38
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-50
+54
+46
+5D
+46
+DF
+E7
+00
+00
+54
 07
 00
 00
-70
+74
 07
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -414,7 +442,7 @@ F3
 47
 00
 00
-8D
+A9
 02
 00
 00
@@ -710,8 +738,8 @@ F0
 F9
 FE
 E7
-EC
-07
+08
+08
 00
 00
 44
@@ -1074,7 +1102,7 @@ E7
 47
 00
 00
-05
+21
 04
 00
 00
@@ -1928,14 +1956,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -1955,6 +1981,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -1982,7 +2010,7 @@ BD
 48
 70
 47
-14
+18
 00
 00
 30
@@ -2122,7 +2150,7 @@ BD
 0A
 00
 00
-6C
+88
 08
 00
 00
@@ -2134,23 +2162,23 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-80
+9C
 08
 00
 00
-14
+18
 00
 00
 30
-64
+60
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/dhry/dhry.hex b/testcodes/dhry/dhry.hex
index f3c1a3500a429dd27172b825bfbfe212d5aae53b..1ed64dcc9b73e70428a8f42cc1d0782d87da90ca 100644
--- a/testcodes/dhry/dhry.hex
+++ b/testcodes/dhry/dhry.hex
@@ -2,15 +2,15 @@
 2C
 00
 30
-8D
+A9
 0C
 00
 00
-95
+B1
 0C
 00
 00
-97
+B3
 0C
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-99
+B5
 0C
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-9B
+B7
 0C
 00
 00
-9D
+B9
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
-9F
+BB
 0C
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-54
+62
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+59
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 46
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-60
+54
+46
+5D
+46
+DF
+E7
+00
+00
+84
 14
 00
 00
-80
+A4
 14
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -332,7 +360,7 @@ BD
 D1
 01
 F0
-26
+35
 F9
 10
 BD
@@ -342,7 +370,7 @@ BD
 D1
 01
 F0
-29
+38
 F9
 10
 BD
@@ -358,7 +386,7 @@ B5
 99
 01
 F0
-5C
+6C
 F8
 1F
 BD
@@ -368,7 +396,7 @@ B5
 BD
 01
 F0
-84
+94
 F9
 11
 46
@@ -382,7 +410,7 @@ F0
 F8
 01
 F0
-9C
+AC
 F9
 03
 B4
@@ -1002,7 +1030,7 @@ D9
 46
 00
 F0
-13
+1B
 FE
 02
 99
@@ -1338,7 +1366,7 @@ E1
 47
 00
 00
-F4
+F8
 06
 00
 30
@@ -1630,11 +1658,11 @@ E0
 47
 00
 00
-F4
+F8
 00
 00
 30
-2C
+30
 00
 00
 30
@@ -2570,16 +2598,12 @@ E4
 65
 0A
 00
-38
+54
 08
 00
 00
-EC
-06
-00
-00
-54
 08
+07
 00
 00
 70
@@ -2594,6 +2618,10 @@ A8
 08
 00
 00
+C4
+08
+00
+00
 49
 6E
 74
@@ -3242,7 +3270,7 @@ E7
 47
 00
 00
-7D
+99
 0C
 00
 00
@@ -3506,7 +3534,7 @@ B5
 46
 00
 F0
-19
+29
 FA
 05
 68
@@ -3590,8 +3618,8 @@ D1
 46
 00
 F0
-F7
-F9
+07
+FA
 00
 28
 DC
@@ -3610,7 +3638,7 @@ AA
 98
 00
 F0
-CB
+DB
 FA
 10
 BC
@@ -3882,7 +3910,7 @@ C0
 E0
 00
 F0
-57
+67
 FA
 30
 31
@@ -3904,7 +3932,7 @@ D1
 98
 00
 F0
-C9
+D8
 F9
 FE
 BD
@@ -3932,7 +3960,7 @@ BD
 07
 9A
 42
-37
+3F
 D1
 70
 B5
@@ -3952,17 +3980,17 @@ D0
 1C
 00
 2A
-2B
+33
 D0
 9A
 42
-29
+31
 D1
 20
 42
 F5
 D1
-1D
+21
 4E
 F4
 01
@@ -3976,6 +4004,22 @@ C9
 43
 25
 40
+18
+D1
+9A
+42
+0F
+D1
+04
+C8
+08
+C9
+95
+1B
+95
+43
+25
+40
 10
 D1
 9A
@@ -3996,7 +4040,7 @@ C9
 D1
 9A
 42
-EF
+E7
 D0
 12
 BA
@@ -4152,10 +4196,10 @@ D3
 42
 0D
 D3
-FF
-22
 09
 02
+FF
+22
 12
 BA
 03
@@ -4390,10 +4434,10 @@ D3
 42
 53
 40
-00
-22
 9C
 46
+00
+22
 03
 09
 8B
@@ -4406,10 +4450,10 @@ D3
 42
 12
 D3
-FC
-22
 89
 01
+FC
+22
 12
 BA
 03
@@ -4536,14 +4580,14 @@ C0
 D2
 01
 46
-63
-46
 52
 41
-5B
-10
 10
 46
+63
+46
+5B
+10
 01
 D3
 40
@@ -4566,14 +4610,30 @@ D3
 42
 01
 B5
+04
+49
 00
-20
+28
+02
+DC
+49
+1C
+08
+40
+00
+E0
+08
+46
 C0
 46
 C0
 46
 02
 BD
+FF
+FF
+FF
+7F
 70
 47
 70
@@ -4586,7 +4646,7 @@ BD
 48
 70
 47
-0C
+10
 28
 00
 30
@@ -4652,7 +4712,7 @@ C0
 20
 0C
 46
-10
+0C
 20
 C0
 46
@@ -4736,11 +4796,9 @@ BD
 60
 41
 60
-80
-60
 70
 47
-10
+0C
 20
 70
 47
@@ -4752,7 +4810,7 @@ B5
 1F
 FF
 F7
-AA
+AB
 FF
 00
 68
@@ -5012,7 +5070,7 @@ C0
 E0
 FF
 F7
-80
+71
 FD
 01
 20
@@ -5042,6 +5100,8 @@ D2
 43
 E8
 E7
+00
+00
 08
 4B
 70
@@ -5060,7 +5120,7 @@ F8
 46
 FF
 F7
-89
+79
 FC
 00
 28
@@ -5078,8 +5138,8 @@ BD
 BD
 00
 00
-07
-F9
+E7
+F8
 FF
 FF
 01
@@ -5126,7 +5186,7 @@ D2
 48
 70
 47
-04
+08
 28
 00
 30
@@ -5178,7 +5238,7 @@ C0
 60
 FF
 F7
-26
+25
 FF
 10
 BD
@@ -5218,7 +5278,7 @@ B0
 46
 FF
 F7
-E3
+D3
 FC
 0F
 B0
@@ -5268,18 +5328,16 @@ B0
 B5
 FF
 F7
-04
-FC
+F4
+FB
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -5299,6 +5357,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -5316,7 +5376,7 @@ C0
 46
 FE
 F7
-5D
+4D
 FE
 10
 BD
@@ -5328,8 +5388,8 @@ B5
 D0
 FF
 F7
-0B
-FC
+FB
+FB
 10
 BD
 00
@@ -5428,7 +5488,7 @@ E0
 1C
 FF
 F7
-D4
+C4
 FB
 00
 2D
@@ -5446,7 +5506,7 @@ E0
 1C
 FF
 F7
-CB
+BB
 FB
 00
 2C
@@ -5462,11 +5522,11 @@ D1
 20
 FF
 F7
-C3
+B3
 FB
 70
 BD
-7C
+B8
 15
 00
 00
@@ -5478,23 +5538,23 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-A8
+E4
 15
 00
 00
-2C
+30
 00
 00
 30
-3C
+38
 2C
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/dma350_tests/dma350_tests.hex b/testcodes/dma350_tests/dma350_tests.hex
index 140f14fdb895dffd7c8b52d0d3f98c537d03e24f..9966c39a26314011930d4a4e0dccdb5ed342574b 100644
--- a/testcodes/dma350_tests/dma350_tests.hex
+++ b/testcodes/dma350_tests/dma350_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-B1
+CD
 0C
 00
 00
-B9
+D5
 0C
 00
 00
-97
+B3
 01
 00
 00
@@ -42,7 +42,7 @@ B9
 00
 00
 00
-BD
+D9
 0C
 00
 00
@@ -54,139 +54,139 @@ BD
 00
 00
 00
-BF
+DB
 0C
 00
 00
-C1
+DD
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-1B
+37
 0A
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
-C3
+DF
 0C
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-4F
+5D
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+54
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 41
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,14 +262,18 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
+54
+46
+5D
+46
+DF
+E7
+00
+00
 D0
 2E
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -358,7 +386,7 @@ B5
 BD
 02
 F0
-E5
+E3
 FD
 11
 46
@@ -372,7 +400,7 @@ F0
 F8
 02
 F0
-FD
+FB
 FD
 03
 B4
@@ -430,7 +458,7 @@ F3
 47
 00
 00
-75
+91
 0A
 00
 00
@@ -1582,7 +1610,7 @@ CF
 0A
 00
 00
-D8
+F0
 2E
 00
 00
@@ -1610,7 +1638,7 @@ D8
 00
 00
 00
-18
+30
 2E
 00
 00
@@ -1798,7 +1826,7 @@ D8
 00
 00
 00
-80
+98
 2F
 00
 00
@@ -1962,7 +1990,7 @@ E0
 0A
 00
 00
-30
+48
 2F
 00
 00
@@ -2814,11 +2842,11 @@ D3
 2E
 0A
 00
-14
+30
 07
 00
 00
-58
+74
 07
 00
 00
@@ -3278,7 +3306,7 @@ E7
 47
 00
 00
-A1
+BD
 0C
 00
 00
@@ -10658,7 +10686,7 @@ AA
 98
 00
 F0
-63
+61
 F9
 10
 BC
@@ -10846,7 +10874,7 @@ C0
 E0
 00
 F0
-19
+17
 F9
 30
 31
@@ -10868,7 +10896,7 @@ D1
 98
 00
 F0
-A1
+A0
 F8
 FE
 BD
@@ -10970,11 +10998,11 @@ D0
 46
 00
 F0
-6E
+6D
 F8
 70
 BD
-0A
+06
 04
 00
 00
@@ -11072,7 +11100,7 @@ D0
 99
 00
 F0
-C0
+BE
 F8
 01
 20
@@ -11084,7 +11112,7 @@ B5
 20
 00
 F0
-EC
+EA
 F8
 10
 BD
@@ -11100,7 +11128,7 @@ C0
 20
 0C
 46
-10
+0C
 20
 C0
 46
@@ -11128,7 +11156,7 @@ C0
 D1
 00
 F0
-D6
+D4
 F8
 00
 98
@@ -11174,7 +11202,7 @@ A2
 1B
 00
 F0
-8D
+8B
 F8
 F8
 BD
@@ -11184,11 +11212,9 @@ BD
 60
 41
 60
-80
-60
 70
 47
-10
+0C
 20
 70
 47
@@ -11368,8 +11394,6 @@ BD
 20
 FB
 E7
-00
-00
 08
 4B
 70
@@ -11388,7 +11412,7 @@ F8
 46
 FE
 F7
-3F
+41
 F8
 00
 28
@@ -11406,7 +11430,7 @@ BD
 BD
 00
 00
-73
+77
 E0
 FF
 FF
@@ -11506,7 +11530,7 @@ C0
 60
 FF
 F7
-2B
+2D
 FE
 10
 BD
@@ -11546,7 +11570,7 @@ B0
 46
 FF
 F7
-4B
+4D
 FE
 0F
 B0
@@ -11596,18 +11620,16 @@ B0
 B5
 FD
 F7
-BA
+BC
 FF
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -11627,6 +11649,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -11644,7 +11668,7 @@ C0
 46
 FD
 F7
-FC
+FE
 F9
 10
 BD
@@ -11656,7 +11680,7 @@ B5
 D0
 FD
 F7
-C1
+C3
 FF
 10
 BD
@@ -11756,7 +11780,7 @@ E0
 1C
 FD
 F7
-8A
+8C
 FF
 00
 2D
@@ -11774,7 +11798,7 @@ E0
 1C
 FD
 F7
-81
+83
 FF
 00
 2C
@@ -11790,7 +11814,7 @@ D1
 20
 FD
 F7
-79
+7B
 FF
 70
 BD
@@ -12234,8 +12258,8 @@ F4
 00
 00
 00
-EC
-2F
+04
+30
 00
 00
 00
@@ -12246,11 +12270,11 @@ EC
 00
 00
 00
-04
+1C
 01
 00
 00
-24
+3C
 30
 00
 00
@@ -12262,7 +12286,7 @@ EC
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/dma_tests/dma_tests.hex b/testcodes/dma_tests/dma_tests.hex
index c6226ee50b614413975fb7192c3d79a235c7db45..fa2b45ebef0277a18783984d8cbf3f51b8bd83a0 100644
--- a/testcodes/dma_tests/dma_tests.hex
+++ b/testcodes/dma_tests/dma_tests.hex
@@ -2,15 +2,15 @@ A8
 04
 00
 30
-95
+B1
 0B
 00
 00
-9D
+B9
 0B
 00
 00
-87
+A3
 01
 00
 00
@@ -42,7 +42,7 @@ A8
 00
 00
 00
-A1
+BD
 0B
 00
 00
@@ -54,139 +54,139 @@ A1
 00
 00
 00
-A3
+BF
 0B
 00
 00
-A5
+C1
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-31
+4D
 09
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
-A7
+C3
 0B
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-4B
+59
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+50
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 3D
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-7C
+54
+46
+5D
+46
+DF
+E7
+00
+00
+80
 0F
 00
 00
-9C
+A0
 0F
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -414,7 +442,7 @@ F3
 47
 00
 00
-73
+8F
 09
 00
 00
@@ -2526,7 +2554,7 @@ E7
 00
 00
 00
-D8
+F4
 0F
 00
 00
@@ -2634,7 +2662,7 @@ F0
 0A
 00
 00
-20
+3C
 10
 00
 00
@@ -2994,7 +3022,7 @@ E7
 47
 00
 00
-85
+A1
 0B
 00
 00
@@ -3996,14 +4024,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -4023,6 +4049,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -4214,7 +4242,7 @@ B1
 00
 00
 00
-98
+B4
 10
 00
 00
@@ -4226,11 +4254,11 @@ B1
 00
 00
 00
-04
+1C
 01
 00
 00
-C0
+DC
 10
 00
 00
@@ -4242,7 +4270,7 @@ C0
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/dualtimer_demo/dualtimer_demo.hex b/testcodes/dualtimer_demo/dualtimer_demo.hex
index b6cb43dd5aceb7d8cc6fb4780069de602b8bbe29..0a59631c598c0bb94fcd6b231fec9ba305a344c5 100644
--- a/testcodes/dualtimer_demo/dualtimer_demo.hex
+++ b/testcodes/dualtimer_demo/dualtimer_demo.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-25
+41
 11
 00
 00
-2D
+49
 11
 00
 00
-2F
+4B
 11
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-31
+4D
 11
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-33
+4F
 11
 00
 00
-35
+51
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-73
+8F
 0F
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
-37
+53
 11
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-3E
+4C
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+43
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 30
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-48
+54
+46
+5D
+46
+DF
+E7
+00
+00
+4C
 12
 00
 00
-68
+6C
 12
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -3786,8 +3814,8 @@ C0
 2F
 00
 40
-E8
-12
+04
+13
 00
 00
 44
@@ -4418,7 +4446,7 @@ E7
 47
 00
 00
-15
+31
 11
 00
 00
@@ -4782,14 +4810,12 @@ F7
 FF
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -4809,6 +4835,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -4930,7 +4958,7 @@ BD
 24
 0A
 00
-64
+80
 13
 00
 00
@@ -4942,11 +4970,11 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-7C
+98
 13
 00
 00
@@ -4958,7 +4986,7 @@ BD
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/gpio_driver_tests/gpio_driver_tests.hex b/testcodes/gpio_driver_tests/gpio_driver_tests.hex
index 7da9c8a73fb7d168908d56b2492c47212cc72c90..cc47386eb45c4d6196b9e415412cce2e10cf77d9 100644
--- a/testcodes/gpio_driver_tests/gpio_driver_tests.hex
+++ b/testcodes/gpio_driver_tests/gpio_driver_tests.hex
@@ -2,15 +2,15 @@
 05
 00
 30
-29
+45
 10
 00
 00
-31
+4D
 10
 00
 00
-33
+4F
 10
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-35
+51
 10
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-37
+53
 10
 00
 00
-39
+55
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3F
+5B
 0F
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
-3B
+57
 10
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-48
+56
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4D
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 3A
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-D8
+54
+46
+5D
+46
+DF
+E7
+00
+00
+DC
 15
 00
 00
-F8
+FC
 15
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -1538,7 +1566,7 @@ FF
 00
 00
 00
-48
+64
 16
 00
 00
@@ -1594,7 +1622,7 @@ E1
 C3
 D5
 02
-90
+AC
 16
 00
 00
@@ -3802,8 +3830,8 @@ C0
 0F
 01
 40
-EC
-15
+08
+16
 00
 00
 47
@@ -4166,7 +4194,7 @@ E7
 47
 00
 00
-19
+35
 10
 00
 00
@@ -5512,14 +5540,12 @@ F7
 FD
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -5539,6 +5565,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -5842,8 +5870,8 @@ BD
 00
 00
 00
-F4
-16
+10
+17
 00
 00
 00
@@ -5854,11 +5882,11 @@ F4
 00
 00
 00
-04
+1C
 01
 00
 00
-04
+20
 17
 00
 00
@@ -5870,7 +5898,7 @@ F4
 05
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/hello/hello.hex b/testcodes/hello/hello.hex
index b45557f13dcd7c698d5076038220ffafb3f11c52..e53f419f2778628e32f6bc882ab978ec0ecef6ac 100644
--- a/testcodes/hello/hello.hex
+++ b/testcodes/hello/hello.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-BD
+D9
 01
 00
 00
-C5
+E1
 01
 00
 00
-C7
+E3
 01
 00
 00
@@ -42,7 +42,7 @@ C7
 00
 00
 00
-C9
+E5
 01
 00
 00
@@ -54,139 +54,139 @@ C9
 00
 00
 00
-CB
+E7
 01
 00
 00
-CD
+E9
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
-CF
+EB
 01
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-3E
+4C
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+43
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 30
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-F4
+54
+46
+5D
+46
+DF
+E7
+00
+00
+F8
 02
 00
 00
-14
+18
 03
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -474,7 +502,7 @@ E7
 47
 00
 00
-AD
+C9
 01
 00
 00
@@ -912,14 +940,12 @@ F7
 FF
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -939,6 +965,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -1006,7 +1034,7 @@ BD
 00
 00
 30
-10
+2C
 04
 00
 00
@@ -1018,11 +1046,11 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-18
+34
 04
 00
 00
@@ -1034,7 +1062,7 @@ BD
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/interrupt_demo/interrupt_demo.hex b/testcodes/interrupt_demo/interrupt_demo.hex
index c02852af1bab0e3ece6ddb51a81d5fb2dd1e3f54..78cd1424ccac7020933145b5ebe2ea6dce52ae6c 100644
--- a/testcodes/interrupt_demo/interrupt_demo.hex
+++ b/testcodes/interrupt_demo/interrupt_demo.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-0D
+29
 0A
 00
 00
-15
+31
 0A
 00
 00
-17
+33
 0A
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-19
+35
 0A
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-1B
+37
 0A
 00
 00
-1D
+39
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-B7
+D3
 08
 00
 00
-91
+AD
 08
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-45
+61
 09
 00
 00
-1F
+3B
 0A
 00
 00
-D7
+F3
 08
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-F5
-08
+11
+09
 00
 00
-0B
+27
 09
 00
 00
-21
+3D
 09
 00
 00
-33
+4F
 09
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
-1F
+3B
 0A
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-50
+5E
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+55
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 42
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-64
+54
+46
+5D
+46
+DF
+E7
+00
+00
+68
 10
 00
 00
-84
+88
 10
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -1250,7 +1278,7 @@ E0
 E1
 00
 E0
-B4
+D0
 10
 00
 00
@@ -1930,7 +1958,7 @@ C0
 0F
 00
 40
-04
+20
 11
 00
 00
@@ -2454,7 +2482,7 @@ BD
 00
 00
 30
-80
+9C
 10
 00
 00
@@ -2602,8 +2630,8 @@ E7
 47
 00
 00
-FD
-09
+19
+0A
 00
 00
 C1
@@ -4164,14 +4192,12 @@ EE
 FC
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -4191,6 +4217,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -4446,7 +4474,7 @@ BD
 0A
 00
 00
-80
+9C
 11
 00
 00
@@ -4458,11 +4486,11 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-98
+B4
 11
 00
 00
@@ -4474,7 +4502,7 @@ BD
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/memory_tests/memory_tests.hex b/testcodes/memory_tests/memory_tests.hex
index a4eb28524bdcc5bb41d91bb261a44f4667801cb4..77f2e3cf25dd914ee3c055f8f3a1b38c27bde01d 100644
--- a/testcodes/memory_tests/memory_tests.hex
+++ b/testcodes/memory_tests/memory_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-85
+A1
 0D
 00
 00
-8D
+A9
 0D
 00
 00
-87
+A3
 01
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-91
+AD
 0D
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-93
+AF
 0D
 00
 00
-95
+B1
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
-97
+B3
 0D
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-46
+54
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4B
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 38
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-80
+54
+46
+5D
+46
+DF
+E7
+00
+00
+84
 10
 00
 00
-A0
+A4
 10
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -414,7 +442,7 @@ F3
 47
 00
 00
-6D
+89
 0B
 00
 00
@@ -1866,7 +1894,7 @@ FF
 00
 01
 40
-34
+50
 11
 00
 00
@@ -1934,7 +1962,7 @@ FF
 F0
 01
 40
-44
+60
 11
 00
 00
@@ -3034,15 +3062,15 @@ FC
 03
 00
 10
-94
+B0
 08
 00
 00
-A0
+BC
 08
 00
 00
-B4
+D0
 08
 00
 00
@@ -3238,7 +3266,7 @@ FC
 00
 00
 00
-80
+9C
 08
 00
 00
@@ -3490,7 +3518,7 @@ E7
 47
 00
 00
-75
+91
 0D
 00
 00
@@ -4344,14 +4372,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -4371,6 +4397,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -4474,7 +4502,7 @@ B1
 30
 78
 00
-9C
+B8
 11
 00
 00
@@ -4486,11 +4514,11 @@ B1
 00
 00
 00
-04
+1C
 01
 00
 00
-B4
+D0
 11
 00
 00
@@ -4502,7 +4530,7 @@ B4
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/romtable_tests/romtable_tests.hex b/testcodes/romtable_tests/romtable_tests.hex
index 83dcf62acf3e629c47784a54f2b7d46bf9fd7b60..fe3db9e1fc84d904a84c23e68b027d3fb17c0610 100644
--- a/testcodes/romtable_tests/romtable_tests.hex
+++ b/testcodes/romtable_tests/romtable_tests.hex
@@ -2,15 +2,15 @@
 06
 00
 30
-A1
+BD
 0C
 00
 00
-A9
+C5
 0C
 00
 00
-AB
+C7
 0C
 00
 00
@@ -42,7 +42,7 @@ AB
 00
 00
 00
-AD
+C9
 0C
 00
 00
@@ -54,139 +54,139 @@ AD
 00
 00
 00
-AF
+CB
 0C
 00
 00
-B1
+CD
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
-B3
+CF
 0C
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-50
+5E
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+55
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 42
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-80
+54
+46
+5D
+46
+DF
+E7
+00
+00
+84
 19
 00
 00
-A0
+A4
 19
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -1122,11 +1150,11 @@ EC
 00
 00
 30
-24
+40
 17
 00
 00
-E0
+FC
 16
 00
 00
@@ -1710,7 +1738,7 @@ E0
 00
 00
 00
-68
+84
 17
 00
 00
@@ -1930,7 +1958,7 @@ FA
 10
 05
 B1
-94
+B0
 16
 00
 00
@@ -2594,7 +2622,7 @@ BD
 00
 00
 30
-4C
+68
 16
 00
 00
@@ -2738,7 +2766,7 @@ D0
 00
 00
 00
-94
+B0
 16
 00
 00
@@ -3262,7 +3290,7 @@ E7
 47
 00
 00
-91
+AD
 0C
 00
 00
@@ -5576,14 +5604,12 @@ F7
 FB
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -5603,6 +5629,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -6778,7 +6806,7 @@ D2
 6F
 72
 00
-9C
+B8
 1A
 00
 00
@@ -6790,11 +6818,11 @@ D0
 00
 00
 00
-04
+1C
 01
 00
 00
-6C
+88
 1B
 00
 00
@@ -6806,7 +6834,7 @@ C8
 05
 00
 00
-20
+3C
 01
 00
 00
@@ -6822,7 +6850,7 @@ C8
 00
 00
 00
-7C
+98
 18
 00
 00
@@ -6830,7 +6858,7 @@ C8
 00
 00
 00
-BC
+D8
 18
 00
 00
@@ -6838,7 +6866,7 @@ BC
 00
 00
 00
-04
+20
 19
 00
 00
@@ -6846,7 +6874,7 @@ BC
 04
 00
 00
-2C
+48
 1A
 00
 00
@@ -6854,7 +6882,7 @@ C2
 04
 00
 00
-9C
+B8
 19
 00
 00
@@ -6862,7 +6890,7 @@ C0
 04
 00
 00
-14
+30
 1A
 00
 00
@@ -6870,7 +6898,7 @@ C1
 04
 00
 00
-74
+90
 19
 00
 00
@@ -6878,7 +6906,7 @@ A6
 09
 00
 00
-DC
+F8
 17
 00
 00
@@ -6886,7 +6914,7 @@ DC
 09
 00
 00
-20
+3C
 19
 00
 00
@@ -6894,7 +6922,7 @@ DC
 04
 00
 00
-40
+5C
 1A
 00
 00
@@ -6902,7 +6930,7 @@ DC
 00
 00
 00
-9C
+B8
 18
 00
 00
@@ -6910,7 +6938,7 @@ DC
 00
 00
 00
-5C
+78
 18
 00
 00
@@ -6918,7 +6946,7 @@ DC
 00
 00
 00
-30
+4C
 18
 00
 00
@@ -6926,7 +6954,7 @@ DC
 00
 00
 00
-E0
+FC
 18
 00
 00
@@ -6934,7 +6962,7 @@ E0
 00
 00
 00
-B8
+D4
 17
 00
 00
@@ -6942,7 +6970,7 @@ C3
 04
 00
 00
-54
+70
 1A
 00
 00
@@ -6950,7 +6978,7 @@ C5
 04
 00
 00
-C4
+E0
 19
 00
 00
@@ -6958,7 +6986,7 @@ C4
 09
 00
 00
-54
+70
 19
 00
 00
@@ -6966,7 +6994,7 @@ C4
 09
 00
 00
-34
+50
 19
 00
 00
@@ -6974,7 +7002,7 @@ C4
 04
 00
 00
-68
+84
 1A
 00
 00
@@ -6982,15 +7010,15 @@ C6
 04
 00
 00
-EC
-19
+08
+1A
 00
 00
 25
 09
 00
 00
-44
+60
 19
 00
 00
@@ -6998,7 +7026,7 @@ A1
 09
 00
 00
-64
+80
 19
 00
 00
@@ -7006,7 +7034,7 @@ A1
 09
 00
 00
-08
+24
 18
 00
 00
diff --git a/testcodes/self_reset_demo/self_reset_demo.hex b/testcodes/self_reset_demo/self_reset_demo.hex
index 6f91c150d1e7673b0427b8811a30a70d957760a9..0e1e04e22f4e12a7156dcdc651720c6f85d9691f 100644
--- a/testcodes/self_reset_demo/self_reset_demo.hex
+++ b/testcodes/self_reset_demo/self_reset_demo.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-CD
+E9
 05
 00
 00
-D5
+F1
 05
 00
 00
-05
+21
 03
 00
 00
@@ -42,7 +42,7 @@ D5
 00
 00
 00
-D9
+F5
 05
 00
 00
@@ -54,139 +54,139 @@ D9
 00
 00
 00
-DB
+F7
 05
 00
 00
-DD
+F9
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
-DF
+FB
 05
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-46
+54
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4B
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 38
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-58
+54
+46
+5D
+46
+DF
+E7
+00
+00
+5C
 09
 00
 00
-78
+7C
 09
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -1186,7 +1214,7 @@ C0
 FF
 01
 40
-A4
+C0
 09
 00
 00
@@ -1338,7 +1366,7 @@ A4
 65
 74
 00
-00
+1C
 0A
 00
 00
@@ -1514,7 +1542,7 @@ E7
 47
 00
 00
-BD
+D9
 05
 00
 00
@@ -2368,14 +2396,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -2395,6 +2421,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -2642,7 +2670,7 @@ BD
 00
 00
 00
-74
+90
 0A
 00
 00
@@ -2654,11 +2682,11 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-7C
+98
 0A
 00
 00
@@ -2670,7 +2698,7 @@ BD
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/sleep_demo/sleep_demo.hex b/testcodes/sleep_demo/sleep_demo.hex
index 1a18793ec23d0b21dcba974dd08a9041a74738da..1cd7a974b8e89ba46bad18d7163b5f507ddfd778 100644
--- a/testcodes/sleep_demo/sleep_demo.hex
+++ b/testcodes/sleep_demo/sleep_demo.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-1D
+39
 07
 00
 00
-25
+41
 07
 00
 00
-27
+43
 07
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-29
+45
 07
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-2B
+47
 07
 00
 00
-2D
+49
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-D9
+F5
 04
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
-2F
+4B
 07
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-3E
+4C
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+43
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 30
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-88
+54
+46
+5D
+46
+DF
+E7
+00
+00
+8C
 0A
 00
 00
-A8
+AC
 0A
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -1318,7 +1346,7 @@ C0
 0F
 00
 40
-2C
+48
 0B
 00
 00
@@ -1850,7 +1878,7 @@ E7
 47
 00
 00
-0D
+29
 07
 00
 00
@@ -2764,14 +2792,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -2791,6 +2817,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -2946,7 +2974,7 @@ BD
 0A
 00
 00
-A4
+C0
 0B
 00
 00
@@ -2958,11 +2986,11 @@ A4
 00
 00
 00
-04
+1C
 01
 00
 00
-B4
+D0
 0B
 00
 00
@@ -2974,7 +3002,7 @@ B4
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/timer_driver_tests/timer_driver_tests.hex b/testcodes/timer_driver_tests/timer_driver_tests.hex
index 8a719f09d6163a2ef760be4e8ce301380676e79a..a579076e60944719e5cc91d03b682e85fd287545 100644
--- a/testcodes/timer_driver_tests/timer_driver_tests.hex
+++ b/testcodes/timer_driver_tests/timer_driver_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-79
+95
 0B
 00
 00
-81
+9D
 0B
 00
 00
-83
+9F
 0B
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-85
+A1
 0B
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-87
+A3
 0B
 00
 00
-89
+A5
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-BD
+D9
 09
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
-8B
+A7
 0B
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-50
+5E
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+55
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 42
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-3C
+54
+46
+5D
+46
+DF
+E7
+00
+00
+50
 13
 00
 00
-5C
+70
 13
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -360,7 +388,7 @@ B5
 BD
 01
 F0
-C8
+D0
 F8
 11
 46
@@ -374,7 +402,7 @@ D3
 FB
 01
 F0
-E0
+E8
 F8
 03
 B4
@@ -2610,8 +2638,8 @@ BD
 00
 00
 00
-F0
-06
+0C
+07
 00
 00
 45
@@ -2742,8 +2770,8 @@ F0
 00
 00
 00
-DC
-13
+08
+14
 00
 00
 E0
@@ -2754,7 +2782,7 @@ C0
 0F
 00
 40
-7C
+A8
 13
 00
 00
@@ -2966,7 +2994,7 @@ E7
 47
 00
 00
-69
+85
 0B
 00
 00
@@ -3694,7 +3722,7 @@ AA
 98
 00
 F0
-05
+0D
 FA
 10
 BC
@@ -3882,7 +3910,7 @@ C0
 E0
 00
 F0
-BB
+C3
 F9
 30
 31
@@ -3904,7 +3932,7 @@ D1
 98
 00
 F0
-43
+4B
 F9
 FE
 BD
@@ -4006,11 +4034,11 @@ D0
 46
 00
 F0
-10
+18
 F9
 70
 BD
-E2
+F2
 03
 00
 00
@@ -4124,10 +4152,10 @@ D3
 42
 0D
 D3
-FF
-22
 09
 02
+FF
+22
 12
 BA
 03
@@ -4362,10 +4390,10 @@ D3
 42
 53
 40
-00
-22
 9C
 46
+00
+22
 03
 09
 8B
@@ -4378,10 +4406,10 @@ D3
 42
 12
 D3
-FC
-22
 89
 01
+FC
+22
 12
 BA
 03
@@ -4508,14 +4536,14 @@ C0
 D2
 01
 46
-63
-46
 52
 41
-5B
-10
 10
 46
+63
+46
+5B
+10
 01
 D3
 40
@@ -4538,14 +4566,30 @@ D3
 42
 01
 B5
+04
+49
 00
-20
+28
+02
+DC
+49
+1C
+08
+40
+00
+E0
+08
+46
 C0
 46
 C0
 46
 02
 BD
+FF
+FF
+FF
+7F
 70
 47
 70
@@ -4748,7 +4792,7 @@ F8
 46
 FF
 F7
-9B
+93
 FC
 00
 28
@@ -4766,7 +4810,7 @@ BD
 BD
 00
 00
-2B
+1B
 F9
 FF
 FF
@@ -4846,7 +4890,7 @@ B0
 46
 FF
 F7
-C7
+BF
 FD
 0F
 B0
@@ -4884,18 +4928,16 @@ B0
 B5
 FF
 F7
-3A
+32
 FC
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -4915,6 +4957,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -4932,7 +4976,7 @@ C0
 46
 FE
 F7
-19
+11
 FF
 10
 BD
@@ -4942,7 +4986,7 @@ BD
 48
 70
 47
-14
+18
 00
 00
 30
@@ -5174,7 +5218,7 @@ BD
 00
 00
 00
-58
+84
 14
 00
 00
@@ -5186,23 +5230,23 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-6C
+98
 14
 00
 00
-14
+18
 00
 00
 30
-64
+60
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/timer_tests/timer_tests.hex b/testcodes/timer_tests/timer_tests.hex
index 207e48d0b06ff229b44583be49200b016bc61b57..3a2c06bfa6e9ebb150b6b398fdf5cbd71707fafd 100644
--- a/testcodes/timer_tests/timer_tests.hex
+++ b/testcodes/timer_tests/timer_tests.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-55
+71
 12
 00
 00
-5D
+79
 12
 00
 00
-5F
+7B
 12
 00
 00
@@ -42,7 +42,7 @@
 00
 00
 00
-61
+7D
 12
 00
 00
@@ -54,139 +54,139 @@
 00
 00
 00
-63
+7F
 12
 00
 00
-29
+45
 10
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-E1
+FD
 0F
 00
 00
-05
+21
 10
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
-67
+83
 12
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-46
+54
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4B
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 38
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-88
+54
+46
+5D
+46
+DF
+E7
+00
+00
+8C
 15
 00
 00
-A8
+AC
 15
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -4330,7 +4358,7 @@ C0
 0F
 00
 40
-2C
+48
 16
 00
 00
@@ -4722,7 +4750,7 @@ E7
 47
 00
 00
-45
+61
 12
 00
 00
@@ -5576,14 +5604,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -5603,6 +5629,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -5630,7 +5658,7 @@ BD
 48
 70
 47
-1C
+20
 00
 00
 30
@@ -5762,7 +5790,7 @@ BD
 0A
 00
 00
-A4
+C0
 16
 00
 00
@@ -5774,23 +5802,23 @@ A4
 00
 00
 00
-04
+1C
 01
 00
 00
-C0
+DC
 16
 00
 00
-1C
+20
 00
 00
 30
-64
+60
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/testcodes/watchdog_demo/watchdog_demo.hex b/testcodes/watchdog_demo/watchdog_demo.hex
index 60a3d51c5c53d783be52a38e5f77b10c7019fc7d..c3ba3af368479e5df40cb63e47e4a32330b1a8ca 100644
--- a/testcodes/watchdog_demo/watchdog_demo.hex
+++ b/testcodes/watchdog_demo/watchdog_demo.hex
@@ -2,15 +2,15 @@
 04
 00
 30
-D9
+F5
 08
 00
 00
-47
+63
 08
 00
 00
-E3
+FF
 08
 00
 00
@@ -42,8 +42,8 @@ E3
 00
 00
 00
-E5
-08
+01
+09
 00
 00
 00
@@ -54,140 +54,140 @@ E5
 00
 00
 00
-E7
-08
+03
+09
 00
 00
-E9
-08
+05
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
-EB
-08
+07
+09
 00
 00
 00
@@ -196,9 +196,9 @@ F0
 F8
 00
 F0
-46
+54
 F8
-0C
+12
 A0
 30
 C8
@@ -208,32 +208,52 @@ C8
 18
 2D
 18
+AC
+42
+01
+D1
+00
+F0
+4B
+F8
+0F
+CC
 A2
 46
-67
-1E
 AB
 46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
 54
-46
-5D
-46
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
 AC
 42
 01
-D1
+D3
 00
 F0
 38
 F8
-7E
-46
-0F
-3E
-0F
-CC
-B6
-46
 01
 26
 33
@@ -242,19 +262,23 @@ B6
 D0
 FB
 1A
-A2
-46
-AB
-46
 33
 43
-18
+98
 47
-10
+54
+46
+5D
+46
+DF
+E7
+00
+00
+14
 0C
 00
 00
-30
+34
 0C
 00
 00
@@ -286,6 +310,10 @@ D5
 47
 00
 00
+70
+47
+00
+00
 00
 23
 00
@@ -1906,7 +1934,7 @@ C0
 FF
 01
 40
-B0
+CC
 0C
 00
 00
@@ -2230,7 +2258,7 @@ CC
 00
 00
 30
-40
+5C
 05
 00
 00
@@ -2294,7 +2322,7 @@ E7
 47
 00
 00
-C9
+E5
 08
 00
 00
@@ -3148,14 +3176,12 @@ F7
 FE
 60
 BC
-00
-27
-49
-08
 B6
 46
 00
 26
+00
+27
 C0
 C5
 C0
@@ -3175,6 +3201,8 @@ C5
 40
 3D
 49
+08
+49
 00
 8D
 46
@@ -3338,7 +3366,7 @@ BD
 00
 00
 00
-2C
+48
 0D
 00
 00
@@ -3350,11 +3378,11 @@ BD
 00
 00
 00
-04
+1C
 01
 00
 00
-44
+60
 0D
 00
 00
@@ -3366,7 +3394,7 @@ BD
 04
 00
 00
-20
+3C
 01
 00
 00
diff --git a/verif/tb/verilog/nanosoc_tb.v b/verif/tb/verilog/nanosoc_tb.v
index 3ab628e10101c8afd73be3e997ee34036b2277ab..ea0dc6d21097d415884ac287a3e95abae4788817 100644
--- a/verif/tb/verilog/nanosoc_tb.v
+++ b/verif/tb/verilog/nanosoc_tb.v
@@ -95,6 +95,32 @@ localparam BE=0;
 localparam DATA_IN_FILENAME="data_in.csv";
 localparam DATA_OUT_FILENAME="logs/data_out.csv";
 
+// External Flash
+wire QSPI_SCLK;
+wire QSPI_nCS;
+wire [3:0] QSPI_IO;
+
+pullup(QSPI_IO[0]);
+pullup(QSPI_IO[1]);
+pullup(QSPI_IO[2]);
+pullup(QSPI_IO[3]);
+
+// External Flash instantiation
+//  Uncomment to use flash
+
+// sst26vf064b u_sst26vf064b(
+//     .SCK(QSPI_SCLK),
+//     .SIO(QSPI_IO),
+//     .CEb(QSPI_nCS)
+// );
+// defparam u_sst26vf064b.I0.Tbe = 1_000;
+// defparam u_sst26vf064b.I0.Tse = 1_000;
+// defparam u_sst26vf064b.I0.Tsce = 1_000;
+// defparam u_sst26vf064b.I0.Tpp = 1_000;
+// defparam u_sst26vf064b.I0.Tws = 1000;
+
+// initial #1 $readmemh("image.hex",u_sst26vf064b.I0.memory);
+
 /*
 SROM_Ax32
   #(.ADDRWIDTH (8),
@@ -147,7 +173,10 @@ initial begin
   .P0         (P0[7:0]),
   .P1         (P1[7:0]),
   .SWDIO      (SWDIOTMS),
-  .SWDCK      (SWCLKTCK)
+  .SWDCK      (SWCLKTCK),
+  .QSPI_IO    (QSPI_IO[3:0]),
+  .QSPI_SCLK  (QSPI_SCLK),
+  .QSPI_nCS   (QSPI_nCS)
   );
 `else
   nanosoc_chip_pads
@@ -166,7 +195,10 @@ initial begin
   .P0         (P0[15:0]),
   .P1         (P1[15:0]),
   .SWDIO      (SWDIOTMS),
-  .SWDCK      (SWCLKTCK)
+  .SWDCK      (SWCLKTCK),
+  .QSPI_IO    (QSPI_IO[3:0]),
+  .QSPI_SCLK  (QSPI_SCLK),
+  .QSPI_nCS   (QSPI_nCS)
   );
 `endif
  // --------------------------------------------------------------------------------
diff --git a/verif/tb/verilog/nanosoc_tb_qs.v b/verif/tb/verilog/nanosoc_tb_qs.v
index a79fca87865ec3ce8070499990c904254a4c5875..75a41253e5a7109f072bf544605356bce28f787a 100644
--- a/verif/tb/verilog/nanosoc_tb_qs.v
+++ b/verif/tb/verilog/nanosoc_tb_qs.v
@@ -95,6 +95,16 @@ localparam BE=0;
 localparam DATA_IN_FILENAME="data_in.csv";
 localparam DATA_OUT_FILENAME="logs/data_out.csv";
 
+// External Flash
+wire QSPI_SCLK;
+wire QSPI_nCS;
+wire [3:0] QSPI_IO;
+
+pullup(QSPI_IO[0]);
+pullup(QSPI_IO[1]);
+pullup(QSPI_IO[2]);
+pullup(QSPI_IO[3]);
+
 /*
 SROM_Ax32
   #(.ADDRWIDTH (8),
@@ -147,7 +157,10 @@ initial begin
   .P0         (P0[7:0]),
   .P1         (P1[7:0]),
   .SWDIO      (SWDIOTMS),
-  .SWDCK      (SWCLKTCK)
+  .SWDCK      (SWCLKTCK),
+  .QSPI_IO    (QSPI_IO[3:0]),
+  .QSPI_SCLK  (QSPI_SCLK),
+  .QSPI_nCS   (QSPI_nCS)
   );
 `else
   nanosoc_chip_pads
@@ -166,7 +179,10 @@ initial begin
   .P0         (P0[15:0]),
   .P1         (P1[15:0]),
   .SWDIO      (SWDIOTMS),
-  .SWDCK      (SWCLKTCK)
+  .SWDCK      (SWCLKTCK),
+  .QSPI_IO    (QSPI_IO[3:0]),
+  .QSPI_SCLK  (QSPI_SCLK),
+  .QSPI_nCS   (QSPI_nCS)
   );
 `endif
  // --------------------------------------------------------------------------------