【转】SetStablePowerState.exe: Disabling GPU Boost on Windows 10 for more deterministic timestamp queri...

With all modern graphics APIs (D3D11, D3D12, GL4 and Vulkan), it is possible for an application to query the elapsed GPU time for any given range of render calls by using timestamp queries. Most game engines today are using this mechanism to measure the GPU time spent on a whole frame and per pass. This blog post includes full source code for a simple D3D12 application (SetStablePowerState.exe) that can be run to disable and restore GPU Boost at any time, for all graphics applications running on the system. Disabling GPU Boost helps getting more deterministic GPU times from timestamp queries. And because the clocks are changed at the system level, you can run SetStablePowerState.exe even if your game is using a different graphics API than D3D12. The only requirement is that you use Windows 10 and have the Windows 10 SDK installed.

Motivation

On some occasions, we have found ourselves confused by the fact that the measured GPU time for a given pass we were working on would change over time, even if we did not make any change to that pass. The GPU times would be stable within a run, but would sometimes vary slightly from run to run. Later on, we learned that this can happen as a side effect of the GPU having a variable Core Clock frequency, depending on the current GPU temperature and possibly other factors such as power consumption. This can happen with all GPUs that have variable frequencies, and can happen with all NVIDIA GPUs that include a version of GPU Boost, more specifically all GPUs based on the Kepler, Maxwell and Pascal architectures, and beyond.

SetStablePowerState.exe

All NVIDIA GPUs that have GPU Boost have a well-defined Base Clock frequency associated with them. That is the value of the GPU Core Clock frequency that the GPU should be able to sustain while staying within the reference power usage and temperature targets. For the record, for each GeForce GPU, the Base Clock is specified in the associated Specification page on GeForce.com.

Using D3D12, there is an easy way for an application to request the NVIDIA driver to lock the GPU Core Clock frequency to its Base Clock value: by using the ID3D12Device::SetStablePowerState method. When calling SetStablePowerState(TRUE), a system-wide change of GPU power-management policy happens for the NVIDIA GPU associated with the current D3D12 device, and the current GPU Core Clock gets locked to the reference Base Clock recorded in the VBIOS for that GPU, unless thermal events happen. If the GPU detects that it’s overheating, it will then down-clock itself even if SetStablePowerState(TRUE) was called. But in practice, that should never happen if the GPU is in a properly cooled case and its fan is working properly. The result is that the GPU Core Clock frequency is then stable at Base Clock once any D3D12 application calls SetStablePowerState(TRUE) in the system. In other words, GPU Boost gets disabled. And our driver takes care of restoring the previous GPU power-management state when the locking D3D12 device gets released.

Knowing all that, we have written a simple standalone D3D12 application (SetStablePowerState.exe) that can lock and unlock the current GPU Core Clock frequency for any NVIDIA GPU with GPU Boost. The GPU Core Clock frequency gets instantly locked when launching this app, so it can be launched anytime you want to start/stop profiling GPU times. You can monitor your current GPU Core Clock frequency by using NVAPI (see Appendix) or by using an external GPU monitoring tool such as GPU-Z.

Using this standalone SetStablePowerState.exe application to lock the clocks before/after profiling GPU times makes it useless to ever call ID3D12Device::SetStablePowerState from a game engine directly. We actually recommend to never call this D3D12 method from engine code, especially for applications that have both D3D11 and D3D12 paths, to avoid any confusion when comparing GPU profiling results on D3D12 vs D3D11.

Gotchas

Using SetStablePowerState only modifies the GPU Core Clock frequency but does not modify the GPU Memory Clock frequency. So if an application gets a 1:1 between GPU Core Clock and GPU Memory Clock on a normal run, SetStablePowerState can modify it to up to 0.8 to 1. That’s an issue worth knowing as relative performance limiters will slightly shift. So when GPU Boost is disabled, a pass that is both math-throughput and memory-bandwidth limited may become more math limited; or, conversely, it may become relatively less memory limited.

