Qt-แƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒ STM32-แƒ–แƒ”

Qt-แƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒ STM32-แƒ–แƒ”แฒกแƒแƒฆแƒแƒ›แƒ แƒ›แƒจแƒ•แƒ˜แƒ“แƒแƒ‘แƒ˜แƒกแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒ•แƒแƒ แƒ— Embox แƒ’แƒแƒฃแƒจแƒ•แƒ Qt STM32F7-Discovery-แƒ–แƒ” แƒ“แƒ แƒ›แƒกแƒฃแƒ แƒก แƒแƒ›แƒแƒ–แƒ” แƒกแƒแƒฃแƒ‘แƒแƒ แƒ˜. แƒแƒ“แƒ แƒ” แƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ•แƒฃแƒ—แƒฎแƒแƒ แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ— แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ OpenCV.

Qt แƒแƒ แƒ˜แƒก แƒ™แƒ แƒแƒก-แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒฃแƒšแƒ˜ แƒฉแƒแƒ แƒฉแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒฃแƒš แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ˜แƒกแƒ”แƒ— แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ QtNetwork, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜, Qt แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก, IoT แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก) แƒ“แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒกแƒฎแƒ•แƒ. Qt แƒ’แƒฃแƒœแƒ“แƒ˜ แƒžแƒ แƒแƒแƒฅแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ Qt-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜แƒ. แƒ—แƒฃแƒ›แƒชแƒ, แƒ‘แƒแƒšแƒ แƒ“แƒ แƒแƒ›แƒ“แƒ” แƒชแƒแƒขแƒแƒก แƒ—แƒฃ แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ“แƒ Qt แƒ›แƒ˜แƒ™แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒแƒ–แƒ”, แƒแƒšแƒ‘แƒแƒ— แƒ˜แƒ›แƒ˜แƒขแƒแƒ›, แƒ แƒแƒ› แƒแƒกแƒ”แƒ—แƒ˜ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒก - Qt แƒ“แƒ˜แƒ“แƒ˜แƒ, MCU - แƒžแƒแƒขแƒแƒ แƒ.

แƒ›แƒ”แƒแƒ แƒ”แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ™แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ›แƒฃแƒšแƒขแƒ˜แƒ›แƒ”แƒ“แƒ˜แƒแƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒžแƒ”แƒœแƒขแƒ˜แƒฃแƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—. แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ Qt แƒ‘แƒšแƒแƒ’แƒ˜ แƒžแƒแƒกแƒขแƒ˜. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ›แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒ”แƒก Qt แƒžแƒแƒ แƒขแƒ˜ RTEMS OS-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒฃแƒจแƒ•แƒ”แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ แƒ•แƒ˜แƒฏแƒ”แƒขแƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒแƒคแƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก stm32f7. แƒ”แƒก แƒ’แƒ•แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ“แƒ. แƒจแƒ”แƒกแƒแƒ›แƒฉแƒœแƒ”แƒ•แƒ˜ แƒ˜แƒงแƒ แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒฌแƒ”แƒ แƒ”แƒœ แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ› Qt แƒœแƒ”แƒšแƒ˜แƒ STM32F7-Discovery-แƒ–แƒ”. แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ“แƒ, แƒจแƒ”แƒ’แƒ•แƒ”แƒซแƒšแƒ แƒ—แƒฃ แƒแƒ แƒ Qt-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ Embox-แƒจแƒ˜ แƒ“แƒ แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ•แƒ˜แƒฏแƒ”แƒขแƒ˜แƒก แƒ“แƒแƒฎแƒแƒขแƒ•แƒ, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒแƒœแƒ˜แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ.

Qt 4.8 แƒฃแƒ™แƒ•แƒ” แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒแƒœแƒ˜แƒ แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Embox-แƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒชแƒ“แƒ”แƒšแƒแƒ“. แƒฉแƒ•แƒ”แƒœ แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— moveblocks แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ - แƒ’แƒแƒ–แƒแƒคแƒฎแƒฃแƒšแƒ–แƒ” แƒแƒœแƒ˜แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜.

Qt แƒ‘แƒšแƒแƒ™แƒแƒ•แƒก QEMU-แƒ–แƒ”Qt-แƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒ STM32-แƒ–แƒ”

แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒ— Qt-แƒก, แƒ—แƒฃ แƒ”แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒแƒœแƒ˜แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒกแƒแƒญแƒ”แƒ แƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒ—. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ "-qconfig แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜, แƒžแƒแƒขแƒแƒ แƒ, แƒกแƒแƒจแƒฃแƒแƒšแƒ...". แƒ˜แƒก แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒก Qt-แƒ“แƒแƒœ แƒ‘แƒ”แƒ•แƒ  แƒ›แƒแƒ™แƒ แƒแƒกแƒ—แƒแƒœ - แƒ แƒ แƒฃแƒœแƒ“แƒ แƒฉแƒแƒ แƒ—แƒแƒ— / แƒ แƒ แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ—. แƒแƒ› แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒกแƒฎแƒ•แƒ แƒ“แƒ แƒแƒจแƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ—แƒฃ แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒกแƒฎแƒ•แƒ แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ. แƒแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ.

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› Qt-แƒ› แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— OS แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒ˜แƒก แƒคแƒ”แƒœแƒ. แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ’แƒ–แƒแƒ QPA (Qt Platform Abstraction) แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ. แƒฉแƒ•แƒ”แƒœ แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒแƒ“ แƒแƒ•แƒ˜แƒฆแƒ”แƒ— Qt-แƒจแƒ˜ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒ›แƒ–แƒ fb_base แƒ›แƒแƒ“แƒฃแƒšแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก QPA Linux-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒแƒ แƒ˜แƒก แƒžแƒแƒขแƒแƒ แƒ แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— emboxfb, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช Qt-แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก 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 (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 แƒ›แƒ‘, แƒ แƒแƒช, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒแƒ  แƒฏแƒ“แƒ”แƒ‘แƒ STM32F746-แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ  แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜. แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒฎแƒ•แƒ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ OpenCV-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒแƒ› แƒ“แƒแƒคแƒแƒก แƒแƒฅแƒ•แƒก:

  • 1 แƒ›แƒ‘ ROM
  • 320 KB แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ
  • 8 MB SDRAM
  • 16 MB QSPI

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ QSPI-แƒ“แƒแƒœ แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒ”แƒ›แƒแƒขแƒ OpenCV-แƒก, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒ›แƒ—แƒ”แƒšแƒ˜ Embox c Qt แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก QSPI-แƒจแƒ˜ แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ—. แƒ“แƒ แƒ แƒ, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒ“แƒแƒ˜แƒฌแƒงแƒ QSPI-แƒ“แƒแƒœ! แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ’แƒแƒ แƒช OpenCV-แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ› แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒœแƒ”แƒšแƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก.

Qt-แƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒ STM32-แƒ–แƒ”

แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒแƒกแƒ” แƒ’แƒแƒ’แƒ•แƒ”แƒ™แƒ”แƒ—แƒ”แƒ‘แƒ˜แƒœแƒ - แƒฏแƒ”แƒ  แƒกแƒฃแƒ แƒแƒ—แƒก แƒ•แƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ— QSPI-แƒจแƒ˜, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒ— SDRAM-แƒจแƒ˜ แƒ“แƒ แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒ˜แƒฅแƒ˜แƒ“แƒแƒœ. SDRAM-แƒ“แƒแƒœ แƒชแƒแƒขแƒ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ’แƒแƒฎแƒ“แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› QEMU-แƒกแƒ’แƒแƒœ แƒ›แƒแƒ˜แƒœแƒช แƒจแƒแƒ แƒก.

Qt-แƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒ STM32-แƒ–แƒ”

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒฉแƒœแƒ“แƒ แƒ˜แƒ“แƒ”แƒ แƒ›แƒชแƒฃแƒ แƒแƒ•แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒ˜แƒก - แƒ‘แƒแƒšแƒแƒก แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, Qt แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒแƒœแƒ˜แƒ›แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒ™แƒ•แƒแƒ“แƒ แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒแƒ แƒ“แƒ˜แƒœแƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒก. แƒฉแƒ•แƒ”แƒœ แƒ•แƒชแƒแƒ“แƒ”แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅ แƒ•แƒ”แƒ  แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ, แƒ—แƒฃแƒ›แƒชแƒ แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ›แƒฃแƒฎแƒšแƒ˜ Qt-แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ›แƒ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ”แƒก, แƒ แƒแƒ› FPU แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ–แƒ แƒ“แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”แƒก แƒกแƒ”แƒœแƒกแƒแƒ แƒฃแƒš แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” "แƒแƒœแƒ˜แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒขแƒแƒœแƒแƒ“". แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒชแƒฃแƒ แƒแƒ•แƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒแƒซแƒ แƒแƒ• แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒจแƒ˜ แƒ“แƒ แƒ”แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ–แƒ”.

แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒ˜แƒ“แƒ”แƒ แƒ˜แƒงแƒ แƒคแƒ แƒ”แƒ˜แƒ›แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ SDRAM-แƒ“แƒแƒœ แƒจแƒ˜แƒ“แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒ–แƒแƒ›แƒ”แƒ‘แƒ˜ แƒแƒ แƒ 480x272, แƒแƒ แƒแƒ›แƒ”แƒ“ 272x272. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ•แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ— แƒคแƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒฆแƒ แƒ›แƒ” A8R8G8B8-แƒ“แƒแƒœ R5G6B5-แƒ›แƒ“แƒ”, แƒ แƒ˜แƒ—แƒแƒช แƒจแƒ”แƒ•แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ— แƒ”แƒ แƒ—แƒ˜ แƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ–แƒแƒ›แƒ 4-แƒ“แƒแƒœ 2 แƒ‘แƒแƒ˜แƒขแƒแƒ›แƒ“แƒ”. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒ แƒ”แƒ˜แƒ›แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒแƒ 272 * 272 * 2 = 147968 แƒ‘แƒแƒ˜แƒขแƒ˜. แƒแƒ›แƒแƒœ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒชแƒ, แƒแƒšแƒ‘แƒแƒ— แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒจแƒ”แƒกแƒแƒ›แƒฉแƒœแƒ”แƒ•แƒ˜ แƒ˜แƒงแƒ, แƒ แƒแƒ› แƒแƒœแƒ˜แƒ›แƒแƒชแƒ˜แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒ’แƒšแƒฃแƒ•แƒ˜ แƒ’แƒแƒฎแƒ“แƒ.

แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ˜แƒงแƒ Embox แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ RAM-แƒ“แƒแƒœ แƒ“แƒ Qt แƒ™แƒแƒ“แƒ˜ SDRAM-แƒ“แƒแƒœ. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒฏแƒ”แƒ , แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒ›แƒ”แƒ‘แƒ , แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ— Embox-แƒก Qt-แƒ—แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒก, rodata-แƒก, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ“แƒ 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 moveblocks แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก QSPI-แƒ“แƒแƒœ, SDRAM-แƒ˜แƒก แƒคแƒ แƒ”แƒ˜แƒ›แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ—, แƒ“แƒ แƒ‘แƒแƒ—แƒšแƒ˜ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒงแƒ แƒคแƒ แƒ”แƒ˜แƒ›แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒ! แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ โ€žแƒกแƒšแƒแƒ˜แƒ“แƒจแƒแƒฃแƒกโ€œ แƒ“แƒแƒกแƒแƒซแƒšแƒ”แƒ•แƒแƒ“ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒงแƒ 2-แƒฏแƒ”แƒ แƒแƒ“แƒ˜ แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ แƒคแƒ แƒ”แƒ˜แƒ›แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒก แƒ‘แƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒกแƒ”แƒ—แƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒงแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ Embox แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒกแƒฌแƒ แƒแƒค แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒ–แƒ” แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ˜แƒ— (แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ แƒ˜แƒงแƒ แƒแƒ แƒ 2, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 1.5-แƒฏแƒ”แƒ ).

แƒ แƒแƒ’แƒแƒ  แƒกแƒชแƒแƒ“แƒแƒ— แƒ˜แƒ’แƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— STM32F7-Discovery, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— Qt Embox-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒ แƒแƒ’แƒแƒ  แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ”แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒ˜แƒขแƒ–แƒ” wiki.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ— Qt! แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒ–แƒ แƒ˜แƒ—, แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒฌแƒ˜แƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒญแƒแƒ แƒ‘แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. แƒ‘แƒฃแƒœแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜แƒ, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒ แƒ“แƒ แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ. แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒชแƒœแƒแƒ‘แƒ˜แƒš แƒคแƒแƒฅแƒขแƒ–แƒ”, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ— แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ แƒ‘แƒแƒ แƒ˜แƒ”แƒ แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ.

แƒฌแƒ”แƒšแƒก แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒแƒ‘แƒแƒก แƒคแƒ”แƒกแƒขแƒ˜แƒ•แƒแƒšแƒจแƒ˜ TechTrain. แƒ˜แƒฅ แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ— แƒ“แƒ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— Qt, OpenCV แƒ›แƒ˜แƒ™แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒฎแƒ•แƒ แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ”แƒ‘แƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