ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π΅ Π½Π° Qt Π½Π° STM32

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π΅ Π½Π° Qt Π½Π° STM32Π”ΠΎΠ±ΡŠΡ€ Π΄Π΅Π½! НиС Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Embox ΠΈ искамС Π΄Π° Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° Π½Π΅Π³ΠΎ. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ бяхмС спомСнавали ΠΊΠ°ΠΊ успяхмС Π΄Π° стартирамС OpenCV.

Qt Π΅ кросплатформСна Ρ€Π°ΠΌΠΊΠ°, която Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π½Π΅ само Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, Π½ΠΎ ΠΈ Π½Π΅Ρ‰Π° ΠΊΠ°Ρ‚ΠΎ QtNetwork, Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ класовС Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Qt Π·Π° автоматизация (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° IoT) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΡ‚ Π΅ΠΊΠΈΠΏΠ° Π½Π° Qt ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΡ…Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Qt Π² Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ систСми, Π·Π°Ρ‚ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ са доста Π΄ΠΎΠ±Ρ€Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ. ΠžΠ±Π°Ρ‡Π΅ Π΄ΠΎ Π½Π΅ΠΎΡ‚Π΄Π°Π²Π½Π°, ΠΌΠ°Π»ΠΊΠΎ Ρ…ΠΎΡ€Π° сС замисляха Π·Π° ΠΏΠΎΡ€Ρ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Qt Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ, вСроятно Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° слоТна β€” Qt Π΅ голям, Π° MCU ΠΌΠ°Π»ΠΊΠΈ.

ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с мултимСдия ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π°Π²Π°Ρ‰ΠΈ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Pentium ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠŸΡ€Π΅Π΄ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° Π² Π±Π»ΠΎΠ³Π° Π½Π° Qt сС появи пост. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…Π° ΠΏΠΎΡ€Ρ‚ Π½Π° Qt ΠΏΠΎΠ΄ ОБ RTEMS ΠΈ пуснаха ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΈ Π½Π° няколко ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, управлявани ΠΎΡ‚ stm32f7. Π’ΠΎΠ²Π° Π½ΠΈ Π·Π°ΠΈΠ½Ρ‚Ρ€ΠΈΠ³ΡƒΠ²Π°. ЗабСлязахмС, ΠΈ самитС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΏΠΈΡˆΠ°Ρ‚ Π·Π° Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Qt забавя Π½Π° STM32F7-Discovery. Π—Π°ΠΏΠΈΡ‚Π°Ρ…ΠΌΠ΅ сС Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° стартирамС Qt ΠΏΠΎΠ΄ Embox, ΠΊΠ°Ρ‚ΠΎ Π½Π΅ просто нарисувамС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Π° Π΄Π° стартирамС анимация.

Π’ Embox Π²Π΅Ρ‡Π΅ ΠΎΡ‚Π΄Π°Π²Π½Π° Π΅ ΠΏΠΎΡ€Ρ‚Π½Π°Ρ‚ Qt 4.8, Π·Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠ±Π²Π°ΠΌΠ΅. Π˜Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ moveblocks β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Π° анимация с ΠΏΡ€ΡƒΠΆΠΈΠ½ΠΈ.

Qt moveblocks Π½Π° QEMUΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π΅ Π½Π° Qt Π½Π° STM32

ΠŸΡŠΡ€Π²ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ Qt с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° анимацията. Π—Π° Ρ†Π΅Π»Ρ‚Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° опция β€œ-qconfig minimal,small,medium …”. Вя ΡΠ²ΡŠΡ€Π·Π²Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» ΠΎΡ‚ Qt, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ ΠΌΠ½ΠΎΠ³ΠΎ макроси β€” ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ / ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΠΌ. Π‘Π»Π΅Π΄ Ρ‚Π°Π·ΠΈ опция добавямС Π² конфигурацията Π΄Ρ€ΡƒΠ³ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅, Π°ΠΊΠΎ искамС Π΄Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π΅Ρ‰ΠΎ. Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° конфигурация.

Π—Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Qt, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ слой Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с ОБ. Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π΅ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ QPA (Qt Platform Abstraction). Π’Π·Π΅Ρ…ΠΌΠ΅ Π·Π° основа Π²Π΅Ρ‡Π΅ Π³ΠΎΡ‚ΠΎΠ² плъгин fb_base ΠΎΡ‚ Qt, Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ QPA Π·Π° Linux. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ малък плъгин emboxfb, ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя Π½Π° Qt framebuffer Π½Π° Embox, Π° слСд Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠΉ рисува Ρ‚Π°ΠΌ Π±Π΅Π· ΠΏΠΎΠΌΠΎΡ‰ отстрани.

