STM32H743AII6: Graphics Blocks Present, Crypto Still Absent

The STM32H743AII6 is where the H743 line starts to look like a graphics part: a 480 MHz Arm Cortex-M7 backed by a dual-bank 2 MB flash and 1 MB of SRAM in a UFBGA169, and unlike the H742 it brings back the LTDC, the Chrom-ART DMA2D engine and the hardware JPEG codec. What it still lacks is a cryptographic accelerator, so the protection story is the standard RDP and PCROP set without any secure-boot crypto. With the LTDC and DMA2D onboard, the AII6 can drive a panel and accelerate image moves in hardware, which is why it lands in HMI and vision-adjacent designs. The nvram extraction note helps when judging where the design kept its secrets, because flash, option bytes and backup domains all move under one word. A locked STM32H743ZIT6 read covers the 2 MB LQFP144 twin with the same map.

Display Silicon Returns

The graphics pipeline changes the recovery register set, not the lock scheme. The 1 MB of SRAM holds framebuffers that the LTDC drives directly, so a faithful clone needs those display registers captured alongside the code; a dump that skips them will not reproduce the panel behaviour even with a perfect flash image. A reverse-engineered STM32H745BIT6 chip carries the same word on a dual-core crypto cousin, proving the discipline is family-wide. For the older-core equivalent, extracting an STM32F217 image shows a similar idea on a Cortex-M3 part that had no display engine at all. Because there is no crypto block, the Secure Firmware Install region is absent, which keeps recovery self-contained and the verification straightforward.

Framebuffers In SRAM

Panel timing is where graphics clones fail. The LTDC needs a pixel clock, a sync scheme and a layer blend order, and all of that lives in registers that are only meaningful at the moment the display is initialised. A recovered binary that boots but shows a blank or shifted screen usually missed the layer configuration, not the application code. Capturing the LTDC and DMA2D blocks together with the framebuffer contents is what turns a code dump into a working display clone, and skipping that step is the most common reason a graphics recovery looks successful in the log yet fails on the bench. The framebuffer itself is worth archiving byte for byte.

RDP And PCROP Here

Read protection is just one option byte on this graphics part. 0xAA is the open door, 0xBB the normal level 1, while 0xCC is the final level 2 that no reset can reverse. It is placed in FLASH_OPTSR_PRG and committed with OPTSTART, taking hold once the option region reloads and the device resets. Level 1 strips the debugger of the flash, backup SRAM and backup registers, and the megabyte of system RAM here is frozen at reset, so a clone built from a live part is out of the question.

The proprietary code-readout window is defined in FLASH_PRAR_PRG with 256-byte alignment, so instruction fetches pass and everything else fails. Write protection per sector is set in FLASH_WPSN.

Bank Order And Panels

Two banks of eight sectors, each 128 KB wide, make up the full 2 MB here, with SWAP_BANK_OPT able to flip them. Beyond the bank question, the graphics side matters: the 1 MB of SRAM holds the framebuffers the LTDC drives, so the display and DMA2D registers must travel with the code. Establish the active half first, because SWAP_BANK_OPT may have moved it between resets, and confirm the reset vector against the density code before assembly. A two-bank part that also drives a panel is the most register-rich recovery in the H743 line.

Read the lock word first, then the array. Grab the protection level, the PCROP span and the sector write map, verify the start address matches the density code, then save all sixteen sectors.

The ECC unit reports through FLASH_ECCR and never corrupts bytes on its own. The 1.2 V domain driven by the low-dropout regulator on the die reacts badly to a noisy supply, so clean VCAP bypassing is written into the procedure rather than treated as a footnote.

What A Graphics Dump Needs

Should the debug port refuse, the contact channel handles the package and bare-die recovery without a bench. A UFBGA169 is reflowed and reballed after the lid is off, but the capture itself is a standard two-bank read once the running half is known. The extra care is the display registers, not the lock.