ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ! ΠΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅
Qt β ΡΡΠΎ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½ΠΎ ΠΈ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ ΠΊΠ°ΠΊ QtNetwork, Π½Π°Π±ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
, Qt for Automation (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ IoT) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Qt Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Qt Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Ρ
ΠΎΡΠΎΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΈΡ
ΠΏΠΎΡ, ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΡΡ ΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Qt Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ β Qt Π±ΠΎΠ»ΡΡΠΎΠ΅, MCU ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΈ ΠΏΡΠ΅Π²ΠΎΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ²ΡΠ΅ Pentium-Ρ. ΠΠΊΠΎΠ»ΠΎ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ Π² Π±Π»ΠΎΠ³Π΅ Qt ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ
Π Embox ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ Qt 4.8, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½Π° Π½Π΅ΠΌ. ΠΡΠ±ΡΠ°Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ moveblocks β ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΡΠΆΠΈΠ½ΠΈΡΡΠΎΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ.
Qt moveblocks Π½Π° QEMU
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Qt ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠΈΡ β-qconfig minimal,small,medium …β. ΠΠ½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΠ· ΡΠΎΡΡΠ°Π²Π° Qt c ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² β ΡΡΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ / ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π°Π³ΠΈ, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΠΌ Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°ΡΠ΅ΠΉ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Qt Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΠ‘. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ QPA (Qt Platform Abstraction). ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ Π²Π·ΡΠ»ΠΈ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ fb_base Π² ΡΠΎΡΡΠ°Π²Π΅ Qt, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ QPA Π΄Π»Ρ ΠΠΈΠ½ΡΠΊΡ. Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ emboxfb, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Qt ΡΡΠ΅ΠΉΠΌΠ±ΡΡΠ΅Ρ Emboxβa, Π° Π΄Π°Π»ΡΡΠ΅ ΠΎΠ½ΠΎ ΡΠΈΡΡΠ΅Ρ ΡΡΠ΄Π° ΡΠΆΠ΅ Π±Π΅Π· ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΏΠΎΠΌΠΎΡΠΈ.
ΠΠΎΡ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π°
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 ΠΠ± RAM
- 8 ΠΠ± SDRAM
- 16 ΠΠ± QSPI
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π»Ρ OpenCV ΡΠΆΠ΅ Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ· QSPI, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π°ΡΠ°ΡΡ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π· Embox c Qt Π² QSPI ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. Π ΡΡΠ°, Π²ΡΠ΅ ΠΏΠΎΡΡΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΎΡΡ ΠΈΠ· QSPI! ΠΠΎ ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ OpenCV ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.
ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ β ΡΠ½Π°ΡΠ°Π»Π° ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π· Π² QSPI, Π·Π°ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² SDRAM ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΎΡΡΡΠ΄Π°. ΠΠ· SDRAM ΡΡΠ°Π»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅ΠΉ, Π½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ QEMU.
ΠΠ°Π»Π΅Π΅ Π±ΡΠ»Π° ΠΈΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ»Π°Π²Π°ΡΡΡΡ ΡΠΎΡΠΊΡ β Π²Π΅Π΄Ρ Qt Π΄Π΅Π»Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π² Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ. ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ, Π½ΠΎ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ, Ρ
ΠΎΡΡ Π²
Π‘Π°ΠΌΡΠΌ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΈΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΡΠ΅ΠΉΠΌΠ±ΡΡΠ΅Ρ ΠΈΠ· SDRAM Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠΊΡΠ°Π½Π° Π½Π΅ 480×272, Π° 272×272. ΠΡΠ΅ ΠΏΠΎΠ½ΠΈΠ·ΠΈΠ»ΠΈ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ²Π΅ΡΠ° Ρ A8R8G8B8 Π΄ΠΎ R5G6B5, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠΊΡΠ°ΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Ρ 4 Π΄ΠΎ 2 Π±Π°ΠΉΡ. ΠΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΉΠΌΠ±ΡΡΠ΅ΡΠ° 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βa, Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Qt moveblocks Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΈΠ· QSPI Ρ ΡΡΠ΅ΠΉΠΌΠ±ΡΡΠ΅ΡΠΎΠΌ Π² SDRAM, Π° ΡΠ·ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π±ΡΠ» ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΉΠΌΠ±ΡΡΠ΅ΡΠ°! ΠΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ βΡΠ»Π°ΠΉΠ΄ΡΠΎΡβ Ρ Π²Π°ΡΠ°Π»ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π² 2 ΡΠ°Π·Π° Π·Π° ΡΡΠ΅Ρ Π±Π°Π½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠ΅ΠΉΠΌΠ±ΡΡΠ΅ΡΠ°. Π Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΡ ΠΊΠΎΠ΄Π° Embox Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±ΡΡΡΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ (ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π»ΠΎΡΡ Π½Π΅ Π² 2, Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 1.5 ΡΠ°Π·Π°).
ΠΠ°ΠΊ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠΎΠΌΡ
ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ STM32F7-Discovery, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Qt ΠΏΠΎΠ΄ Embox ΡΠ°ΠΌΠΈ. ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π½Π°ΡΠ΅ΠΌ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΠΈΡΠΎΠ³Π΅ Π½Π°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Qt! Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°ΡΠΈ, Π½Π° Π½Π°Ρ Π²Π·Π³Π»ΡΠ΄, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π°. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΡΠ·ΠΊΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, Π° ΠΏΠ°ΠΌΡΡΡ.
Π ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ΅ΡΡΠΈΠ²Π°Π»Π΅
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com