Π’Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° плъгин

QEmboxFbIntegration::QEmboxFbIntegration()
    : fontDb(new QGenericUnixFontDatabase())
{
    struct fb_var_screeninfo vinfo;
    struct fb_fix_screeninfo finfo;
    const char *fbPath = "/dev/fb0";

    fbFd = open(fbPath, O_RDWR);
    if (fbFd setPhysicalSize(QSize(fbWidth, fbHeight));
    mScreens.append(mPrimaryScreen);

    this->printFbInfo();
}

А Π΅Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡ€Π΅ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

QRegion QEmboxFbScreen::doRedraw()
{
    QVector rects;
    QRegion touched = QFbScreen::doRedraw();

    DPRINTF("QEmboxFbScreen::doRedrawn");

    if (!compositePainter) {
        compositePainter = new QPainter(mFbScreenImage);
    }

    rects = touched.rects();
    for (int i = 0; i drawImage(rects[i], *mScreenImage, rects[i]);
    }
    return touched;
}

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка, с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° оптимизация Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° -Os, ΠΎΠ±Ρ€Π°Π·Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° стана 3.5 Мб, ΠΊΠΎΠ΅Ρ‚ΠΎ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ сС вписва Π² основната ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° STM32F746. ΠšΠ°ΠΊΡ‚ΠΎ спомСнахмС Π² Π΄Ρ€ΡƒΠ³Π° статия Π·Π° OpenCV, Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΠ»Π°Ρ‚ΠΊΠ° ΠΈΠΌΠ°:

  • 1 Мб ROM
  • 320 Кб RAM
  • 8 Мб SDRAM
  • 16 Мб QSPI

Въй ΠΊΠ°Ρ‚ΠΎ Π·Π° OpenCV Π²Π΅Ρ‡Π΅ бСшС Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄ ΠΎΡ‚ QSPI, Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π·Π°Ρ€Π΅Π΄ΠΈΡ…ΠΌΠ΅ ΠΎΠ±Ρ€Π°Π·Π° Π½Π° Embox с Qt Π² QSPI изцяло. И ΡƒΡ€Π°, всичко ΠΏΠΎΡ‡Ρ‚ΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΎΡ‚ QSPI! Но, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ OpenCV, сС ΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚Π²ΡŠΡ€Π΄Π΅ Π±Π°Π²Π½ΠΎ.

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π΅ Π½Π° Qt Π½Π° STM32

Π—Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ слСдното - ΠΏΡŠΡ€Π²ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ ΠΎΠ±Ρ€Π°Π·Π° Π² QSPI, слСд Ρ‚ΠΎΠ²Π° Π³ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π² SDRAM ΠΈ изпълнявамС ΠΎΡ‚Ρ‚Π°ΠΌ. ΠžΡ‚ SDRAM стана ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, Π½ΠΎ всС ΠΏΠ°ΠΊ Π΄Π°Π»Π΅Ρ‡ ΠΎΡ‚ QEMU.

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π΅ Π½Π° Qt Π½Π° STM32

Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° идСя бСшС Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая - Π½Π°Π»ΠΈ Qt ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° някои изчислСния Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π² анимацията. ΠžΠΏΠΈΡ‚Π°Ρ…ΠΌΠ΅, Π½ΠΎ Ρ‚ΡƒΠΊ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ Π²ΠΈΠ΄Π½ΠΎ ускорСниС, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ статията Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Qt Ρ‚Π²ΡŠΡ€Π΄ΡΡ‚, Ρ‡Π΅ FPU Π΄Π°Π²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ Ρ€ΡŠΡΡ‚ Π² скоростта Π·Π° "анимация Π½Π° плъзганС" Π½Π° сСнзорния Π΅ΠΊΡ€Π°Π½. МоТС Π±ΠΈ Π² moveblocks изчислСнията с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая са Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ, ΠΈ Ρ‚ΠΎΠ²Π° зависи ΠΎΡ‚ конкрСтния ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Най-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° идСя сС ΠΎΠΊΠ°Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° framebuffer ΠΎΡ‚ SDRAM Π² Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚. Π—Π° Ρ†Π΅Π»Ρ‚Π° Π½Π°ΠΌΠ°Π»ΠΈΡ…ΠΌΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Π΅ΠΊΡ€Π°Π½Π° ΠΎΡ‚ 480Γ—272 Π½Π° 272Γ—272. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΠΎΠ½ΠΈΠΆΠΈΡ…ΠΌΠ΅ Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ A8R8G8B8 Π΄ΠΎ R5G6B5, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π΅Π΄ΠΈΠ½ пиксСл ΠΎΡ‚ 4 Π½Π° 2 Π±Π°ΠΉΡ‚Π°. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° framebuffer 272 * 272 * 2 = 147968 Π±Π°ΠΉΡ‚Π°. Π’ΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ускорСниС, Π½Π°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ, Π° анимацията стана ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠ»Π°Π²Π½Π°.

ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ бСшС ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° Embox ΠΎΡ‚ RAM, Π° Π½Π° Qt ΠΎΡ‚ SDRAM. Π—Π° Ρ‚ΠΎΠ²Π° ΠΏΡŠΡ€Π²ΠΎ Π»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ…ΠΌΠ΅ статично Embox Π·Π°Π΅Π΄Π½ΠΎ с Qt, Π½ΠΎ сСгмСнтитС text, rodata, data ΠΈ bss Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ…ΠΌΠ΅ Π² QSPI, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ впослСдствиС Π΄Π° Π³ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ Π² SDRAM.

section (qt_text, SDRAM, QSPI)
phdr	(qt_text, PT_LOAD, FLAGS(5))

section (qt_rodata, SDRAM, QSPI)
phdr	(qt_rodata, PT_LOAD, FLAGS(5))

section (qt_data, SDRAM, QSPI)
phdr	(qt_data, PT_LOAD, FLAGS(6))

section (qt_bss, SDRAM, QSPI)
phdr	(qt_bss, PT_LOAD, FLAGS(6))

ΠŸΠΎΡ€Π°Π΄ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° Embox ΠΎΡ‚ ROM ΡΡŠΡ‰ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ осСзаСмо ускорСниС. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ анимацията стана доста ΠΏΠ»Π°Π²Π½Π°:

ΠŸΡƒΡΠ½Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎΡ‚ΠΎ

Π’ самия ΠΊΡ€Π°ΠΉ, подготовяйки статията ΠΈ ΠΏΡ€ΠΎΠ±Π²Π°ΠΉΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° Embox, сС установи, Ρ‡Π΅ Qt moveblocks Ρ€Π°Π±ΠΎΡ‚ΠΈ прСкрасно ΠΈ ΠΎΡ‚ QSPI с framebuffer Π² SDRAM, Π° тясното място Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ бСшС ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° framebuffer! ИзглСТда, Ρ‡Π΅ Π·Π° Π΄Π° сС ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π΅ Π½Π°Ρ‡Π°Π»Π½ΠΎΡ‚ΠΎ β€œΡΠ»Π°ΠΉΠ΄ΡˆΠΎΡƒβ€ Π΅ Π±ΠΈΠ»ΠΎ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ускорСниС ΠΎΡ‚ 2 ΠΏΡŠΡ‚ΠΈ, постигнато Ρ‡Ρ€Π΅Π· простото намаляванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° framebuffer. А постиганСто Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ само с ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° Embox Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±ΡŠΡ€Π·ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ΠΈ Π½Π΅ успя (ускорСниСто бСшС Π½Π΅ 2, Π° ΠΎΠΊΠΎΠ»ΠΎ 1.5 ΠΏΡŠΡ‚ΠΈ).

Как Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ сами

Ако Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‚Π΅ с STM32F7-Discovery, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами Π΄Π° стартиратС Qt ΠΏΠΎΠ΄ Embox. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ става Ρ‚ΠΎΠ²Π° Π½Π° нашия wiki.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка успяхмС Π΄Π° стартирамС Qt! БлоТността Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, спорСд нас, Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π°. ЕстСствСно, трябва Π΄Π° сС Π²Π·Π΅ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ спСцификата Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° изчислитСлнитС систСми. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ оптимизацията сочат извСстния Ρ„Π°ΠΊΡ‚, Ρ‡Π΅ Π½Π°ΠΉ-тясното място Π² изчислитСлната систСма Π½Π΅ Π΅ ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚, Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.

Π’Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° Ρ‰Π΅ участвамС Π½Π° фСстивала TechTrain. Π’Π°ΠΌ Ρ‰Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Qt, OpenCV Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ Π½Π°ΡˆΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈ постиТСния.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster