Skocz do zawartości

STM32H7S78-DK 600MHz - dobicie się do framebuffor'a


virtualny

Pomocna odpowiedź

Dzisiaj zestaw totalna petarda: 
STM32H7S78-DK z procesorem STM32H7S7L8H6H 

1.thumb.jpg.2d051a6de4f444f66dcbdbc957fc29f1.jpg

2.thumb.jpg.b679a9308cec6fe400c443e015ed740a.jpg

3.thumb.jpg.ed2360eb980cc4bb5a9fa7f908d81364.jpg

4.thumb.jpg.f329122e155f2baad8fdbe398a83fe94.jpg

To jest chyba najbardziej wypasione Discovery od STM.
Długo by mówić nad listą ulepszeń i dostępnych peryferiali, tylko pokrótce, aby nie zanudzać.

Dane z pierwszej strony MCU DS:

High-Performance Arm Cortex-M7 MCU, 
600MHz, 64KB Bootflash, 620KB SRAM, 
with DSP, cache, USB HS PHY, 
NeoChrom GPU, TFT-LCD

Ustaliłem że LCD to 5 INCH (!!!) cappacitive TFT 800x480 60FPS

Uwaga: To jest ten z tych proców jak w zestawie STM32H750-DK, który ma mało internal flash'a, w zamian jest multum externa flasha w zestawie. 
W zasadzie (choć nie zawsze jak na przykład dzisiejszy program z Vectordotami) jest on przeznaczony do wstępnego skonfigurowania proca i peryferiów, aby odpalić program umieszczony w zewnętrznym flash'u.

W zestawie osadzono pamięci:

1. 256Mbit Hexadeca-SPI PSRAM (pseudo static RAM) mapowane od 0x90000000 do 92000000
2. 1Gbit OCTO-SPI external flash mapowany od 0x70000000 do 0x78000000

Iterfejs LTDC jest cały czas niemal taki sam i za każdym razem działają sztuki przyswojone w walce z zestawem STM32H750-DK jak na przykład zapisywanie framebuffora, wait for vsysnc, czy ustanowienie adresu framebuffora:

define FRAME_ADDRESS 0x90000000
	// change layer address from new frame
	LTDC_Layer1->CFBAR  = (FRAME_ADDRESS);
	LTDC->SRCR = LTDC_SRCR_VBR; // or LTDC_SRCR_IMR for immediatelly change

 


  while((LTDC->CPSR & 0x0000ffff) < screen_Y);  // wait for #screen_Y raster line
    while((LTDC->CDSR & LTDC_CDSR_VSYNCS) == 0);  // wait for VSYNC

 

uint32_t* pFBaddr = (uint32_t *) FRAME_ADDRESS;
//---
    //    UTIL_LCD_Clear(UTIL_LCD_COLOR_BLACK);
    for(uint32_t i=0; i< (256*1024); i++){
        pFBaddr[i] = UTIL_LCD_COLOR_BLACK; // fill SDRAM layer buffors as black color ; UTIL_LCD_COLOR_BLACK = 0xFF000000
    }

Także sztuczka z uruchomieniem działającego programu operującego na framebuforze jest cały czas taka sama:
Zaadoptowanie przykładu używającego LCD z firmowych dem. Dzisiaj moim przyjacielem było demo o nazwie "Bsp".

Ten procesor ma raptem 64KB internal flash'a co mimo wszystko nie jest aż tak mało, bo program z Vectordotami zajmuje tylko 23KB, gdzie lwia część z tego to procedury BSP i HAL konfigurujące procka.
O ile pamiętam procek grasuje na 400MHZ co i tak dla vectordotów jest aż nadto, więc nie było sensu kręcić go na maxa. Żeby nie zamazywać fabrycznego dema usytuowanego od 0x70000000
program jest skompilowany pod 0x08000000 (internal flash), zamazuje firmowy Boot do wystartowania dema, dlatego najpierw Boota odczytałem i zapisałem do HEX'a.

Ponieważ ten zestaw to dość świeża sprawa, środowisko i STM32Cubeprogrammer zaczęło poprawnie z tym gadać po aktualizacji do najnowszej wersji.

Tak wygląda firmowe demo:

 

A tak uruchomione Vectordoty:

#shorts

 

W załączeniu pliki HEX 
1 - firmowego Boota
2 - Vectordoty

FW.zip

3. link do githuba z hexami: STM32H7S7-DK FANTASTIC VECTORDOTS 

Podsumowując - ten zestaw z LCD 5 cali, 800x480, 60FPS i procem ze wspomagaczami, dzięki którym utrzymuje to 60FPS, robi piorunujące wrażenie.

  • Lubię! 2
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.