рд╢реБрдн рджреЛрдкрд╣рд░ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реИрдВ
Qt рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рди рдХреЗрд╡рд▓ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдмрд▓реНрдХрд┐ QtNetwork, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдСрдЯреЛрдореЗрд╢рди рдХреЗ рд▓рд┐рдП Qt (IoT рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╣рд┐рдд) рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред Qt рдЯреАрдо рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ Qt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛рдлреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рд╛рд▓ рддрдХ, рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ Qt рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдРрд╕рд╛ рдХрд╛рд░реНрдп рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ - Qt рдмрдбрд╝рд╛ рд╣реИ, MCU рдЫреЛрдЯреЗ рд╣реИрдВред
рджреВрд╕рд░реА рдУрд░, рдлрд┐рд▓рд╣рд╛рд▓ рдРрд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣реИрдВ рдЬреЛ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рдкреЗрдВрдЯрд┐рдпрдо рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИрдВред рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, Qt рдмреНрд▓реЙрдЧ рд╕рд╛рдордиреЗ рдЖрдпрд╛ рдерд╛
рдХреНрдпреВрдЯреА 4.8 рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдордмреЙрдХреНрд╕ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рдкрд░ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдореВрд╡рдмреНрд▓реЙрдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪреБрдирд╛ - рд╕реНрдкреНрд░рд┐рдВрдЧреА рдПрдиреАрдореЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред
QEMU рдкрд░ рдХреНрдпреВрдЯреА рдореВрд╡рдмреНрд▓реЙрдХ
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╣рдо рдПрдиреАрдореЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдХреЗ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдХреЗ рд╕рд╛рде Qt рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ "-qconfig рдиреНрдпреВрдирддрдо, рдЫреЛрдЯрд╛, рдордзреНрдпрдо..."ред рдпрд╣ Qt рд╕реЗ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдИ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИ - рдХреНрдпрд╛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИ / рдХреНрдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рдж, рдпрджрд┐ рд╣рдо рдХреБрдЫ рдФрд░ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрдиреНрдп рдЭрдВрдбреЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╣рдорд╛рд░рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ
Qt рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ OS рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рддрд░реАрдХрд╛ QPA (Qt рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рд╣рдордиреЗ Qt рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд░реЗрдбреАрдореЗрдб fb_base рдкреНрд▓рдЧрдЗрди рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ Linux рдХреЗ рд▓рд┐рдП QPA рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬрд┐рд╕реЗ 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;
}
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореЗрдореЛрд░реА рд╕рд╛рдЗрдЬрд╝ -рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЫрд╡рд┐ 3.5 рдПрдордмреА рд╣реЛ рдЧрдИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ STM32F746 рдХреА рдореБрдЦреНрдп рдореЗрдореЛрд░реА рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ OpenCV рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреНрдп рд▓реЗрдЦ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕ рдмреЛрд░реНрдб рдореЗрдВ рд╣реИ:
- 1 рдПрдордмреА рд░реЙрдо
- 320 рдХреЗрдмреА рд░реИрдо
- 8 рдПрдордмреА рдПрд╕рдбреАрдЖрд░рдПрдПрдо
- 16 рдПрдордмреА рдХреНрдпреВрдПрд╕рдкреАрдЖрдИ
рдЪреВрдБрдХрд┐ QSPI рд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди OpenCV рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рдВрдкреВрд░реНрдг Embox c Qt рдЫрд╡рд┐ рдХреЛ QSPI рдореЗрдВ рд▓реЛрдб рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдФрд░ рдЬрд▓реНрджреА, рдХреНрдпреВрдПрд╕рдкреАрдЖрдИ рд╕реЗ рд╕рдм рдХреБрдЫ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╣реА рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛! рд▓реЗрдХрд┐рди рдУрдкрдирд╕реАрд╡реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рдкрд╣рд▓реЗ рд╣рдо рдЫрд╡рд┐ рдХреЛ QSPI рдкрд░ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕реЗ SDRAM рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред SDRAM рд╕реЗ рдпрд╣ рдереЛрдбрд╝рд╛ рддреЗрдЬрд╝ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди QEMU рд╕реЗ рдЕрднреА рднреА рджреВрд░ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ - рдЖрдЦрд┐рд░рдХрд╛рд░, Qt рдПрдиреАрдореЗрд╢рди рдореЗрдВ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдХреБрдЫ рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреНрд╡рд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдВрджрд░
рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╡рд┐рдЪрд╛рд░ рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рдХреЛ рдПрд╕рдбреАрдЖрд░рдПрдПрдо рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдпрд╛рдо 480x272 рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 272x272 рдмрдирд╛рдпрд╛ред рд╣рдордиреЗ рд░рдВрдЧ рдХреА рдЧрд╣рд░рд╛рдИ рдХреЛ A8R8G8B8 рд╕реЗ рдШрдЯрд╛рдХрд░ R5G6B5 рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ 4 рд╕реЗ 2 рдмрд╛рдЗрдЯреНрд╕ рддрдХ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдореА рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ 272 * 272 * 2 = 147968 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред рдЗрд╕рд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреЗрдЬреА рдЖрдИ, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ, рдПрдиреАрдореЗрд╢рди рд▓рдЧрднрдЧ рд╕реБрдЪрд╛рд░реВ рд╣реЛ рдЧрдпрд╛ред
рдирд╡реАрдирддрдо рдЕрдиреБрдХреВрд▓рди RAM рд╕реЗ Embox рдХреЛрдб рдФрд░ SDRAM рд╕реЗ Qt рдХреЛрдб рдЪрд▓рд╛рдирд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдПрдордмреЙрдХреНрд╕ рдХреЛ рдХреНрдпреВрдЯреА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ, рд░реЛрдбрд╛рдЯрд╛, рдбреЗрдЯрд╛ рдФрд░ рдмреАрдПрд╕рдПрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдХреНрдпреВрдПрд╕рдкреАрдЖрдИ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
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 рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ, рд╣рдореЗрдВ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рддреНрд╡рд░рдг рднреА рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдиреАрдореЗрд╢рди рдХрд╛рдлреА рд╕рд╣рдЬ рд╣реЛ рдЧрдпрд╛:
рдЕрдВрдд рдореЗрдВ, рд▓реЗрдЦ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдПрдордмреЙрдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрдпреВрдЯреА рдореВрд╡рдмреНрд▓реЙрдХ рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдореЗрдВ рдлреНрд░реЗрдордмрдлрд░ рдХреЗ рд╕рд╛рде рдХреНрдпреВрдПрд╕рдкреАрдЖрдИ рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдзрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдлреНрд░реЗрдордмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдереА! рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдкреНрд░рд╛рд░рдВрднрд┐рдХ "рд╕реНрд▓рд╛рдЗрдб рд╢реЛ" рдкрд░ рдХрд╛рдмреВ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдорд╛рдореВрд▓реА рдХрдореА рдХреЗ рдХрд╛рд░рдг 2 рдЧреБрдирд╛ рддреНрд╡рд░рдг рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдордмреЙрдХреНрд╕ рдХреЛрдб рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддреЗрдЬрд╝ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рдРрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ (рддреНрд╡рд░рдг 2 рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд▓рдЧрднрдЧ 1.5 рдЧреБрдирд╛ рдерд╛)ред
рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХреИрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБ
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ STM32F7-рдбрд┐рд╕реНрдХрд╡рд░реА рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ Embox рдХреЗ рдЕрдВрддрд░реНрдЧрдд Qt рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо Qt рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ! рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рдХрд╛рд░реНрдп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреБрдЫ рд╣рдж рддрдХ рдЕрддрд┐рд░рдВрдЬрд┐рдд рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреБрдХреВрд▓рди рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рддрдереНрдп рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╛рдзрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореЗрдореЛрд░реА рд╣реИред
рдЗрд╕ рд╡рд░реНрд╖ рд╣рдо рдЙрддреНрд╕рд╡ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗ
рд╕реНрд░реЛрдд: www.habr.com