Qt เจจเฉ‚เฉฐ STM32 'เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ

Qt เจจเฉ‚เฉฐ STM32 'เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพเจจเจฎเจธเจ•เจพเจฐ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจนเจพเจ‚ เจเจฎเจฌเจพเจ•เจธ Qt เจจเฉ‚เฉฐ STM32F7-เจกเจฟเจธเจ•เจตเจฐเฉ€ 'เจคเฉ‡ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพเฅค เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฆเฉฑเจธเจฟเจ† เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ•เจพเจฎเจฏเจพเจฌ เจนเฉ‹เจ เจ“เจชเจจเจธเฉ€เจตเฉ€.

Qt เจ‡เฉฑเจ• เจ•เจฐเจพเจธ-เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจจเจพ เจธเจฟเจฐเจซเจผ เจ—เฉเจฐเจพเจซเจฟเจ•เจฒ เจนเจฟเฉฑเจธเฉ‡ เจธเจผเจพเจฎเจฒ เจนเจจ, เจธเจ—เฉ‹เจ‚ QtNetwork, เจกเจพเจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ•เจฒเจพเจธเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ, เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจฒเจˆ Qt (IoT เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจธเจฎเฉ‡เจค) เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจ•เฉเจ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค Qt เจŸเฉ€เจฎ เจเจฎเจฌเฉˆเจกเจก เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš Qt เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจธเจฐเจ—เจฐเจฎ เจฐเจนเฉ€ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจ•เจพเจซเจผเฉ€ เจธเฉฐเจฐเจšเจจเจพเจฏเฉ‹เจ— เจนเจจเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš, เจ•เฉเจ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‡ Qt เจจเฉ‚เฉฐ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐเจธ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเจฟเจ†, เจธเจผเจพเจ‡เจฆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจœเจฟเจนเจพ เจ•เฉฐเจฎ เจฎเฉเจธเจผเจ•เจฒ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ - Qt เจตเฉฑเจกเจพ เจนเฉˆ, MCU เจ›เฉ‹เจŸเฉ‡ เจนเจจเฅค

เจฆเฉ‚เจœเฉ‡ เจชเจพเจธเฉ‡, เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฎเจฒเจŸเฉ€เจฎเฉ€เจกเฉ€เจ† เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจนเจจ เจ…เจคเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจชเฉ‡เจ‚เจŸเจฟเจ…เจฎ เจคเฉ‹เจ‚ เจ‰เฉฑเจคเจฎ เจนเจจเฅค เจฒเจ—เจญเจ— เจ‡เฉฑเจ• เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚, Qt เจฌเจฒเฉŒเจ— เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† เจธเฉ€ เจชเฉ‹เจธเจŸ. เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ RTEMS OS เจฒเจˆ Qt เจฆเจพ เจ‡เฉฑเจ• เจชเฉ‹เจฐเจŸ เจฌเจฃเจพเจ‡เจ†, เจ…เจคเฉ‡ stm32f7 เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจ•เจˆ เจฌเฉ‹เจฐเจกเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจœเฉ‡เจŸเจธ เจจเจพเจฒ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฒเจพเจ‚เจš เจ•เฉ€เจคเฉ€เจ†เจ‚เฅค เจ‡เจน เจธเจพเจกเฉ€ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจธเฉ€. เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจธเฉ€, เจ…เจคเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ–เฉเจฆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจฒเจฟเจ–เจฆเฉ‡ เจนเจจ, เจ•เจฟ Qt STM32F7-เจกเจฟเจธเจ•เจตเจฐเฉ€ 'เจคเฉ‡ เจนเฉŒเจฒเฉ€ เจนเฉˆ. เจ…เจธเฉ€เจ‚ เจธเฉ‹เจš เจฐเจนเฉ‡ เจธเฉ€ เจ•เจฟ เจ•เฉ€ เจ…เจธเฉ€เจ‚ Embox เจฆเฉ‡ เจ…เจงเฉ€เจจ Qt เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจจเจพ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจตเจฟเจœเฉ‡เจŸ เจ–เจฟเฉฑเจš เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจชเจฐ เจ‡เฉฑเจ• เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

