STM32 เชชเชฐ Qt เชชเซ‹เชฐเซเชŸเชฟเช‚เช—

STM32 เชชเชฐ Qt เชชเซ‹เชฐเซเชŸเชฟเช‚เช—เชถเซเชญ เชฌเชชเซ‹เชฐ เช…เชฎเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช›เซ€เช เชเชฎเซเชฌเซ‹เช•เซเชธ STM32F7-Discovery เชชเชฐ Qt เชฒเซ‰เชจเซเชš เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เช…เช—เชพเช‰, เช…เชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชนเซเชฏเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เช…เชฎเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชซเชณ เชฅเชฏเชพ เช“เชชเชจเชธเซ€เชตเซ€.

Qt เช เช•เซเชฐเซ‹เชธ-เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชฎเชพเชคเซเชฐ เช—เซเชฐเชพเชซเชฟเช•เชฒ เช˜เชŸเช•เซ‹ เชœ เชจเชนเซ€เช‚, เชชเชฃ QtNetwork, เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชตเชฐเซเช—เซ‹เชจเซ‹ เชธเชฎเซ‚เชน, เช‘เชŸเซ‹เชฎเซ‡เชถเชจ เชฎเชพเชŸเซ‡ Qt (IoT เช…เชฎเชฒเซ€เช•เชฐเชฃ เชธเชนเชฟเชค) เช…เชจเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. Qt เชŸเซ€เชฎ เชเชฎเซเชฌเซ‡เชกเซ‡เชก เชธเชฟเชธเซเชŸเชฎเซเชธเชฎเชพเช‚ Qt เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชฐเชฟเชฏ เชฐเชนเซ€ เช›เซ‡, เชคเซ‡เชฅเซ€ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชคเชฆเซเชฆเชจ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช›เซ‡. เชœเซ‹ เช•เซ‡, เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชธเซเชงเซ€, เชฅเซ‹เชกเชพ เชฒเซ‹เช•เซ‹เช Qt เชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐเซเชธเชฎเชพเช‚ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚, เช•เชฆเชพเชš เช•เชพเชฐเชฃ เช•เซ‡ เช†เชตเชพ เช•เชพเชฐเซเชฏ เชฎเซเชถเซเช•เซ‡เชฒ เชฒเชพเช—เซ‡ เช›เซ‡ - Qt เชฎเซ‹เชŸเซเช‚ เช›เซ‡, MCU เชจเชพเชจเชพ เช›เซ‡.

เชฌเซ€เชœเซ€ เชฌเชพเชœเซ, เช† เช•เซเชทเชฃเซ‡ เชฎเชฒเซเชŸเชฟเชฎเซ€เชกเชฟเชฏเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐเซเชธ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเชฅเชฎ เชชเซ‡เชจเซเชŸเชฟเชฏเชฎเซเชธเชฅเซ€ เชถเซเชฐเซ‡เชทเซเช  เช›เซ‡. เชฒเช—เชญเช— เชเช• เชตเชฐเซเชท เชชเชนเซ‡เชฒเชพเช‚, Qt เชฌเซเชฒเซ‹เช— เชฆเซ‡เช–เชพเชฏเซ‹ เชชเซ‹เชธเซเชŸ. เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช RTEMS OS เชฎเชพเชŸเซ‡ Qt เชจเซ‹ เชชเซ‹เชฐเซเชŸ เชฌเชจเชพเชตเซเชฏเซ‹, เช…เชจเซ‡ stm32f7 เชšเชฒเชพเชตเชคเชพ เช•เซ‡เชŸเชฒเชพเช• เชฌเซ‹เชฐเซเชก เชชเชฐ เชตเชฟเชœเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชถเชฐเซ‚ เช•เชฐเซเชฏเชพ. เช† เช…เชฎเชจเซ‡ เชฐเชธ เชนเชคเซ‹. เชคเซ‡ เชจเซ‹เช‚เชงเชจเซ€เชฏ เชนเชคเซเช‚, เช…เชจเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชชเซ‹เชคเซ‡ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชฒเช–เซ‡ เช›เซ‡, เช•เซ‡ STM32F7-เชกเชฟเชธเซเช•เชตเชฐเซ€ เชชเชฐ Qt เชงเซ€เชฎเซเช‚ เช›เซ‡. เช…เชฎเซ‡ เชตเชฟเชšเชพเชฐเซ€ เชฐเชนเซเชฏเชพ เชนเชคเชพ เช•เซ‡ เชถเซเช‚ เช†เชชเชฃเซ‡ Embox เชนเซ‡เช เชณ Qt เชšเชฒเชพเชตเซ€ เชถเช•เซ€เช, เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชตเชฟเชœเซ‡เชŸ เชฆเซ‹เชฐเชตเชพ เชจเชนเซ€เช‚, เชชเชฃ เชเชจเชฟเชฎเซ‡เชถเชจ เชšเชฒเชพเชตเซ€ เชถเช•เซ€เช.

Qt 4.8 เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ Embox เชชเชฐ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เช…เชœเชฎเชพเชตเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เช…เชฎเซ‡ เชฎเซ‚เชตเชฌเซเชฒเซ‹เช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเชธเช‚เชฆ เช•เชฐเซ€ เช›เซ‡ - เชธเซเชชเซเชฐเชฟเช‚เช—เซ€ เชเชจเชฟเชฎเซ‡เชถเชจเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ.

QEMU เชชเชฐ Qt เชฎเซ‚เชตเชฌเซเชฒเซ‰เช•เซเชธSTM32 เชชเชฐ Qt เชชเซ‹เชฐเซเชŸเชฟเช‚เช—

เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชเชจเชฟเชฎเซ‡เชถเชจเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช˜เชŸเช•เซ‹เชจเชพ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเซ‡เชŸ เชธเชพเชฅเซ‡, เชœเซ‹ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซ‹, Qt เช—เซ‹เช เชตเซ€เช เช›เซ€เช. เช† เชฎเชพเชŸเซ‡ "-qconfig เชฎเชฟเชจเชฟเชฎเชฒ, เชธเซเชฎเซ‹เชฒ, เชฎเซ€เชกเชฟเชฏเชฎ..." เชตเชฟเช•เชฒเซเชช เช›เซ‡. เชคเซ‡ Qt เชฅเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเชจเซ‡ เช˜เชฃเชพ เชฎเซ‡เช•เซเชฐเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡ - เชถเซเช‚ เชธเช•เซเชทเชฎ เช•เชฐเชตเซเช‚ / เชถเซเช‚ เช…เช•เซเชทเชฎ เช•เชฐเชตเซเช‚. เช† เชตเชฟเช•เชฒเซเชช เชชเช›เซ€, เช…เชฎเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เช…เชจเซเชฏ เชซเซเชฒเซ‡เช— เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช เชœเซ‹ เช†เชชเชฃเซ‡ เช•เช‚เชˆเช• เชฌเซ€เชœเซเช‚ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹เชˆเช. เช…เชนเซ€เช‚ เช…เชฎเชพเชฐเชพ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ.

Qt เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ OS เชธเซเชธเช‚เช—เชคเชคเชพ เชธเซเชคเชฐ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชเช• เชฐเชธเซเชคเซ‹ QPA (Qt เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชเชฌเซเชธเซเชŸเซเชฐเซ‡เช•เซเชถเชจ) เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ‹ เช›เซ‡. เช…เชฎเซ‡ Qt เชฎเชพเช‚ เชธเชฎเชพเชตเชฟเชทเซเชŸ เชคเซˆเชฏเชพเชฐ fb_base เชชเซเชฒเช—เช‡เชจเชจเซ‡ เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เชฒเซ€เชงเซ‹, เชœเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ Linux เชฎเชพเชŸเซ‡ QPA เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎ เช เชเชฎเชฌเซ‹เช•เซเชธเชเชซเชฌเซ€ เชจเชพเชฎเชจเซเช‚ เชเช• เชจเชพเชจเซเช‚ เชชเซเชฒเช—เช‡เชจ เช›เซ‡, เชœเซ‡ เชเชฎเซเชฌเซ‹เช•เซเชธเชจเชพ เชซเซเชฐเซ‡เชฎเชฌเชซเชฐ เชธเชพเชฅเซ‡ Qt เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡ เชฌเชนเชพเชฐเชจเซ€ เช•เซ‹เชˆ เชฎเชฆเชฆ เชตเชฟเชจเชพ เชคเซเชฏเชพเช‚ เชฆเซ‹เชฐเซ‡ เช›เซ‡.