Finally, for the SetStablePowerState call to succeed, you need to have the Windows 10 SDK installed. With Windows 10 up to Version 1511, that’s all you need. But with more recent versions of Windows 10 (starting from the Anniversary Update), you also need to enable “developer mode” in the OS settings, otherwise the call to SetStablePowerState will cause a D3D12 device removal.

Afterword: Some History and How Our Advice Evolved

If you have been following our DX12 Do's And Don'ts blog, you may have noticed that the advice on SetStablePowerState has changed. That could use some explanation…

In the first wave of DX12 games, we saw a couple of beta pre-releases that always called SetStablePowerState(TRUE) by default. As we discussed above, this API call significantly lowers the Core Clock frequency on NVIDIA GPUs and does not represent the end-user experience accurately. It is therefore quite inappropriate to call it by default in a shipping product, or even a beta.

We have also seen confusion result from the use of SetStablePowerState because it only works when the D3D12 debug layer is present on a system. We have seen multiple cases where development engineers and QA departments get different performance results because SetStablePowerState fails on some systems and the failure was quietly ignored.

Hence, our recommendation was to avoid SetStablePowerState or use it very thoughtfully and carefully.

For the Windows 10 Anniversary Update (aka Redstone), Microsoft changed the implementation, “SetStablePowerState now requires developer mode be enabled; otherwise, device removal will now occur.” (http://forums.directxtech.com/index.php?topic=5734.new). So any calls to SetStablePowerState will obviously fail on end-users systems or most QA systems. This is a change for the better and makes much of our previous advice irrelevant.

We are still left with the question of whether or not to test with SetStablePowerState. Do you test with reduced performance and more stable results? Do you test end-user performance and accept some variability? Do you monitor clocks and show a warning when variability exceeds a threshold? To be perfectly honest, we have changed our minds more than once at NVIDIA DevTech. This is for good reasons because there is no one true answer. The answer depends on exactly what you are trying to achieve and what matters most to you. We have done all three. We have largely settled on stabilizing the clocks for our in-depth, precise analyses.

Appendix: SetStablePowerState.cpp

 #include <dxgi1_4.h>
 #include <d3d12.h> #include <stdio.h> void Error(const char *str) { fprintf(stderr, "ERROR: %s\n", str); Sleep(INFINITE); } void GetHardwareAdapter(IDXGIFactory4* pFactory, IDXGIAdapter1** ppAdapter) { *ppAdapter = nullptr; for (UINT AdapterIndex = 0; ; ++AdapterIndex) { IDXGIAdapter1* pAdapter = nullptr; if (DXGI_ERROR_NOT_FOUND == pFactory->EnumAdapters1(AdapterIndex, &pAdapter)) { break; } if (SUCCEEDED(D3D12CreateDevice(pAdapter, D3D_FEATURE_LEVEL_11_0, _uuidof(ID3D12Device), nullptr))) { *ppAdapter = pAdapter; return; } pAdapter->Release(); } } int main(int argc, char *argv[]) { IDXGIFactory4* pFactory = nullptr; if (FAILED(CreateDXGIFactory1(IID_PPV_ARGS(&pFactory)))) { Error("CreateDXGIFactory1 failed"); } IDXGIAdapter1* pAdapter = nullptr; GetHardwareAdapter(pFactory, &pAdapter); if (!pAdapter) { Error("Failed to find DX12-compatible DXGI adapter"); } ID3D12Device* pDevice = nullptr; if (FAILED(D3D12CreateDevice

转载于:https://www.cnblogs.com/hustztz/p/7574992.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Version V6.48 (2019-07-26) Added flash programming support for AmbiqMicro's AMA2B1KK (Apollo2 Blue; AMA2BEVB). Added flash programming support for AmbiqMicro's AMA2B1KK (Apollo2 Blue; AMA2BEVB). Added unlocking support for Microchip SAML10 series devices. Added unlocking support for Microchip SAML10 series devices. Analog Devices ADUCM355: Reset could not be overwritten using a J-Link script file. Fixed. CCS plugin: Added a new option which allows configuring a J-Link script file (project dependent). Commander: "erase" did not use the EraseChip command to erase the entire flash but the EraseSector command. Changed. Commander: "erase" did not use the EraseChip command to erase the entire flash but the EraseSector command. Changed. DLL Updater (internal): Added Infineons Micro Inspector. DLL Updater (internal): Added Infineons Micro Inspector. DLL: STM32WB55 added support for Co-Processor Wireless stack upgrade. DLL: Added Flash programming support for CYT2B9 series devices. DLL: Added Flash programming support for CYT2B9 series devices. DLL: Added Flash programming support for Cypress Traveo2 CYT2B and CYT4B series devices. DLL: Added Flash programming support for Cypress Traveo2 CYT2B and CYT4B series devices. DLL: Added OTP flash programming support for TI's RM42L device family. DLL: Added OTP flash programming support for TI's RM44L device family. DLL: Added OTP flash programming support for TI's RM46L device family. DLL: Added OTP flash programming support for TI's RM48L device family. DLL: Added flash programming support for Panasonic MN1M7BFxx and MN1M7AFxx series devices. DLL: Added flash programming support for Panasonic MN1M7BFxx and MN1M7AFxx series devices. DLL: Added flash programming support for ST STM32G47xx series devices. DLL: Added flash programming support for ST STM32G4xx series devices. DLL: Added flash programming support for ST STM32G4xx series devices. DLL: Added flash programming support for STM32H745, STM32H755, STM32H747 and STM32H757 series devices. DLL: Added flash programming support for STM32H745, STM32H755, STM32H747 and STM32H757 series devices. DLL: Added flash programming support for WIZnet W7500 series device. DLL: Added flash programming support for WIZnet W7500 series device. DLL: Added native trace buffer support for Renesas RZ/A2M series. DLL: Added support for Cypress CYT2B series devices Cortex-M4. DLL: Added support for Cypress CYT4B series devices Cortex-M7_0 and Cortex-M7_1. DLL: Added support for Cypress MB9DF / MB9EF series (FCR4) devices. DLL: Added support for RISC-V behind a DAP as setup. DLL: Added support for RISC-V via SWD for RISC-V behind a DAP setups. DLL: Added support for SPI FLash Adesto ATXP128/ATXP128R to SPIFI-Lib for indirect flash programming. DLL: Added support for SPI FLash Adesto ATXP128/ATXP128R to SPIFI-Lib for indirect flash programming. DLL: Added support for command string "CORESIGHT_SetCoreBaseAddr" DLL: Cypress PSoC4 family: Under special circumstances, unlock did not work. Fixed. DLL: Cypress PSoC4 family: Under special circumstances, unlock did not work. Fixed. DLL: Flash programming sector sizes corrected for Traveo2 CYT4B series devices. DLL: Flash programming sector sizes corrected for Traveo2 CYT4B series devices. DLL: For the MPC560xx devices, the ECC SRAM was not initialized after connect. Fixed. DLL: Hilscher NetX90 flash bank size, fixed. DLL: Infineon TLE98xx: Some J-Link LITEs could not connect establish a successful target connection due to missing firmware functionality. Fixed. DLL: JTAG: When only having 1 TAP in the JTAG chain and its matches the one for the configured CPU core but the TAP-ID was unknown, connect did not work. Fixed. DLL: Linux: Delayed / slowed execution of certain API functions when using J-Link via USB (e.g. on Close()). Introduced in V6.46. Fixed. DLL: Linux: When calling a J-Link application via the global symlink (e.g. "JLinkExe" instead of "./JLinkExe"), sometimes the JLinkDevices.xml file was not found. Fixed. DLL: Linux: When calling a J-Link application via the global symlink (e.g. "JLinkExe" instead of "./JLinkExe"), sometimes the libjlink* shared library was not found. Fixed. DLL: Microchip J-32 OEM probes could not support legacy Atmel devices. Fixed. DLL: Minor bug in flash programming algorithm for STM32G0xx series devices, fixed. DLL: NXP KW34: Added flash programming support for the program and data flash area. DLL: NXP KW34: Added flash programming support for the program and data flash area. DLL: NXP KW35 / KW36 / KW38 / KW39: Added flash programming support for the data flash area. DLL: NXP KW35 / KW36 / KW38 / KW39: Added flash programming support for the data flash area. DLL: NXP KW38: Corrected device names showen in the device selection dialog. DLL: NXP KW38: Corrected device names showen in the device selection dialog. DLL: NXP KW3x family: Improved flash programming speed significantly. DLL: NXP KW3x family: Improved flash programming speed significantly. DLL: NXP LPC18xx / LPC43xx: After QSPI flash programming, the QSPI flash memory was no longer memory mapped accessible. Introduced in V6.41. Fixed. DLL: Open flash loaders for RISC-V did not work properly anymore (introduced with V6.46). Fixed. DLL: Programming issue while another application is already running on Hilscher NetX90, fixed. DLL: QSPI flash programming: When the QE bit was set before flash programming, it has been cleared but not restored by the DLL. Introduced in V6.46h. Fixed. DLL: Qorvo GP570 / UE878 / QPG6 family: Flash programming did not work in recent silicon revisions. Fixed. DLL: Qorvo GPxxx: Under special circumstances, flash programming did not work. Fixed. DLL: RAM size of ST STM32F412 series devices, fixed. DLL: RISC-V behind a DAP: Setting system variables , , from J-Link script files did not have any effect for RISC-V behind a DAP. Fixed. DLL: RISC-V behind a DAP: Setting system variables , , from J-Link script files did not have any effect for RISC-V behind a DAP. Fixed. DLL: RISC-V: Added reset type "Reset Pin" to explicitly allow resetting the target via the reset pin, instead of the bit DLL: RISC-V: Changed default reset type from reset pin to to support reset on almost all systems, also ones that do not populate a reset pin DLL: RISC-V: Interrupts were not disabled correctly during flash programming for built-in flash algos (works well for open flash loaders). Fixed. DLL: RISC-V: Reset could fail with "core did not halt after reset" even if the core halted correctly. Fixed. DLL: Re-attaching to existing debug session after connecting and disconnecting once via TELNET (e.g. used by RTTClient and RTTViewer) did not work properly. Fixed. DLL: Renesas R5F51306 (RX130) devices were not detected by the J-Link DLL. Fixed. DLL: Renesas RX231: OFS1 could not be modified. Fixed. DLL: Renesas RX: Added support for RX66N series devices DLL: Renesas RX: Added support for RX72M series devices DLL: Renesas RX: Added support for RX72M series devices DLL: Renesas RX: Added support for RX72N series devices DLL: Renesas RX: Added support for RX72T series devices DLL: Renesas RX: Added support for RX72T series devices DLL: Renesas RX: RX66T: Programming of option-setting memory (OSIS) did not work properly. Fixed. DLL: Renesas RX: When connecting to locked RX devices via JTAG (does not affect FINE!), 16-byte IDCODE (OSIS) could be rejected even though the correct code was given. Fixed. DLL: Renesas S7G2: QSPI flash programming did not work for QSPI flashes >= 16MB. Fixed. DLL: Resets during halt of TI RM57L843ZWT device, due to running watchdog, fixed. Enabled cross trigger interfaces to forward debug acknowledge signal to Watchdog. DLL: SPI-Flash programming for Spansion S25FL256L, fixed. DLL: STM32L031K6 secure chip did not work. Fixed. DLL: STM32WB55 added support for Co-Processor Wireless stack upgrade. DLL: TI RM42L420 added EEPROM support. DLL: TI RM44L520/RM44L920 added flash and EEPROM support DLL: TI RM57L843ZWT added EEPROM support. DLL: TI RM57L843ZWT added EEPROM support. DLL: Under some circumstances Flash Cache was not cleaned after erase operations. DLL: Unsecure read protection for STM32L151xx series devices, fixed. DLL: Unsecure write protection for STM32L151xxx series devices, fixed. DLL: When using J-Trace PRO with IAR EWARM a "failed to allocate x bytes of memory" error could occur. Fixed. DLL: Windows: Renesas RX: When using FINE interface and disabling ongoining debug mode on debug session close, it could happen that a thread was not exited gracefully, causing handle leaks. Fixed. DLL: macOS: When calling a J-Link application via the global symlink (e.g. "JLinkExe" instead of "./JLinkExe"), sometimes the libjlink* shared library was not found. Fixed. Firmware: Flasher ARM / PRO / Portable PLUS: Chip erase could fail in stand-alone mode. Fixed. Firmware: Flasher ARM / PRO / Portable PLUS: Parallel CFI NOR Flash memory programming could fail under special circumstances. Fixed. Firmware: Flasher ARM / PRO / Portable PLUS: Stand-alone mode did not work for some devices from Analog Devices (e.g. ADuCM7023). Fixed. Firmware: Flasher ARM / PRO: FWrite command was unable to receive 512 bytes via UART at once. Fixed. Firmware: Flasher ARM V4: Warning "J-Link low on memory" could occur after using SPI functionality of J-Link. Fixed. Firmware: Flasher ARM/PPC/RX/PRO: Target power supply monitoring could erroneously detect an over-current. Fixed. Firmware: Flasher PRO: Open flash loaders for RISC-V did not work properly anymore (introduced with V6.46). Fixed. Firmware: Flasher PRO: Universal Flash Loader mode detection in batch mode did not work. Fixed. Firmware: Flasher PRO: Warning "J-Link low on memory" could occur after using SPI functionality of J-Link. Fixed. Firmware: Flasher Portable PLUS did not show the correct status under special circumstances. Fixed. Firmware: Flasher Portable PLUS did not work in J-Link Mode while showing "OK" message. Fixed. Firmware: Flasher Portable PLUS: Universal Flash Loader mode detection in batch mode did not work. Fixed. Firmware: Flasher Portable PLUS: Number of bytes to program was not calculate correctly, progress bar showed wrong percentage. Fixed. Firmware: Flasher Portable PLUS: Open flash loaders for RISC-V did not work properly anymore (introduced with V6.46). Fixed. Firmware: Flasher Portable PLUS: Warning "J-Link low on memory" could occur after using SPI functionality of J-Link. Fixed. Firmware: J-Link EDU Mini: RISC-V: On implementations that do not populate a "program buffer" CSRs could not be accessed correctly, resulting in non-functional debug sessions. Fixed. Firmware: J-Link EDU Mini: RISC-V: Reset on SiFive FE310 device (mounted on HiFive1 boards) could fail with timeout error. Fixed. Firmware: J-Link EDU/BASE/PLUS V10: Added support for RISC-V behind a DAP as setup. Firmware: J-Link EDU/BASE/PLUS V10: Increased heap size of firmware (Added support for heap over multiple memory ranges with gaps between them) Firmware: J-Link EDU/BASE/PLUS V10: RISC-V: On implementations that do not populate a "program buffer" CSRs could not be accessed correctly, resulting in non-functional debug sessions. Fixed. Firmware: J-Link EDU/BASE/PLUS V10: RISC-V: Reset on SiFive FE310 device (mounted on HiFive1 boards) could fail with timeout error. Fixed. Firmware: J-Link EDU/BASE/PLUS V10: SWO: Under very special circumstances it could happen that the 1st byte received on SWO was swallowed. Only happened, if SWO pin was used for something else between SWO_Stop() and SWO_Start(). Fixed. Firmware: J-Link EDU/BASE/PLUS V10: Warning "J-Link low on memory" could occur after using SPI functionality of J-Link. Fixed. Firmware: J-Link OB-K22-SiFive: RISC-V: Reset on SiFive FE310 device (mounted on HiFive1 boards) could fail with timeout error. Fixed. Firmware: J-Link PRO V4: Added support for RISC-V behind a DAP as setup. Firmware: J-Link PRO V4: RISC-V: On implementations that do not populate a "program buffer" CSRs could not be accessed correctly, resulting in non-functional debug sessions. Fixed. Firmware: J-Link PRO V4: RISC-V: Reset on SiFive FE310 device (mounted on HiFive1 boards) could fail with timeout error. Fixed. Firmware: J-Link PRO V4: Warning "J-Link low on memory" could occur after using SPI functionality of J-Link. Fixed. Firmware: J-Link PRO V4: When connecting via IP and using RTT it could happen that J-Link FW crashed and rebooted if the PC did not exit the controlling process in a clean way. Fixed. Firmware: J-Link ULTRA+ V4: Added support for RISC-V behind a DAP as setup. Firmware: J-Link ULTRA+ V4: RISC-V: On implementations that do not populate a "program buffer" CSRs could not be accessed correctly, resulting in non-functional debug sessions. Fixed. Firmware: J-Link ULTRA+ V4: RISC-V: Reset on SiFive FE310 device (mounted on HiFive1 boards) could fail with timeout error. Fixed. Firmware: J-Link ULTRA+ V4: Warning "J-Link low on memory" could occur after using SPI functionality of J-Link. Fixed. Firmware: J-Link ULTRA+ V4: When connecting via IP and using RTT it could happen that J-Link FW crashed and rebooted if the PC did not exit the controlling process in a clean way. Fixed. Firmware: J-Link-OB-K22-SiFive: Linux: When using both VCOM ports extensively under special circumstances it could happen that the USB communication locked up. Fixed. Firmware: J-Trace PRO V1 Cortex-M: When connecting via IP and using RTT it could happen that J-Link FW crashed and rebooted if the PC did not exit the controlling process in a clean way. Fixed. Firmware: J-Trace PRO V2 Cortex-M: Corrected typo on th webserver trace configuration page. Firmware: J-Trace PRO V2 Cortex-M: When connecting via IP and using RTT it could happen that J-Link FW crashed and rebooted if the PC did not exit the controlling process in a clean way. Fixed. Firmware: J-Trace PRO V2 Cortex: Corrected typo on th webserver trace configuration page. Firmware: J-Trace PRO V2 Cortex: When connecting via IP and using RTT it could happen that J-Link FW crashed and rebooted if the PC did not exit the controlling process in a clean way. Fixed. Flasher ARM / PRO / Portable PLUS: Init/Exit step BNE and BEQ could jump to #step + 1. Fixed. Flasher ARM / PRO / Portable PLUS: Open Flashloader RAMCodes in stand-alone-mode can be >12kB now. Flasher ARM / PRO / Portable PLUS: Stand-alone mode did not work for some ARM devices. Introduced in V6.47b. Fixed. Flasher ARM / PRO: Reading or writing memory in J-Link mode via JTAG caused the firmware to hang and report a USB timeout. Fixed. Flasher: Added stand-alone mode support for Traveo2 CYT2B and CYT4B devices. Flasher: Added stand-alone mode support for Traveo2 CYT2B and CYT4B devices. GDBServer: Under special circumstances, a remote "g" packet error popped up when using the GDBServer with Cortex-AR or MIPS. Fixed. GUI applications (Linux): The directory the application was executed from affected the behavior of the application. Fixed. J-Flash Lite: Updated to select the flash base address of the selected device by default as "Prog. Addr." instead of always 0x00000000. J-Flash Lite: Updated to select the flash base address of the selected device by default as "Prog. Addr." instead of always 0x00000000. J-Flash SPI: Added flash programming support for ISSI IS25LP016D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25LP016D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25LP080D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25LP080D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25WP016D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25WP016D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25WP080D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25WP080D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25WP128D SPI Flash. J-Flash SPI: Added flash programming support for ISSI IS25WP128D SPI Flash. J-Flash SPI: Licenses that have been burned into J-Link via J-Link Commander "license add" command were not detected properly. Fixed. J-Flash: Generated data files could be unnecessarily big. Fixed. J-Flash: Generated data files could be unnecessarily big. Fixed. J-Flash: Improved error messages during the check, if the data fits into the flash memory. J-Flash: Improved error messages during the check, if the data fits into the flash memory. J-Flash: Licenses that have been burned into J-Link via J-Link Commander "license add" command were not detected properly. Fixed. J-Link BASE/EDU/PLUS: SPI flash programming with J-Flash SPI was very slow. Fixed. J-Link Commander: RISC-V: Added to the list of suggested/available interfaces JFlash: Added command line parameter "?" (Same functionality as "-?"). JFlash: Added command line parameter "?" (Same functionality as "-?"). JFlashSPI: Added SPI flash programming support for ISSI IS25LP016D SPI flash. JFlashSPI: Added SPI flash programming support for ISSI IS25LP016D SPI flash. JFlashSPI_CL: Added command line parameter "?" (Same functionality as "-?"). JFlashSPI_CL: Added command line parameter "?" (Same functionality as "-?"). JLinkRTTClient: Added command line parameter "?" (Same functionality as "-?"). JLinkRTTClient: Added command line parameter "?" (Same functionality as "-?"). JLinkRTTLogger: Added command line parameter "?" (Same functionality as "-?"). JLinkRTTLogger: Added command line parameter "?" (Same functionality as "-?"). JLinkSTR91x: Added command line parameter "?" (Same functionality as "-?") and implemented "help" functionality which returns the available command line parameters. JLinkSTR91x: Added command line parameter "?" (Same functionality as "-?") and implemented "help" functionality which returns the available command line parameters. JTAGLoad: Added command line parameters "?" and "-?" (Same functionality as "/?"). JTAGLoad: Added command line parameters "?" and "-?" (Same functionality as "/?"). PCodes: Changed an ambiguous J-Link report output. PCodes: Resolved an issue where some Cypress PSoC4 devices would not unlock automatically when connecting to them. Fixed. Package: USB driver for VCOM: Under very special circumstances bluescreens could occur when using VCOM. Fixed. (Driver update only applies to Windows Vista and later. Windows XP still uses the old driver as the new one is not compatible to Windows XP anymore) RTTClient: Connecting to existing session did not work correctly on MacOS. Fixed. RTTClient: Linux: Ubuntu: Attaching to existing debug session did not work properly. Fixed. RTTLogger (Linux): Using logrotate lead to null characters being printed before RTT data. Fixed., RTTViewer: Added 'All terminals' message in case of connection loss. RTTViewer: Added information display on how to correctly enter RTT control block search range. RTTViewer: Echo to Terminal 0 / 'All terminals' was not working correctly. Fixed. RTTViewer: Fixed 'Attach to existing session' mode for Windows, MacOS and Linux. RTTViewer: Fixed typo. RTTViewer: Improved J-Link connect/ disconnect sequence. RTTViewer: Improved handling for data logging. RTTViewer: Improved handling for terminal logging. RTTViewer: Improved log messages when connecting to J-Link. RTTViewer: Improved log output. RTTViewer: Improved reconnecting for attach mode. RTTViewer: Improved the handling in case reading of RTT data failed. RTTViewer: In some occasions, the CL option '--autoconnect' did not work. Fixed. RTTViewer: In some rare occasions, clearing a terminal could crash the application. Fixed. RTTViewer: Linux: Ubuntu: Option "Attaching to existing debug session" did not work properly. Fixed. RTTViewer: Some ANSI CSI sequences caused the application to crash. Fixed. RTTViewer: The '--autoconnect' CL option caused the application to crash. Fixed. RemoteServer: Command line options '-select USB=' and '-SelectEmuBySN ' did not work correctly. Fixed. SDK (Windows): Linking against the *.lib files with MinGW did throw errors reg. undefined references to "__security_check_cookie" and "__GSHandlerCheck". Fixed. SDK: JLINKARM_EraseChip() did not use the EraseChip command to erase the entire flash but the EraseSector command. Changed. SDK: JLINKARM_EraseChip() did not use the EraseChip command to erase the entire flash but the EraseSector command. Changed. Trace: Under certain circumstances backtrace was not showing for targets with PTM. Fixed. UM08002: Chapter "Python support" added. UM08002: Chapter "Python support" updated. Section "API Functions": Added "FlashDownload" description

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值