Qt 4.8 เจจเฉ‚เฉฐ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ Embox เจตเจฟเฉฑเจš เจชเฉ‹เจฐเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ 'เจคเฉ‡ เจ…เจœเจผเจฎเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจฎเฉ‚เจตเจฌเจฒเฉŒเจ•เจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจšเฉเจฃเจฟเจ† - เจธเจชเฉเจฐเจฟเฉฐเจ—เฉ€ เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃเฅค

QEMU 'เจคเฉ‡ Qt เจฎเฉ‚เจตเจฌเจฒเฉŒเจ•เจธQt เจจเฉ‚เฉฐ STM32 'เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ

เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ เจฆเฉ‡ เจธเจฎเจฐเจฅเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจญเจพเจ—เจพเจ‚ เจฆเฉ‡ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเจฎเฉ‚เจน เจฆเฉ‡ เจจเจพเจฒ, เจœเฉ‡เจ•เจฐ เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡ เจคเจพเจ‚ Qt เจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจนเฉˆ โ€œ-qconfig minimal,small,medium...โ€เฅค เจ‡เจน Qt เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเฉˆเจ•เจฐเฉ‹ เจจเจพเจฒ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ - เจ•เฉ€ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจเจพ เจนเฉˆ / เจ•เฉ€ เจ…เจฏเฉ‹เจ— เจ•เจฐเจจเจพ เจนเฉˆ. เจ‡เจธ เจตเจฟเจ•เจฒเจช เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจ…เจฏเฉ‹เจ— เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจซเจฒเฉˆเจ— เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เฉฑเจฅเฉ‡ เจธเจพเจกเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆ เจธเฉฐเจฐเจšเจจเจพ.

Qt เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• OS เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจชเจฐเจค เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ QPA (Qt เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ) เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ Qt เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจคเจฟเจ†เจฐ-เจ•เฉ€เจคเฉ€ fb_base เจชเจฒเฉฑเจ—เจ‡เจจ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ…เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจฒเจฟเจ†, เจœเจฟเจธ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจฒเจˆ QPA เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจจเจคเฉ€เจœเจพ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจชเจฒเฉฑเจ—เจ‡เจจ เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ emboxfb เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจเจฎเจฌเจพเจ•เจธ เจฆเฉ‡ เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจจเจพเจฒ 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 MB ROM
  • 320 KB เจฐเฉˆเจฎ
  • 8 MB SDRAM
  • 16 MB QSPI

เจ•เจฟเจ‰เจ‚เจ•เจฟ QSPI เจคเฉ‹เจ‚ เจ•เฉ‹เจก เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ OpenCV เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจ…เจธเฉ€เจ‚ QSPI เจตเจฟเฉฑเจš เจชเฉ‚เจฐเฉ‡ Embox c Qt เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจ•เฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจœเจฒเจฆเฉ€, เจธเจญ เจ•เฉเจ QSPI เจคเฉ‹เจ‚ เจฒเจ—เจญเจ— เจคเฉเจฐเฉฐเจค เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ†! เจชเจฐ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ“เจชเจจเจธเฉ€เจตเฉ€ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ เจ‡เจน เจฌเจนเฉเจค เจนเฉŒเจฒเฉ€ เจนเฉŒเจฒเฉ€ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ.

Qt เจจเฉ‚เฉฐ STM32 'เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ

เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ - เจชเจนเจฟเจฒเจพเจ‚ เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ QSPI เจตเจฟเฉฑเจš เจ•เจพเจชเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจซเจฟเจฐ เจ‡เจธเจจเฉ‚เฉฐ SDRAM เจตเจฟเฉฑเจš เจฒเฉ‹เจก เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‹เจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค SDRAM เจคเฉ‹เจ‚ เจ‡เจน เจฅเฉ‹เฉœเจพ เจคเฉ‡เจœเจผ เจนเฉ‹ เจ—เจฟเจ†, เจชเจฐ เจ…เจœเฉ‡ เจตเฉ€ QEMU เจคเฉ‹เจ‚ เจฌเจนเฉเจค เจฆเฉ‚เจฐ เจนเฉˆเฅค

