ufbt: project & debugging updates (#2572)
* ufbt: removed warning in "channel=dev" update mode * ufbt: removed API version warning; added get_blackmagic & get_apiversion targets * ufbt: updater project template to include blackmagic & jlink targets * ufbt: project template: fixes & updates * ufbt: project template: added config update shortcut * sdk: using fixed names for file components
This commit is contained in:
		
							parent
							
								
									6cc5f30c84
								
							
						
					
					
						commit
						b9ccb274a7
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -30,7 +30,7 @@ bindings/ | ||||
| Brewfile.lock.json | ||||
| 
 | ||||
| # Visual Studio Code | ||||
| .vscode/ | ||||
| /.vscode/ | ||||
| 
 | ||||
| # Kate | ||||
| .kateproject | ||||
|  | ||||
| @ -181,9 +181,9 @@ class Main(App): | ||||
|         ) as zf: | ||||
|             for component_key in sdk_components_keys: | ||||
|                 component_path = self._dist_components.get(component_key) | ||||
|                 components_paths[component_key] = basename(component_path) | ||||
| 
 | ||||
|                 if component_key.endswith(".dir"): | ||||
|                     components_paths[component_key] = basename(component_path) | ||||
|                     for root, dirnames, files in walk(component_path): | ||||
|                         if "__pycache__" in dirnames: | ||||
|                             dirnames.remove("__pycache__") | ||||
| @ -199,7 +199,9 @@ class Main(App): | ||||
|                                 ), | ||||
|                             ) | ||||
|                 else: | ||||
|                     zf.write(component_path, basename(component_path)) | ||||
|                     # We use fixed names for files to avoid having to regenerate VSCode project | ||||
|                     components_paths[component_key] = component_key | ||||
|                     zf.write(component_path, component_key) | ||||
| 
 | ||||