เชชเซเชฒเช—เช‡เชจ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช† เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡

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 (fbPath < 0) {
        qFatal("QEmboxFbIntegration: Error open framebuffer %s", fbPath);
    }
    if (ioctl(fbFd, FBIOGET_FSCREENINFO, &finfo) == -1) {
        qFatal("QEmboxFbIntegration: Error ioctl framebuffer %s", fbPath);
    }
    if (ioctl(fbFd, FBIOGET_VSCREENINFO, &vinfo) == -1) {
        qFatal("QEmboxFbIntegration: Error ioctl framebuffer %s", fbPath);
    }
    fbWidth        = vinfo.xres;
    fbHeight       = vinfo.yres;
    fbBytesPerLine = finfo.line_length;
    fbSize         = fbBytesPerLine * fbHeight;
    fbFormat       = vinfo.fmt;
    fbData = (uint8_t *)mmap(0, fbSize, PROT_READ | PROT_WRITE,
                             MAP_SHARED, fbFd, 0);
    if (fbData == MAP_FAILED) {
        qFatal("QEmboxFbIntegration: Error mmap framebuffer %s", fbPath);
    }
    if (!fbData || !fbSize) {
        qFatal("QEmboxFbIntegration: Wrong framebuffer: base = %p,"
               "size=%d", fbData, fbSize);
    }

    mPrimaryScreen = new QEmboxFbScreen(fbData, fbWidth,
                                        fbHeight, fbBytesPerLine,
                                        emboxFbFormatToQImageFormat(fbFormat));

    mPrimaryScreen->setPhysicalSize(QSize(fbWidth, fbHeight));
    mScreens.append(mPrimaryScreen);

    this->printFbInfo();
}

เช…เชจเซ‡ เช† เชฐเซ€เชกเซเชฐเซ‹เช‡เช‚เช— เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡

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

    DPRINTF("QEmboxFbScreen::doRedrawn");

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

    rects = touched.rects();
    for (int i = 0; i < rects.size(); i++) {
        compositePainter->drawImage(rects[i], *mScreenImage, rects[i]);
    }
    return touched;
}

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชฎเซ‡เชฎเชฐเซ€ เชธเชพเชˆเช -Os เชฎเชพเชŸเซ‡ เช•เชฎเซเชชเชพเชˆเชฒเชฐ เช“เชชเซเชŸเชฟเชฎเชพเชˆเชเซ‡เชถเชจ เชธเช•เซเชทเชฎ เชฅเชตเชพเชฅเซ€, เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€ เชˆเชฎเซ‡เชœ 3.5 MB เชจเซ€ เชฌเชนเชพเชฐ เช†เชตเซ€, เชœเซ‡ เช…เชฒเชฌเชคเซเชค STM32F746 เชจเซ€ เชฎเซเช–เซเชฏ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฌเช‚เชงเชฌเซ‡เชธเชคเซ€ เชจเชฅเซ€. เชœเซ‡เชฎ เช•เซ‡ เช…เชฎเซ‡ เช“เชชเชจเชธเซ€เชตเซ€ เชตเชฟเชถเซ‡ เช…เชฎเชพเชฐเชพ เช…เชจเซเชฏ เชฒเซ‡เช–เชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฒเช–เซเชฏเซเช‚ เช›เซ‡, เช† เชฌเซ‹เชฐเซเชก เชชเชพเชธเซ‡ เช›เซ‡:

  • 1 เชเชฎเชฌเซ€ เชฐเซ‹เชฎ
  • 320 KB เชฐเซ‡เชฎ
  • 8 MB SDRAM
  • 16 MB QSPI

QSPI เชคเชฐเชซเชฅเซ€ เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ OpenCV เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเซ‡ QSPI เชฎเชพเช‚ เชธเชฎเช—เซเชฐ Embox c Qt เช‡เชฎเซ‡เชœ เชฒเซ‹เชก เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เช…เชจเซ‡ เชนเซเชฐเซ‡, QSPI เชฅเซ€ เชฒเช—เชญเช— เชคเชฐเชค เชœ เชฌเชงเซเช‚ เชถเชฐเซ‚ เชฅเชฏเซเช‚! เชชเชฐเช‚เชคเซ OpenCV เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชคเซ‡ เช–เซ‚เชฌ เชงเซ€เชฎเซ‡เชฅเซ€ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

STM32 เชชเชฐ Qt เชชเซ‹เชฐเซเชŸเชฟเช‚เช—

เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช† เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ - เชชเชนเซ‡เชฒเชพ เช…เชฎเซ‡ เช‡เชฎเซ‡เชœเชจเซ‡ QSPI เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเซ€เช เช›เซ€เช, เชชเช›เซ€ เชคเซ‡เชจเซ‡ SDRAM เชฎเชพเช‚ เชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซเชฏเชพเช‚เชฅเซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเซ€เช เช›เซ€เช. SDRAM เชฅเซ€ เชคเซ‡ เชฅเซ‹เชกเซเช‚ เชเชกเชชเซ€ เชฌเชจเซเชฏเซเช‚, เชชเชฐเช‚เชคเซ เชนเชœเซ เชชเชฃ QEMU เชฅเซ€ เชฆเซ‚เชฐ เช›เซ‡.

STM32 เชชเชฐ Qt เชชเซ‹เชฐเซเชŸเชฟเช‚เช—

