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