Qt เจจเฉ‚เฉฐ STM32 'เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ

เจ…เฉฑเจ—เฉ‡, เจ‡เฉฑเจ• เจซเจฒเฉ‹เจŸเจฟเฉฐเจ— เจชเฉเจ†เจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจšเจพเจฐ เจธเฉ€ - เจ†เจ–เจฐเจ•เจพเจฐ, Qt เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจตเจฐเจ—เจพเจ‚ เจฆเฉ‡ เจ•เฉ‹เจ†เจฐเจกเฉ€เจจเฉ‡เจŸเจธ เจฆเฉ€ เจ•เฉเจ เจ—เจฃเจจเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€, เจชเจฐ เจ‡เฉฑเจฅเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เฉ‹เจˆ เจชเฉเจฐเจคเฉฑเจ– เจชเฉเจฐเจตเฉ‡เจ— เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเจฟเจ†, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจตเจฟเฉฑเจš เจฒเฉ‡เจ– Qt เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ เจฆเจพเจ…เจตเจพ เจ•เฉ€เจคเจพ เจ•เจฟ FPU เจŸเฉฑเจšเจธเจ•เฉเจฐเฉ€เจจ 'เจคเฉ‡ "เจกเจฐเฉˆเจ—เจฟเฉฐเจ— เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ" เจฒเจˆ เจ—เจคเฉ€ เจตเจฟเฉฑเจš เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจตเจพเจงเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจฎเฉ‚เจตเจฌเจฒเฉŒเจ•เจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจซเจฒเฉ‹เจŸเจฟเฉฐเจ— เจชเฉเจ†เจ‡เฉฐเจŸ เจ•เฉˆเจฒเจ•เฉ‚เจฒเฉ‡เจธเจผเจจ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจน เจ–เจพเจธ เจ‰เจฆเจพเจนเจฐเจจ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจตเจฟเจšเจพเจฐ เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจจเฉ‚เฉฐ SDRAM เจคเฉ‹เจ‚ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจฒเจฟเจœเจพเจฃเจพ เจธเฉ€เฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจธเจ•เฉเจฐเฉ€เจจ เจฆเฉ‡ เจฎเจพเจช 480x272 เจจเจนเฉ€เจ‚, เจธเจ—เฉ‹เจ‚ 272x272 เจฌเจฃเจพเจ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจฐเฉฐเจ— เจฆเฉ€ เจกเฉ‚เฉฐเจ˜เจพเจˆ เจจเฉ‚เฉฐ A8R8G8B8 เจคเฉ‹เจ‚ R5G6B5 เจคเฉฑเจ• เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ‡เฉฑเจ• เจชเจฟเจ•เจธเจฒ เจฆเจพ เจ†เจ•เจพเจฐ 4 เจคเฉ‹เจ‚ 2 เจฌเจพเจˆเจŸ เจคเฉฑเจ• เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจฆเจพ เจ†เจ•เจพเจฐ 272 * 272 * 2 = 147968 เจฌเจพเจˆเจŸ เจนเฉˆเฅค เจ‡เจธ เจจเฉ‡ เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจชเฉเจฐเจตเฉ‡เจ— เจฆเจฟเฉฑเจคเจพ, เจธเจผเจพเจ‡เจฆ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ—, เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ เจฒเจ—เจญเจ— เจจเจฟเจฐเจตเจฟเจ˜เจจ เจฌเจฃ เจ—เจˆเฅค

เจจเจตเฉ€เจจเจคเจฎ เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ RAM เจคเฉ‹เจ‚ Embox เจ•เฉ‹เจก เจ…เจคเฉ‡ SDRAM เจคเฉ‹เจ‚ Qt เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจธเฉ€เฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ†เจฎ เจตเจพเจ‚เจ—, เจธเจฅเจฟเจฐ เจคเฉŒเจฐ 'เจคเฉ‡ Embox เจจเฉ‚เฉฐ 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 เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸ เจ•เจฐเจ•เฉ‡, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจชเฉเจฐเจตเฉ‡เจ— เจตเฉ€ เจฎเจฟเจฒเจฟเจ† เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ เจ•เจพเจซเจผเฉ€ เจจเจฟเจฐเจตเจฟเจ˜เจจ เจจเจฟเจ•เจฒเจฟเจ†:


