Jelajahi Sumber

added jtag debugging/flashing command file generation

Sebastien 5 tahun lalu
induk
melakukan
d0afc66b27
1 mengubah file dengan 64 tambahan dan 1 penghapusan
  1. 64 1
      squeezelite.cmake

+ 64 - 1
squeezelite.cmake

@@ -6,6 +6,66 @@ if(NOT SDKCONFIG OR NOT IDF_PATH  OR NOT IDF_TARGET )
     message(FATAL_ERROR "squeezelite should not be made outside of the main project !")
 endif()
 
+function(___output_debug_target bin_name )
+
+    idf_build_get_property(build_dir BUILD_DIR)
+    file(TO_CMAKE_PATH "${build_dir}" cm_build_dir)
+    if( "${bin_name}" STREQUAL "_" )
+    	set(debug_file "dbg_project_args" )
+    else()
+        set(debug_file "dbg_${bin_name}" )
+    endif()
+	set(flash_debug_file "flash_${debug_file}" )
+			    
+    set(flash_args_file "${cm_build_dir}/flash_project_args"  )
+    set(line_prefix "mon program_esp32 ${cm_build_dir}/"  )
+    
+	file(READ ${flash_args_file} flash_args)
+
+
+	list(APPEND dbg_cmds "mon reset halt")
+	list(APPEND dbg_cmds "flushregs")
+	list(APPEND dbg_cmds "set remote hardware-watchpoint-limit 2")
+
+	STRING(REGEX REPLACE "\n" ";" SPLIT "${flash_args}")
+	
+
+
+	foreach(flash_arg_line ${SPLIT})
+		string(REGEX MATCH "^(0[xX][^ ]*)[ ]*([^ ]*)" out_matches "${flash_arg_line}")
+	  
+	  	if( ${CMAKE_MATCH_COUNT}  )
+	  		if( ( NOT "${CMAKE_MATCH_0}" STREQUAL "" ) AND ( "${bin_name}" STREQUAL "${CMAKE_MATCH_1}" ) OR ( "${bin_name}" STREQUAL "_" ) )
+			  	list(APPEND flash_dbg_cmds "${line_prefix}/${CMAKE_MATCH_2} ${CMAKE_MATCH_1}")
+	  		endif()
+			if( ( NOT "${CMAKE_MATCH_0}" STREQUAL "" ) AND ( "${bin_name}" STREQUAL "${CMAKE_MATCH_2}" ) )
+			   list(APPEND dbg_cmds "mon esp32 appoffset ${CMAKE_MATCH_1}") 	  
+			endif()
+	  endif()
+	endforeach()
+
+	list(APPEND dbg_cmds_end "mon reset halt")
+	list(APPEND dbg_cmds_end "flushregs")
+
+	list(APPEND full_dbg_cmds "${dbg_cmds}")
+	list(APPEND full_dbg_cmds "${dbg_cmds_end}")
+
+	list(APPEND full_flash_dbg_cmds "${dbg_cmds}")
+	list(APPEND full_flash_dbg_cmds "${flash_dbg_cmds}")
+	list(APPEND full_flash_dbg_cmds "${dbg_cmds_end}")
+	STRING(REGEX REPLACE  ";" "\n" dbg_cmds_end "${dbg_cmds_end}")
+	STRING(REGEX REPLACE  ";" "\n" full_dbg_cmds "${full_dbg_cmds}")
+	STRING(REGEX REPLACE  ";" "\n" full_flash_dbg_cmds "${full_flash_dbg_cmds}")
+
+file(GENERATE OUTPUT "${cm_build_dir}${debug_file}" CONTENT "${full_dbg_cmds}")
+file(GENERATE OUTPUT "${cm_build_dir}${flash_debug_file}" CONTENT "${full_flash_dbg_cmds}")
+    set_property(DIRECTORY ${cm_build_dir}
+                    APPEND PROPERTY
+                    ADDITIONAL_MAKE_CLEAN_FILES "${debug_file}" "${flash_debug_file}")
+ 
+
+endfunction() 
+
 function(___register_flash target_name sub_type)
 	partition_table_get_partition_info(otaapp_offset "--partition-type app --partition-subtype ${sub_type}" "offset")
 	esptool_py_flash_project_args(${target_name} ${otaapp_offset} ${build_dir}/${target_name}.bin FLASH_IN_PROJECT)
@@ -55,4 +115,7 @@ function(___create_new_target target_name)
 endfunction()
 
 ___create_new_target(squeezelite )
-___register_flash(squeezelite ota_0)
+___register_flash(squeezelite ota_0)
+___output_debug_target("_")
+___output_debug_target("squeezelite")
+___output_debug_target("recovery")