ΠΠΎΠ±ΡΡ Π΄Π΅Π½! ΠΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π²ΠΈ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° Π½Π΅Π³ΠΎ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ Π±ΡΡ
ΠΌΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π»ΠΈ ΠΊΠ°ΠΊ ΡΡΠΏΡΡ
ΠΌΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ .
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 Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° Π°Π½ΠΈΠΌΠ°ΡΠΈΡΡΠ°. ΠΠ° ΡΠ΅Π»ΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΎΠΏΡΠΈΡ β-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, ΡΠ΅ ΠΎΠΊΠ°Π·Π°, ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠ²ΡΡΠ΄Π΅ Π±Π°Π²Π½ΠΎ.

ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ΡΠΈΡ
ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ - ΠΏΡΡΠ²ΠΎ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ°Π·Π° Π² QSPI, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ Π² SDRAM ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΎΡΡΠ°ΠΌ. ΠΡ SDRAM ΡΡΠ°Π½Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, Π½ΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ Π΄Π°Π»Π΅Ρ ΠΎΡ QEMU.

Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΠΈΠ΄Π΅Ρ Π±Π΅ΡΠ΅ Π΄Π° Π²ΠΊΠ»ΡΡΠΈΠΌ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ - Π½Π°Π»ΠΈ 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. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΡΠ°Π²Π° ΡΠΎΠ²Π° Π½Π° Π½Π°ΡΠΈΡ .
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Qt! Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°, ΡΠΏΠΎΡΠ΅Π΄ Π½Π°Ρ, Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠ΅ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π°. ΠΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ. Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΠΎΡΠ°Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈΡ ΡΠ°ΠΊΡ, ΡΠ΅ Π½Π°ΠΉ-ΡΡΡΠ½ΠΎΡΠΎ ΠΌΡΡΡΠΎ Π² ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ Π΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΡΡ, Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
Π’Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ΅ ΡΡΠ°ΡΡΠ²Π°ΠΌΠ΅ Π½Π° ΡΠ΅ΡΡΠΈΠ²Π°Π»Π° . Π’Π°ΠΌ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Qt, OpenCV Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅ ΠΈ Π½Π°ΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
