āĻļā§āĻ āĻ
āĻĒāĻ°āĻžāĻšā§āĻ¨ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻāĻŋ
Qt āĻšāĻ˛ āĻāĻāĻāĻŋ āĻā§āĻ°āĻ¸-āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¯āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻ°āĻžāĻĢāĻŋāĻāĻžāĻ˛ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ āĻ¨āĻ¯āĻŧ, QtNetwork, āĻĄā§āĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ, āĻ
āĻā§āĻŽā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ Qt (IoT āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻš) āĻāĻŦāĻ āĻāĻ°āĻ āĻ
āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°ā§āĨ¤ Qt āĻāĻŋāĻŽā§āĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻāĻŽāĻŦā§āĻĄā§āĻĄ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ Qt-āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻĒā§āĻ°ā§āĻŦāĻžāĻāĻžāĻ¸ āĻĻāĻŋāĻ¯āĻŧā§āĻā§āĻ¨, āĻ¤āĻžāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻļ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°āĻ¯ā§āĻā§āĻ¯āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻ
āĻŦāĻ§āĻŋ, āĻā§āĻŦ āĻāĻŽ āĻ˛ā§āĻāĻ āĻŽāĻžāĻāĻā§āĻ°ā§āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ°ā§ Qt āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻĨāĻž āĻā§āĻŦā§āĻāĻŋāĻ˛, āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻžāĻāĻāĻŋ āĻāĻ āĻŋāĻ¨ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ - Qt āĻŦāĻĄāĻŧ, MCU āĻā§āĻāĨ¤
āĻ
āĻ¨ā§āĻ¯āĻĻāĻŋāĻā§, āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻŽāĻžāĻ˛ā§āĻāĻŋāĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŦāĻ āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ¨ā§āĻāĻŋāĻ¯āĻŧāĻžāĻŽāĻā§āĻ˛āĻŋāĻā§ āĻāĻžāĻĄāĻŧāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻŽāĻžāĻāĻā§āĻ°ā§āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻ āĻŦāĻāĻ° āĻāĻā§ Qt āĻŦā§āĻ˛āĻā§ āĻšāĻžāĻāĻŋāĻ°
Qt 4.8 āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ Embox āĻ āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻŽā§āĻāĻŦā§āĻ˛āĻāĻ¸ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ - āĻ¸ā§āĻĒā§āĻ°āĻŋāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ¨āĻŋāĻŽā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖāĨ¤
QEMU-āĻ¤ā§ Qt āĻŽā§āĻāĻŦā§āĻ˛āĻ
āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ˛ā§ āĻ
ā§āĻ¯āĻžāĻ¨āĻŋāĻŽā§āĻļāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻ¸ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ Qt āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻā§ "-qconfig minimal,small, medium..."āĨ¤ āĻāĻāĻŋāĻ¤ā§ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻ¸āĻš Qt āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§ - āĻā§ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ / āĻā§ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ā§ˇ āĻāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§āĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻŋāĻā§ āĻ
āĻā§āĻˇāĻŽ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻ¤āĻžāĻāĻž āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŋāĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ
Qt āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ OS āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻ¸ā§āĻ¤āĻ° āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ QPA (Qt Platform Abstraction) āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĨ¤ Qt-āĻāĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤-āĻ¤ā§āĻ°āĻŋ fb_base āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻžāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ QPA āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻā§āĻ āĻāĻŽāĻŦāĻā§āĻ¸āĻāĻĢāĻŦāĻŋ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻ¯āĻž āĻāĻŽāĻŦāĻā§āĻ¸ā§āĻ° āĻĢā§āĻ°ā§āĻŽāĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ Qt āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻāĻŋ āĻŦāĻžāĻāĻ°ā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻāĻā§āĨ¤
āĻāĻ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻāĻŋ
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();
}
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ redraw āĻĻā§āĻāĻ¤ā§ āĻšāĻŦā§
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 āĻāĻŽāĻŦāĻŋ āĻ°āĻŽ
- 320 KB RAM
- 8 MB SDRAM
- 16 MB QSPI
āĻ¯ā§āĻšā§āĻ¤ā§ QSPI āĻĨā§āĻā§ āĻā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ OpenCV-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž QT-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ Embox āĻāĻŽā§āĻ QSPI-āĻ¤ā§ āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻŦāĻ āĻšā§āĻ°āĻ°ā§, QSPI āĻĨā§āĻā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ! āĻāĻŋāĻ¨ā§āĻ¤ā§ OpenCV-āĻāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻŋ āĻā§āĻŦ āĻ§ā§āĻ° āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§āĨ¤
āĻ
āĻ¤āĻāĻŦ, āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ - āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻāĻŦāĻŋāĻāĻŋ QSPI āĻ¤ā§ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻ°āĻž āĻāĻāĻŋ SDRAM āĻ āĻ˛ā§āĻĄ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ āĻĨā§āĻā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻŋāĨ¤ SDRAM āĻĨā§āĻā§ āĻāĻāĻŋ āĻāĻāĻā§ āĻĻā§āĻ°ā§āĻ¤ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨āĻ QEMU āĻĨā§āĻā§ āĻ
āĻ¨ā§āĻ āĻĻā§āĻ°ā§āĨ¤
āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ¸āĻŽāĻžāĻ¨ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻāĻŋāĻ˛ - āĻ¸āĻ°ā§āĻŦā§āĻĒāĻ°āĻŋ, Qt āĻ
ā§āĻ¯āĻžāĻ¨āĻŋāĻŽā§āĻļāĻ¨ā§ āĻ¸ā§āĻā§āĻ¯āĻŧāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻŋāĻā§ āĻāĻŖāĻ¨āĻž āĻāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻāĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĻā§āĻļā§āĻ¯āĻŽāĻžāĻ¨ āĻ¤ā§āĻŦāĻ°āĻŖ āĻĒāĻžāĻāĻ¨āĻŋ, āĻ¯āĻĻāĻŋāĻ āĻāĻŋāĻ¤āĻ°ā§
āĻĢā§āĻ°ā§āĻŽāĻŦāĻžāĻĢāĻžāĻ°āĻāĻŋāĻā§ SDRAM āĻĨā§āĻā§ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻŽā§āĻŽāĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻŦāĻ˛ā§ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻĻāĻžāĻ° āĻāĻāĻžāĻ° 480x272 āĻ¨āĻ¯āĻŧ, 272x272 āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻ°āĻā§āĻ° āĻāĻā§āĻ°āĻ¤āĻž A8R8G8B8 āĻĨā§āĻā§ R5G6B5-āĻ āĻāĻŽāĻŋāĻ¯āĻŧā§āĻāĻŋ, āĻāĻāĻāĻžāĻŦā§ āĻāĻ āĻĒāĻŋāĻā§āĻ¸ā§āĻ˛ā§āĻ° āĻāĻāĻžāĻ° 4 āĻĨā§āĻā§ 2 āĻŦāĻžāĻāĻ āĻāĻŽāĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻĢā§āĻ°ā§āĻŽāĻŦāĻžāĻĢāĻžāĻ° āĻ¸āĻžāĻāĻ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ 272*272*2 = 147968 āĻŦāĻžāĻāĻāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻāĻ¤āĻŋ āĻĻāĻŋāĻ¯āĻŧā§āĻā§, āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ, āĻ ā§āĻ¯āĻžāĻ¨āĻŋāĻŽā§āĻļāĻ¨āĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻŽāĻ¸ā§āĻŖ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§āĨ¤
āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨āĻāĻŋ āĻāĻŋāĻ˛ RAM āĻĨā§āĻā§ Embox āĻā§āĻĄ āĻāĻŦāĻ SDRAM āĻĨā§āĻā§ Qt āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻžāĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽā§, āĻ¯āĻĨāĻžāĻ°ā§āĻ¤āĻŋ, āĻ¸ā§āĻĨāĻŋāĻ°āĻāĻžāĻŦā§ Qt-āĻāĻ° āĻ¸āĻžāĻĨā§ Embox āĻ˛āĻŋāĻā§āĻ āĻāĻ°āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻĒāĻžāĻ ā§āĻ¯, āĻ°ā§āĻĄāĻžāĻāĻž, āĻĄā§āĻāĻž āĻāĻŦāĻ 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-āĻāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§ āĻĻā§āĻāĻž āĻā§āĻ˛ āĻ¯ā§ QT āĻŽā§āĻāĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ SDRAM-āĻ āĻāĻāĻāĻŋ āĻĢā§āĻ°ā§āĻŽāĻŦāĻžāĻĢāĻžāĻ° āĻ¸āĻš QSPI āĻĨā§āĻā§ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻāĻžāĻ āĻāĻ°ā§, āĻāĻŦāĻ āĻŦāĻžāĻ§āĻžāĻāĻŋ āĻ āĻŋāĻ āĻĢā§āĻ°ā§āĻŽāĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ° āĻāĻŋāĻ˛! āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ "āĻ¸ā§āĻ˛āĻžāĻāĻĄāĻļā§" āĻāĻžāĻāĻŋāĻ¯āĻŧā§ āĻāĻ āĻ¤ā§, āĻĢā§āĻ°ā§āĻŽāĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻšā§āĻ°āĻžāĻ¸ā§āĻ° āĻāĻžāĻ°āĻŖā§ āĻāĻāĻāĻŋ 2-āĻā§āĻŖ āĻ¤ā§āĻŦāĻ°āĻŖ āĻ¯āĻĨā§āĻˇā§āĻ āĻāĻŋāĻ˛āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŽāĻŦāĻā§āĻ¸ āĻā§āĻĄāĻā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĻā§āĻ°ā§āĻ¤ āĻ¸ā§āĻŽā§āĻ¤āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ˛ āĻ¨āĻž (āĻ¤ā§āĻŦāĻ°āĻŖ 2 āĻ¨āĻ¯āĻŧ, āĻĒā§āĻ°āĻžāĻ¯āĻŧ 1.5 āĻā§āĻŖ)āĨ¤
āĻāĻŋāĻāĻžāĻŦā§ āĻ¨āĻŋāĻā§ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦā§āĻ¨
āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ STM32F7-Discovery āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻā§āĻ Embox āĻāĻ° āĻ
āĻ§ā§āĻ¨ā§ Qt āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻĒāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻāĻž āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŽāĻžāĻĻā§āĻ°
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž Qt āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋ! āĻāĻžāĻ¸ā§āĻā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž, āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻ¤ā§, āĻāĻŋāĻā§āĻāĻž āĻ āĻ¤āĻŋāĻ°āĻā§āĻāĻŋāĻ¤āĨ¤ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻŽāĻžāĻāĻā§āĻ°ā§āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ°ā§āĻ° āĻŦāĻŋāĻļā§āĻˇāĻ¤ā§āĻŦ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ˛āĻŋ āĻ¸ā§āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻ¸āĻ¤ā§āĻ¯ā§āĻ° āĻĻāĻŋāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ āĻ¯ā§ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻŦāĻžāĻ§āĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ° āĻ¨āĻ¯āĻŧ, āĻŽā§āĻŽāĻ°āĻŋāĨ¤
āĻ āĻŦāĻāĻ° āĻāĻŽāĻ°āĻž āĻā§āĻ¸āĻŦā§ āĻ
āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŦ
āĻāĻ¤ā§āĻ¸: www.habr.com