เช†เช—เชณ, เชซเซเชฒเซ‹เชŸเชฟเช‚เช— เชชเซ‹เชˆเชจเซเชŸเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เชนเชคเซ‹ - เช›เซ‡เชตเชŸเซ‡, Qt เชเชจเชฟเชฎเซ‡เชถเชจเชฎเชพเช‚ เชšเซ‹เชฐเชธเชจเชพ เช•เซ‹เช“เชฐเซเชกเชฟเชจเซ‡เชŸเซเชธเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เช—เชฃเชคเชฐเซ€เช“ เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เช…เชนเซ€เช‚ เช…เชฎเชจเซ‡ เช•เซ‹เชˆ เชฆเซƒเชถเซเชฏเชฎเชพเชจ เชชเซเชฐเชตเซ‡เช— เชฎเชณเซเชฏเซ‹ เชจเชฅเซ€, เชคเซ‡เชฎ เช›เชคเชพเช‚ เชฒเซ‡เช– Qt เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เชฆเชพเชตเซ‹ เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹ เช•เซ‡ FPU เชŸเชšเชธเซเช•เซเชฐเซ€เชจ เชชเชฐ "เชกเซเชฐเซ‡เช—เชฟเช‚เช— เชเชจเชฟเชฎเซ‡เชถเชจ" เชฎเชพเชŸเซ‡ เชเชกเชชเชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชตเชงเชพเชฐเซ‹ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‚เชตเชฌเซเชฒเซ‹เช•เซเชธเชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช“เช›เซ€ เชซเซเชฒเซ‹เชŸเชฟเช‚เช— เชชเซ‹เชˆเชจเซเชŸ เช—เชฃเชคเชฐเซ€เช“ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เช† เชšเซ‹เช•เซเช•เชธ เช‰เชฆเชพเชนเชฐเชฃ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡.

เชซเซเชฐเซ‡เชฎเชฌเชซเชฐเชจเซ‡ SDRAM เชฅเซ€ เช†เช‚เชคเชฐเชฟเช• เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช–เชธเซ‡เชกเชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เช…เชธเชฐเช•เชพเชฐเช• เชตเชฟเชšเชพเชฐ เชนเชคเซ‹. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชธเซเช•เซเชฐเซ€เชจเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ 480x272 เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ 272x272 เชฌเชจเชพเชตเซเชฏเชพเช‚ เช›เซ‡. เช…เชฎเซ‡ A8R8G8B8 เชฅเซ€ R5G6B5 เชธเซเชงเซ€ เชฐเช‚เช—เชจเซ€ เชŠเช‚เชกเชพเชˆ เชชเชฃ เช˜เชŸเชพเชกเซ€ เช›เซ‡, เช†เชฎ เชเช• เชชเชฟเช•เซเชธเซ‡เชฒเชจเซเช‚ เช•เชฆ 4 เชฅเซ€ 2 เชฌเชพเช‡เชŸเซเชธ เช˜เชŸเชพเชกเซเชฏเซเช‚ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ€ เชซเซเชฐเซ‡เชฎเชฌเชซเชฐเชจเซเช‚ เช•เชฆ 272 * 272 * 2 = 147968 เชฌเชพเช‡เชŸเซเชธ เช›เซ‡. เช†เชจเชพเชฅเซ€ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชชเซเชฐเชตเซ‡เช—เช• เชฅเชฏเซ‹, เช•เชฆเชพเชš เชธเซŒเชฅเซ€ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡, เชเชจเชฟเชฎเซ‡เชถเชจ เชฒเช—เชญเช— เชธเชฐเชณ เชฌเชจเซเชฏเซเช‚.

เชจเชตเซ€เชจเชคเชฎ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ RAM เชฎเชพเช‚เชฅเซ€ Embox เช•เซ‹เชก เช…เชจเซ‡ SDRAM เชฎเชพเช‚เชฅเซ€ Qt เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชนเชคเซเช‚. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพ, เชนเช‚เชฎเซ‡เชถเชจเซ€ เชœเซ‡เชฎ, เชธเซเชŸเซ‡เชŸเชฟเช•เชฒเซ€ เชเชฎเซเชฌเซ‰เช•เซเชธเชจเซ‡ Qt เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ€เช เช›เซ€เช, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเชพ เชŸเซ‡เช•เซเชธเซเชŸ, เชฐเซ‹เชกเซ‡เชŸเชพ, เชกเซ‡เชŸเชพ เช…เชจเซ‡ 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))