เจฌเจนเฉเจค เจนเฉ€ เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– Embox เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ Qt เจฎเฉ‚เจตเจฌเจฒเฉŒเจ•เจธ SDRAM เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจฆเฉ‡ เจจเจพเจฒ QSPI เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฐเฉเจ•เจพเจตเจŸ เจฌเจฟเจฒเจ•เฉเจฒ เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจฆเจพ เจ†เจ•เจพเจฐ เจธเฉ€! เจœเจผเจพเจนเจฐเจพ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ "เจธเจฒเจพเจˆเจกเจธเจผเฉ‹เจ…" เจจเฉ‚เฉฐ เจฆเฉ‚เจฐ เจ•เจฐเจจ เจฒเจˆ, เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจตเจฟเฉฑเจš เจฎเจพเจฎเฉ‚เจฒเฉ€ เจ•เจฎเฉ€ เจฆเฉ‡ เจ•เจพเจฐเจจ เจ‡เฉฑเจ• 2-เจ—เฉเจฃเจพ เจชเฉเจฐเจตเฉ‡เจ— เจ•เจพเจซเจผเฉ€ เจธเฉ€เฅค เจชเจฐ เจธเจฟเจฐเจซ เจเจฎเจฌเจพเจ•เจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจคเฉ‡เจœเจผ เจฏเจพเจฆเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เจฐเจ•เฉ‡ เจ…เจœเจฟเจนเจพ เจจเจคเฉ€เจœเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจจเจนเฉ€เจ‚ เจธเฉ€ (เจชเฉเจฐเจตเฉ‡เจ— 2 เจจเจนเฉ€เจ‚ เจธเฉ€, เจชเจฐ เจฒเจ—เจญเจ— 1.5 เจ—เฉเจฃเจพ เจธเฉ€)เฅค

เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เจฟเจตเฉ‡เจ‚ เจ…เจœเจผเจฎเจพเจ‰เจฃเจพ เจนเฉˆ

เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ STM32F7-เจกเจฟเจธเจ•เจตเจฐเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ Embox เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ Qt เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจคเฉเจธเฉ€เจ‚ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ‡เจน เจธเจพเจกเฉ‡ 'เจคเฉ‡ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจตเจฟเจ•เฉ€.

เจธเจฟเฉฑเจŸเจพ

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ…เจธเฉ€เจ‚ Qt เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ•เจพเจฎเจฏเจพเจฌ เจฐเจนเฉ‡! เจ•เฉฐเจฎ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ, เจธเจพเจกเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจ•เฉเจ เจนเฉฑเจฆ เจคเฉฑเจ• เจ…เจคเจฟเจ•เจฅเจจเฉ€ เจนเฉˆ. เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจฆเฉ‡ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจธเจฎเจเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจจเจคเฉ€เจœเฉ‡ เจœเจพเจฃเฉ‡-เจชเจ›เจพเจฃเฉ‡ เจคเฉฑเจฅ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ•เจฟ เจ‡เฉฑเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจฐเฉเจ•เจพเจตเจŸ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจนเฉˆเฅค

เจ‡เจธ เจธเจพเจฒ เจ…เจธเฉ€เจ‚ เจคเจฟเจ‰เจนเจพเจฐ เจตเจฟเฉฑเจš เจนเจฟเฉฑเจธเจพ เจฒเจตเจพเจ‚เจ—เฉ‡ TechTrain. เจ‰เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจคเจพเจฐ เจตเจฟเฉฑเจš เจฆเฉฑเจธเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ 'เจคเฉ‡ Qt, OpenCV เจ…เจคเฉ‡ เจธเจพเจกเฉ€เจ†เจ‚ เจนเฉ‹เจฐ เจชเฉเจฐเจพเจชเจคเฉ€เจ†เจ‚ เจฆเจฟเจ–เจพเจตเจพเจ‚เจ—เฉ‡เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