|             zf.writestr( | ||||
|                 "components.json", | ||||
|  | ||||
| @ -163,6 +163,18 @@ dist_env.Alias("flash", openocd_target) | ||||
| if env["FORCE"]: | ||||
|     env.AlwaysBuild(openocd_target) | ||||
| 
 | ||||
| 
 | ||||
| firmware_jflash = dist_env.JFlash( | ||||
|     dist_env["UFBT_STATE_DIR"].File("jflash"), | ||||
|     dist_env["FW_BIN"], | ||||
|     JFLASHADDR="0x20000000", | ||||
| ) | ||||
| dist_env.Alias("firmware_jflash", firmware_jflash) | ||||
| dist_env.Alias("jflash", firmware_jflash) | ||||
| if env["FORCE"]: | ||||
|     env.AlwaysBuild(firmware_jflash) | ||||
| 
 | ||||
| 
 | ||||
| firmware_debug = dist_env.PhonyTarget( | ||||
|     "debug", | ||||
|     "${GDBPYCOM}", | ||||
| @ -391,3 +403,13 @@ AddPostAction( | ||||
| dist_env.Precious(app_template_dist) | ||||
| dist_env.NoClean(app_template_dist) | ||||
| dist_env.Alias("create", app_template_dist) | ||||
| 
 | ||||
| dist_env.PhonyTarget( | ||||
|     "get_blackmagic", | ||||
|     "@echo $( ${BLACKMAGIC_ADDR} $)", | ||||
| ) | ||||
| 
 | ||||
| dist_env.PhonyTarget( | ||||
|     "get_apiversion", | ||||
|     "@echo $( ${UFBT_API_VERSION} $)", | ||||
| ) | ||||
|  | ||||
| @ -2,19 +2,16 @@ | ||||
|     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||||
|     "version": "0.2.0", | ||||
|     "inputs": [ | ||||
|         // { | ||||
|         //     "id": "BLACKMAGIC", | ||||
|         //     "type": "command", | ||||
|         //     "command": "shellCommand.execute", | ||||
|         //     "args": { | ||||
|         //         "useSingleResult": true, | ||||
|         //         "env": { | ||||
|         //             "PATH": "${workspaceFolder};${env:PATH}" | ||||
|         //         }, | ||||
|         //         "command": "./fbt get_blackmagic", | ||||
|         //         "description": "Get Blackmagic device", | ||||
|         //     } | ||||
|         // }, | ||||
|         { | ||||
|             "id": "BLACKMAGIC", | ||||
|             "type": "command", | ||||
|             "command": "shellCommand.execute", | ||||
|             "args": { | ||||
|                 "description": "Get Blackmagic device", | ||||
|                 "useSingleResult": true, | ||||
|                 "command": "ufbt -s get_blackmagic", | ||||
|             } | ||||
|         }, | ||||
|     ], | ||||
|     "configurations": [ | ||||
|         { | ||||
| @ -57,26 +54,26 @@ | ||||
|             ], | ||||
|             // "showDevDebugOutput": "raw", | ||||
|         }, | ||||
|         // { | ||||
|         //     "name": "Attach FW (blackmagic)", | ||||
|         //     "cwd": "${workspaceFolder}", | ||||
|         //     "executable": "@UFBT_FIRMWARE_ELF@", | ||||
|         //     "request": "attach", | ||||
|         //     "type": "cortex-debug", | ||||
|         //     "servertype": "external", | ||||
|         //     "gdbTarget": "${input:BLACKMAGIC}", | ||||
|         //     "svdFile": "@UFBT_DEBUG_DIR@/STM32WB55_CM4.svd", | ||||
|         //     "rtos": "FreeRTOS", | ||||
|         //     "postAttachCommands": [ | ||||
|         //         "monitor swdp_scan", | ||||
|         //         "attach 1", | ||||
|         //         "set confirm off", | ||||
|         //         "set mem inaccessible-by-default off", | ||||
|         //         "source @UFBT_DEBUG_DIR@/flipperapps.py", | ||||
|         //         "fap-set-debug-elf-root @UFBT_DEBUG_ELF_DIR@" | ||||
|         //     ] | ||||
|         //     // "showDevDebugOutput": "raw", | ||||
|         // }, | ||||
|         { | ||||
|             "name": "Attach FW (blackmagic)", | ||||
|             "cwd": "${workspaceFolder}", | ||||
|             "executable": "@UFBT_FIRMWARE_ELF@", | ||||
|             "request": "attach", | ||||
|             "type": "cortex-debug", | ||||
|             "servertype": "external", | ||||
|             "gdbTarget": "${input:BLACKMAGIC}", | ||||
|             "svdFile": "@UFBT_DEBUG_DIR@/STM32WB55_CM4.svd", | ||||
|             "rtos": "FreeRTOS", | ||||
|             "postAttachCommands": [ | ||||
|                 "monitor swdp_scan", | ||||
|                 "attach 1", | ||||
|                 "set confirm off", | ||||
|                 "set mem inaccessible-by-default off", | ||||
|                 "source @UFBT_DEBUG_DIR@/flipperapps.py", | ||||
|                 "fap-set-debug-elf-root @UFBT_DEBUG_ELF_DIR@" | ||||
|             ] | ||||
|             // "showDevDebugOutput": "raw", | ||||
|         }, | ||||
|         { | ||||
|             "name": "Attach FW (JLink)", | ||||
|             "cwd": "${workspaceFolder}", | ||||
|  | ||||
							
								
								
									
										36
									
								
								scripts/ufbt/project_template/.vscode/tasks.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								scripts/ufbt/project_template/.vscode/tasks.json
									
									
									
									
										vendored
									
									
								
							| @ -20,24 +20,30 @@ | ||||
|             "type": "shell", | ||||
|             "command": "ufbt" | ||||
|         }, | ||||
|         { | ||||
|             "label": "Clean", | ||||
|             "group": "build", | ||||
|             "type": "shell", | ||||
|             "command": "ufbt -c" | ||||
|         }, | ||||
|         { | ||||
|             "label": "Flash FW (ST-Link)", | ||||
|             "group": "build", | ||||
|             "type": "shell", | ||||
|             "command": "ufbt FORCE=1 flash" | ||||
|         }, | ||||
|         // { | ||||
|         //     "label": "[NOTIMPL] Flash FW (blackmagic)", | ||||
|         //     "group": "build", | ||||
|         //     "type": "shell", | ||||
|         //     "command": "ufbt flash_blackmagic" | ||||
|         // }, | ||||
|         // { | ||||
|         //     "label": "[NOTIMPL] Flash FW (JLink)", | ||||
|         //     "group": "build", | ||||
|         //     "type": "shell", | ||||
|         //     "command": "ufbt FORCE=1 jflash" | ||||
|         // }, | ||||
|         { | ||||
|             "label": "Flash FW (blackmagic)", | ||||
|             "group": "build", | ||||
|             "type": "shell", | ||||
|             "command": "ufbt flash_blackmagic" | ||||
|         }, | ||||
|         { | ||||
|             "label": "Flash FW (JLink)", | ||||
|             "group": "build", | ||||
|             "type": "shell", | ||||
|             "command": "ufbt FORCE=1 jflash" | ||||
|         }, | ||||
|         { | ||||
|             "label": "Flash FW (USB, with resources)", | ||||
|             "group": "build", | ||||
| @ -49,6 +55,12 @@ | ||||
|             "group": "build", | ||||
|             "type": "shell", | ||||
|             "command": "ufbt update" | ||||
|         }, | ||||
|         { | ||||
|             "label": "Update VSCode config for current SDK", | ||||
|             "group": "build", | ||||
|             "type": "shell", | ||||
|             "command": "ufbt vscode_dist" | ||||
|         } | ||||
|     ] | ||||
| } | ||||
| @ -6,7 +6,7 @@ App( | ||||
|     apptype=FlipperAppType.EXTERNAL, | ||||
|     entry_point="@FBT_APPID@_app", | ||||
|     stack_size=2 * 1024, | ||||
|     fap_category="Misc", | ||||
|     fap_category="Examples", | ||||
|     # Optional values | ||||
|     # fap_version=(0, 1),  # (major, minor) | ||||
|     fap_icon="@FBT_APPID@.png",  # 10x10 1-bit PNG | ||||
|  | ||||
| @ -75,12 +75,6 @@ def generate(env, **kw): | ||||
|     if not sdk_state["meta"]["hw_target"].endswith(sdk_data["hardware"]): | ||||
|         raise StopError("SDK state file doesn't match hardware target") | ||||
| 
 | ||||
|     if sdk_state["meta"]["version"] != ufbt_state["version"]: | ||||
|         warn( | ||||
|             WarningOnByDefault, | ||||
|             f"Version mismatch: SDK state vs uFBT: {sdk_state['meta']['version']} vs {ufbt_state['version']}", | ||||
|         ) | ||||
| 
 | ||||
|     scripts_dir = sdk_current_sdk_dir_node.Dir(sdk_components["scripts.dir"]) | ||||
|     env.SetDefault( | ||||
|         # Paths | ||||
|  | ||||
| @ -1,5 +1,4 @@ | ||||
| from dataclasses import dataclass, field | ||||
| from os.path import dirname | ||||
| 
 | ||||
| from SCons.Node import NodeList | ||||
| from SCons.Warnings import warn, WarningOnByDefault | ||||
| @ -131,6 +130,7 @@ Depends(sdk_source, appenv.ProcessSdkDepends(f"{amalgamated_api}.d")) | ||||
| 
 | ||||
| appenv["SDK_DIR"] = appenv.Dir("${BUILD_DIR}/sdk_headers") | ||||
| sdk_header_tree = appenv.SDKHeaderTreeExtractor(appenv["SDK_DIR"], amalgamated_api) | ||||
| Depends(sdk_header_tree, appenv["SDK_DEFINITION"]) | ||||
| # AlwaysBuild(sdk_tree) | ||||
| Alias("sdk_tree", sdk_header_tree) | ||||
| extapps.sdk_tree = sdk_header_tree | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 hedger
						hedger