ROM เชฎเชพเช‚เชฅเซ€ Embox เช•เซ‹เชกเชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเซ€เชจเซ‡, เช…เชฎเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชชเซเชฐเชตเซ‡เช—เช• เชชเชฃ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชเชจเชฟเชฎเซ‡เชถเชจ เชเช•เชฆเชฎ เชธเชฐเชณ เชฌเชจเซเชฏเซเช‚:


เช–เซ‚เชฌ เชœ เช…เช‚เชคเชฎเชพเช‚, เชฒเซ‡เช– เชคเซˆเชฏเชพเชฐ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช…เชจเซ‡ เชตเชฟเชตเชฟเชง เชเชฎเซเชฌเซ‹เช•เซเชธ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹เชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช•เซ‡ QT เชฎเซ‚เชตเชฌเซเชฒเซ‹เช•เซเชธ SDRAM เชฎเชพเช‚ เชซเซเชฐเซ‡เชฎเชฌเชซเชฐ เชธเชพเชฅเซ‡ QSPI เชฎเชพเช‚เชฅเซ€ เชธเชฐเชธ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชกเชšเชฃ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชซเซเชฐเซ‡เชฎเชฌเชซเชฐเชจเชพ เช•เชฆเชจเซ€ เชนเชคเซ€! เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• "เชธเซเชฒเชพเช‡เชกเชถเซ‹" เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชซเซเชฐเซ‡เชฎเชฌเชซเชฐเชจเชพ เช•เชฆเชฎเชพเช‚ เชฎเชพเชฎเซ‚เชฒเซ€ เช˜เชŸเชพเชกเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ 2-เช—เชฃเซ‹ เชชเซเชฐเชตเซ‡เช—เช• เชชเซ‚เชฐเชคเซ‹ เชนเชคเซ‹. เชชเชฐเช‚เชคเซ เชฎเชพเชคเซเชฐ เชเชฎเซเชฌเซ‹เช•เซเชธ เช•เซ‹เชกเชจเซ‡ เชตเชฟเชตเชฟเชง เชเชกเชชเซ€ เชธเซเชฎเซƒเชคเชฟเช“เชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€เชจเซ‡ เช†เชตเชพ เชชเชฐเชฟเชฃเชพเชฎ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เชจ เชนเชคเซเช‚ (เชชเซเชฐเชตเซ‡เช—เช• 2 เชจ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เชฒเช—เชญเช— 1.5 เช—เชฃเซ‹ เชนเชคเซ‹).

เชคเซ‡เชจเซ‡ เชœเชพเชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชœเชฎเชพเชตเชตเซเช‚

เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ STM32F7-เชกเชฟเชธเซเช•เชตเชฐเซ€ เช›เซ‡, เชคเซ‹ เชคเชฎเซ‡ เชœเชพเชคเซ‡ เชœ Embox เชนเซ‡เช เชณ Qt เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเชฎเซ‡ เช…เชฎเชพเชฐเชพ เชชเชฐ เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เชตเชฟเช•เซ€.

เชจเชฟเชทเซเช•เชฐเซเชท

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเซ‡ Qt เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเชพ! เช•เชพเชฐเซเชฏเชจเซ€ เชœเชŸเชฟเชฒเชคเชพ, เช…เชฎเชพเชฐเชพ เชฎเชคเซ‡, เช•เช‚เชˆเช• เช…เช‚เชถเซ‡ เช…เชคเชฟเชถเชฏเซ‹เช•เซเชคเชฟเชชเซ‚เชฐเซเชฃ เช›เซ‡. เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡, เชคเชฎเชพเชฐเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐเซเชธเชจเซ€ เชตเชฟเชถเชฟเชทเซเชŸเชคเชพเช“เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชจเซ€ เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชธเชฟเชธเซเชŸเชฎเซเชธเชจเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‡ เชธเชฎเชœเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชœเชพเชฃเซ€เชคเซ€ เชนเช•เซ€เช•เชค เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เช•เชฎเซเชชเซเชฏเซเชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช…เชตเชฐเซ‹เชง เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฎเซ‡เชฎเชฐเซ€ เช›เซ‡.

เช† เชตเชฐเซเชทเซ‡ เช…เชฎเซ‡ เช‰เชคเซเชธเชตเชฎเชพเช‚ เชญเชพเช— เชฒเชˆเชถเซเช‚ เชŸเซ‡เช•เชŸเซเชฐเซ‡เชจ. เชคเซเชฏเชพเช‚ เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชœเชฃเชพเชตเซ€เชถเซเช‚ เช…เชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชชเชฐ Qt, OpenCV เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เช…เชจเซเชฏ เชธเชฟเชฆเซเชงเชฟเช“ เชฌเชคเชพเชตเซ€เชถเซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