STM32F7-Discovery เชชเชฐ OpenCV

STM32F7-Discovery เชชเชฐ OpenCV เชนเซเช‚ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชฎเชพเช‚เชจเซ‹ เชเช• เช›เซเช‚ เชเชฎเซเชฌเซ‹เช•เซเชธ, เช…เชจเซ‡ เช† เชฒเซ‡เช–เชฎเชพเช‚ เชนเซเช‚ STM32746G เชฌเซ‹เชฐเซเชก เชชเชฐ OpenCV เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเซ‹ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ.

เชœเซ‹ เชคเชฎเซ‡ เชธเชฐเซเชš เชเชจเซเชœเชฟเชจเชฎเชพเช‚ โ€œOpenCV on STM32 เชฌเซ‹เชฐเซเชกโ€ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เชŸเชพเช‡เชช เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเชจเซ‡ STM32 เชฌเซ‹เชฐเซเชก เช…เชฅเชตเชพ เช…เชจเซเชฏ เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชชเชฐ เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เชฐเซเชšเชฟ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชฅเซ‹เชกเชพ เชฒเซ‹เช•เซ‹ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡.
เชคเซเชฏเชพเช‚ เช˜เชฃเซ€ เชตเชฟเชกเชฟเช“เช เช›เซ‡ เชœเซ‡, เชจเชพเชฎ เชฆเซเชตเชพเชฐเชพ เช…เชญเชฟเชชเซเชฐเชพเชฏ เช†เชชเชคเชพ, เชคเซ‡ เชฆเชฐเซเชถเชพเชตเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชถเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ (เชฎเซ‡เช‚ เชœเซ‹เชฏเซ‡เชฒเชพ เชคเชฎเชพเชฎ เชตเชฟเชกเชฟเช“เชเชฎเชพเช‚) STM32 เชฌเซ‹เชฐเซเชก เชชเชฐ, เช•เซ‡เชฎเซ‡เชฐเชพเชฎเชพเช‚เชฅเซ€ เชซเช•เซเชค เช›เชฌเซ€ เชชเซเชฐเชพเชชเซเชค เชฅเชˆ เชนเชคเซ€ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชฏเซเช‚ เชนเชคเซเช‚, เช…เชจเซ‡ เช‡เชฎเซ‡เชœ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซ‹เชคเซ‡ เช•เชพเช‚ เชคเซ‹ เชจเชฟเชฏเชฎเชฟเชค เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เช…เชฅเชตเชพ เชตเชงเซ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชฌเซ‹เชฐเซเชก เชชเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฐเชพเชธเซเชชเชฌเซ‡เชฐเซ€ เชชเซ€).

เชคเซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡?

เชถเซ‹เชง เช•เซเชตเซ‡เชฐเซ€เชเชจเซ€ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏเชคเชพ เช เชนเช•เซ€เช•เชค เชฆเซเชตเชพเชฐเชพ เชธเชฎเชœเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ OpenCV เช เชธเซŒเชฅเซ€ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชตเชฟเชเชจ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชตเชงเซ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชคเซ‡เชจเชพเชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เช›เซ‡, เช…เชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชชเชฐ เชกเซ‡เชธเซเช•เชŸเซ‹เชช-เชฐเซ‡เชกเซ€ เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชตเชฟเช•เชพเชธ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชนเชœเซ€ เชชเชฃ เช•เซ‹เชˆ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชคเซˆเชฏเชพเชฐ เชตเชพเชจเช—เซ€เช“ เชถเชพ เชฎเชพเชŸเซ‡ เชจเชฅเซ€?

เชจเชพเชจเชพ เชถเซ‰เชฒเซเชธ เชชเชฐ เช“เชชเชจเชธเซ€เชตเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชธเชฎเชธเซเชฏเชพ เชฌเซ‡ เชธเซเชตเชฟเชงเชพเช“เชฅเซ€ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡:

  • เชœเซ‹ เชคเชฎเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเชพ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเซ‡เชŸ เชธเชพเชฅเซ‡ เชชเชฃ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเซ‡ เช–เซ‚เชฌ เชฎเซ‹เชŸเชพ เช•เซ‹เชก (เช•เซ‡เชŸเชฒเชพเช• เชฎเซ‡เช—เชพเชฌเชพเช‡เชŸเซเชธ เชธเซ‚เชšเชจเชพเช“) เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชธเชฎเชพเชจ STM32F7Discovery (OS เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ เชชเชฃ) เชจเซ€ เชซเซเชฒเซ‡เชถ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชซเชฟเชŸ เชฅเชถเซ‡ เชจเชนเซ€เช‚.
  • เชชเซเชธเซเชคเช•เชพเชฒเชฏ เชชเซ‹เชคเซ‡ C++ เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เชฅเชพเชฏ เช›เซ‡
    • เชธเช•เชพเชฐเชพเชคเซเชฎเช• เชฐเชจเชŸเชพเช‡เชฎ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เช…เชชเชตเชพเชฆเซ‹, เชตเช—เซ‡เชฐเซ‡)
    • LibC/Posix เชฎเชพเชŸเซ‡ เชฅเซ‹เชกเซ‹ เชธเชชเซ‹เชฐเซเชŸ, เชœเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชเชฎเซเชฌเซ‡เชกเซ‡เชก เชธเชฟเชธเซเชŸเชฎเซเชธ เชฎเชพเชŸเซ‡ OS เชฎเชพเช‚ เชœเซ‹เชตเชพ เชฎเชณเซ‡ เช›เซ‡ - เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซเชฒเชธ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค STL เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ (เชตเซ‡เช•เซเชŸเชฐ, เชตเช—เซ‡เชฐเซ‡)เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

Embox เชชเชฐ เชชเซ‹เชฐเซเชŸเซ€เช‚เช—

เชนเช‚เชฎเซ‡เชถเชจเซ€ เชœเซ‡เชฎ, เช•เซ‹เชˆเชชเชฃ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‡ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชชเซ‹เชฐเซเชŸ เช•เชฐเชคเชพเช‚ เชชเชนเซ‡เชฒเชพเช‚, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เชคเซ‡เชจเซ‡ เชœเซ‡ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชฌเชจเชพเชตเซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชคเซ‡เชจเซ‡ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเซ‹ เช เชธเชพเชฐเซ‹ เชตเชฟเชšเชพเชฐ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช†เชฎเชพเช‚ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ€ - เชธเซเชฐเซ‹เชค เช•เซ‹เชก เชชเชฐ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เช—เซ€เชฅเชฌ, เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ GNU/ เชนเซ‡เช เชณ เชธเช‚เช•เชฒเชฟเชค เช›เซ‡.Linux เชจเชฟเชฏเชฎเชฟเชค cmake เชธเชพเชฅเซ‡.

เชธเชพเชฐเชพ เชธเชฎเชพเชšเชพเชฐ เช เช›เซ‡ เช•เซ‡ OpenCV เชจเซ‡ เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชธเซเชฅเชฟเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชคเชฐเซ€เช•เซ‡ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡ เชชเซ‹เชฐเซเชŸเชฟเช‚เช—เชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชธเชพเชฅเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชœเซเช“ เช•เซ‡ เชคเซ‡เช“ เช•เซ‡เชŸเชฒเซ€ เชœเช—เซเชฏเชพ เชฒเซ‡ เช›เซ‡. เชฆเชฐเซ‡เช• เชฎเซ‹เชกเซเชฏเซเชฒ เชเช• เช…เชฒเช— เชชเซเชธเซเชคเช•เชพเชฒเชฏเชฎเชพเช‚ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

> size lib/*so --totals
   text    data     bss     dec     hex filename
1945822   15431     960 1962213  1df0e5 lib/libopencv_calib3d.so
17081885     170312   25640 17277837    107a38d lib/libopencv_core.so
10928229     137640   20192 11086061     a928ed lib/libopencv_dnn.so
 842311   25680    1968  869959   d4647 lib/libopencv_features2d.so
 423660    8552     184  432396   6990c lib/libopencv_flann.so
8034733   54872    1416 8091021  7b758d lib/libopencv_gapi.so
  90741    3452     304   94497   17121 lib/libopencv_highgui.so
6338414   53152     968 6392534  618ad6 lib/libopencv_imgcodecs.so
21323564     155912  652056 22131532    151b34c lib/libopencv_imgproc.so
 724323   12176     376  736875   b3e6b lib/libopencv_ml.so
 429036    6864     464  436364   6a88c lib/libopencv_objdetect.so
6866973   50176    1064 6918213  699045 lib/libopencv_photo.so
 698531   13640     160  712331   ade8b lib/libopencv_stitching.so
 466295    6688     168  473151   7383f lib/libopencv_video.so
 315858    6972   11576  334406   51a46 lib/libopencv_videoio.so
76510375     721519  717496 77949390    4a569ce (TOTALS)

เชœเซ‡เชฎ เชคเชฎเซ‡ เช›เซ‡เชฒเซเชฒเซ€ เชฒเชพเช‡เชจเชฎเชพเช‚เชฅเซ€ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, .bss เช…เชจเซ‡ .เชกเซ‡เชŸเชพ เชตเชงเซ เชœเช—เซเชฏเชพ เชฒเซ‡เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช•เซ‹เชก 70 MiB เช•เชฐเชคเชพ เชตเชงเซ เช›เซ‡. เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เชœเซ‹ เช† เชšเซ‹เช•เซเช•เชธ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เชธเซเชฅเชฟเชฐ เชฐเซ€เชคเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เชนเซ‹เชฏ, เชคเซ‹ เช•เซ‹เชก เช“เช›เซ‹ เชฅเชˆ เชœเชถเซ‡.

เชšเชพเชฒเซ‹ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเชพ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซ‡ เชซเซ‡เช‚เช•เซ€ เชฆเซ‡เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช เชœเซ‡เชฅเซ€ เชเช• เชจเซเชฏเซ‚เชจเชคเชฎ เช‰เชฆเชพเชนเชฐเชฃ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ (เชœเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชซเช•เซเชค OpenCV เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเชถเซ‡), เชคเซ‡เชฅเซ€ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเช เช›เซ€เช cmake .. -LA เช…เชจเซ‡ เชตเชฟเช•เชฒเซเชชเซ‹เชฎเชพเช‚ เชฌเช‚เชง เชฅเชพเชฏ เชคเซ‡ เชฌเชงเซเช‚ เชฌเช‚เชง เช•เชฐเซ‹.

        -DBUILD_opencv_java_bindings_generator=OFF 
        -DBUILD_opencv_stitching=OFF 
        -DWITH_PROTOBUF=OFF 
        -DWITH_PTHREADS_PF=OFF 
        -DWITH_QUIRC=OFF 
        -DWITH_TIFF=OFF 
        -DWITH_V4L=OFF 
        -DWITH_VTK=OFF 
        -DWITH_WEBP=OFF 
        <...>

> size lib/libopencv_core.a --totals
   text    data     bss     dec     hex filename
3317069   36425   17987 3371481  3371d9 (TOTALS)

เชเช• เชคเชฐเชซ, เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซเช‚ เชฎเชพเชคเซเชฐ เชเช• เชฎเซ‹เชกเซเชฏเซเชฒ เช›เซ‡, เชฌเซ€เชœเซ€ เชคเชฐเชซ, เช† เช•เซ‹เชก เชธเชพเช‡เช เชฎเชพเชŸเซ‡ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เช“เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชตเชฟเชจเชพ เช›เซ‡ (-Os). เช•เซ‹เชกเชจเซ‹ ~3 MiB เชนเชœเซ เชชเชฃ เช˜เชฃเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเชซเชณเชคเชพเชจเซ€ เช†เชถเชพ เช†เชชเซ‡ เช›เซ‡.

เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชšเชฒเชพเชตเซ‹

เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชชเชฐ เชกเซ€เชฌเช— เช•เชฐเชตเซเช‚ เช–เซ‚เชฌ เชธเชฐเชณ เช›เซ‡, เชคเซ‡เชฅเซ€ เชชเชนเซ‡เชฒเชพ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ qemu เชชเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชเชฎเซเชฏเซเชฒเซ‡เชŸเซ‡เชก เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชคเชฐเซ€เช•เซ‡, เชฎเซ‡เช‚ เช‡เชจเซเชŸเชฟเช—เซเชฐเซ‡เชŸเชฐ / เชธเซ€เชชเซ€ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชชเซเชฐเชฅเชฎ, เชคเซ‡ ARM เชชเชฃ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซเช‚, Embox เช† เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชฎเชพเชŸเซ‡ เช—เซเชฐเชพเชซเชฟเช•เซเชธ เช†เช‰เชŸเชชเซเชŸเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เชเชฎเซเชฌเซ‹เช•เซเชธ เชชเชพเชธเซ‡ เชฌเชพเชนเซเชฏ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟ เช›เซ‡, เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเซ‡ เช“เชชเชจเชธเซ€เชตเซ€เชจเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒ เชคเชฐเซ€เช•เซ‡ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช (เชธเซเชฅเชฟเชฐ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ "เชจเซเชฏเซ‚เชจเชคเชฎ" เชฌเชฟเชฒเซเชก เชฎเชพเชŸเซ‡เชจเชพ เชคเชฎเชพเชฎ เชธเชฎเชพเชจ เชตเชฟเช•เชฒเซเชชเซ‹ เชชเชธเชพเชฐ เช•เชฐเซ€เช เช›เซ€เช), เชคเซ‡ เชชเช›เซ€ เชนเซเช‚ เชเช• เชธเชฐเชณ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช‰เชฎเซ‡เชฐเซเช‚ เช›เซเช‚ เชœเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡:

version.cpp:

#include <stdio.h>
#include <opencv2/core/utility.hpp>

int main() {
    printf("OpenCV: %s", cv::getBuildInformation().c_str());

    return 0;
}

เช…เชฎเซ‡ เชธเชฟเชธเซเชŸเชฎ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเซ€เช เช›เซ€เช - เช…เชฎเชจเซ‡ เช…เชชเซ‡เช•เซเชทเชฟเชค เช†เช‰เชŸเชชเซเชŸ เชฎเชณเซ‡ เช›เซ‡.

root@embox:/#opencv_version                                                     
OpenCV: 
General configuration for OpenCV 4.0.1 =====================================
  Version control:               bd6927bdf-dirty

  Platform:
    Timestamp:                   2019-06-21T10:02:18Z
    Host:                        Linux 5.1.7-arch1-1-ARCH x86_64
    Target:                      Generic arm-unknown-none
    CMake:                       3.14.5
    CMake generator:             Unix Makefiles
    CMake build tool:            /usr/bin/make
    Configuration:               Debug

  CPU/HW features:
    Baseline:
      requested:                 DETECT
      disabled:                  VFPV3 NEON

  C/C++:
    Built as dynamic libs?:      NO
< ะ”ะฐะปัŒัˆะต ะธะดัƒั‚ ะฟั€ะพั‡ะธะต ะฟะฐั€ะฐะผะตั‚ั€ั‹ ัะฑะพั€ะบะธ -- ั ะบะฐะบะธะผะธ ั„ะปะฐะณะฐะผะธ ะบะพะผะฟะธะปะธั€ะพะฒะฐะปะพััŒ,
  ะบะฐะบะธะต ะผะพะดัƒะปะธ OpenCV ะฒะบะปัŽั‡ะตะฝั‹ ะฒ ัะฑะพั€ะบัƒ ะธ ั‚.ะฟ.>

เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เช เช•เซ‡เชŸเชฒเชพเช• เช‰เชฆเชพเชนเชฐเชฃ เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เช›เซ‡, เชชเซเชฐเชพเชงเชพเชจเซเชฏเชฎเชพเช‚ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฆเซเชตเชพเชฐเชพ เช“เชซเชฐ เช•เชฐเชพเชฏเซ‡เชฒ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซˆเช•เซ€เชจเซเช‚ เชเช•. เชคเชฎเชพเชฐเซ€ เชธเชพเช‡เชŸ เชชเชฐ. เชฎเซ‡เช‚ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เชธเชฐเชนเชฆ เชกเชฟเชŸเซ‡เช•เซเชŸเชฐ เช•เซ‡เชจเซ€.

เชธเซ€เชงเชพ เชซเซเชฐเซ‡เชฎ เชฌเชซเชฐเชฎเชพเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชธเชพเชฅเซ‡เชจเซ€ เช‡เชฎเซ‡เชœ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‡ เชฅเซ‹เชกเซเช‚ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเซเช‚ เชชเชกเซเชฏเซเช‚. เชฎเชพเชฐเซ‡ เช† เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡. เช•เชพเชฐเซเชฏ imshow() QT, GTK เช…เชจเซ‡ เช…เชจเซเชฏ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเซ‹ เชฆเซเชตเชพเชฐเชพ เช›เชฌเซ€เช“ เชฐเซ‡เชจเซเชกเชฐ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ Windows, เชœเซ‡, เช…เชฒเชฌเชคเซเชค, STM32 เชฐเซ‚เชชเชฐเซ‡เช–เชพเชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚. เชนเช•เซ€เช•เชคเชฎเชพเช‚, QT เชจเซ‡ STM32F7Discovery เชชเชฐ เชชเชฃ เชšเชฒเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชฌเซ€เชœเชพ เชฒเซ‡เช–เชฎเชพเช‚ เช†เชตเชฐเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. ๐Ÿ™‚

เชŸเซ‚เช‚เช•เซ€ เชธเซเชชเชทเซเชŸเชคเชพ เชชเช›เซ€ เชเชœ เชกเชฟเชŸเซ‡เช•เซเชŸเชฐเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช•เชฏเชพ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡, เช…เชฎเชจเซ‡ เชเช• เช›เชฌเซ€ เชฎเชณเซ‡ เช›เซ‡.

STM32F7-Discovery เชชเชฐ OpenCV

เชฎเซ‚เชณ เชšเชฟเชคเซเชฐ

STM32F7-Discovery เชชเชฐ OpenCV

เชชเชฐเชฟเชฃเชพเชฎ

STM32F7Discovery เชชเชฐ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

32F746GDISCOVERY เชชเชฐ เช˜เชฃเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชฎเซ‡เชฎเชฐเซ€ เชตเชฟเชญเชพเช—เซ‹ เช›เซ‡ เชœเซ‡เชจเซ‹ เช†เชชเชฃเซ‡ เชเช• เช…เชฅเชตเชพ เชฌเซ€เชœเซ€ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

  1. 320KiB เชฐเซ‡เชฎ
  2. เช›เชฌเซ€ เชฎเชพเชŸเซ‡ 1MiB เชซเซเชฒเซ‡เชถ
  3. 8MiB SDRAM
  4. 16MiB QSPI NAND เชซเซเชฒเซ‡เชถ
  5. เชฎเชพเช‡เช•เซเชฐเซ‹เชเชธเชกเซ€ เช•เชพเชฐเซเชก เชธเซเชฒเซ‹เชŸ

SD เช•เชพเชฐเซเชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชˆเชฎเซ‡เชœเซ‹ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชจเซเชฏเซ‚เชจเชคเชฎ เช‰เชฆเชพเชนเชฐเชฃ เชšเชฒเชพเชตเชตเชพเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚, เช† เชฌเชนเซ เช‰เชชเชฏเซ‹เช—เซ€ เชจเชฅเซ€.
เชกเชฟเชธเซเชชเซเชฒเซ‡เชจเซเช‚ เชฐเชฟเชเซ‹เชฒเซเชฏเซเชถเชจ 480ร—272 เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชซเซเชฐเซ‡เชฎเชฌเชซเชฐ เชฎเซ‡เชฎเชฐเซ€ 522 เชฌเชฟเชŸเซเชธเชจเซ€ เชŠเช‚เชกเชพเชˆเช 240 เชฌเชพเช‡เชŸเซเชธ เชนเชถเซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เช† RAM เชจเชพ เช•เชฆ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช›เซ‡, เชคเซ‡เชฅเซ€ เชซเซเชฐเซ‡เชฎเชฌเชซเชฐ เช…เชจเซ‡ เชขเช—เชฒเซ‹ (เชœเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, OpenCV เชธเชนเชฟเชค, เช›เชฌเซ€เช“ เช…เชจเซ‡ เชธเชนเชพเชฏเช• เชฎเชพเชณเช–เชพเช‚ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡) SDRAM เชฎเชพเช‚ เชธเซเชฅเชฟเชค เชนเชถเซ‡, เชฌเชพเช•เซ€เชจเซเช‚ เชฌเชงเซเช‚ (เชธเซเชŸเซ‡เช•เซเชธ เช…เชจเซ‡ เช…เชจเซเชฏ เชธเชฟเชธเซเชŸเชฎ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡เชจเซ€ เชฎเซ‡เชฎเชฐเซ€) ) RAM เชชเชฐ เชœเชถเซ‡.

เชœเซ‹ เช†เชชเชฃเซ‡ STM32F7Discovery เชฎเชพเชŸเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชฒเชˆเช (เชธเชฎเช—เซเชฐ เชจเซ‡เชŸเชตเชฐเซเช•, เชคเชฎเชพเชฎ เช†เชฆเซ‡เชถเซ‹, เชธเซเชŸเซ‡เช•เซเชธเชจเซ‡ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซเช‚ เชจเชพเชจเซเช‚ เชฌเชจเชพเชตเซ‹ เชตเช—เซ‡เชฐเซ‡.) เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชธเชพเชฅเซ‡ OpenCV เช‰เชฎเซ‡เชฐเซ€เช, เชคเซ‹ เชœเชฐเซ‚เชฐเซ€ เชฎเซ‡เชฎเชฐเซ€ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เชนเชถเซ‡:

   text    data     bss     dec     hex filename
2876890  459208  312736 3648834  37ad42 build/base/bin/embox

เชœเซ‡เช“ เช–เซ‚เชฌ เชœ เชชเชฐเชฟเชšเชฟเชค เชจเชฅเซ€ เช•เซ‡ เช•เชฏเชพ เชตเชฟเชญเชพเช—เซ‹ เช•เซเชฏเชพเช‚ เชœเชพเชฏ เช›เซ‡, เชนเซเช‚ เชธเชฎเชœเชพเชตเซ€เชถ: เชฎเชพเช‚ .text ะธ .rodata เชธเซ‚เชšเชจเชพเช“ เช…เชจเซ‡ เชธเซเชฅเชฟเชฐเชพเช‚เช•เซ‹ (เช†เชถเชฐเซ‡ เช•เชนเซ€เช เชคเซ‹, เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชกเซ‡เชŸเชพ) เช†เชตเซ‡เชฒเซเช‚ เช›เซ‡ .data เชกเซ‡เชŸเชพ เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซ€เชฒ เช›เซ‡, .bss เชคเซเชฏเชพเช‚ "เชจเชฒ เช•เชฐเซ‡เชฒ" เชšเชฒเซ‹ เช›เซ‡, เชœเซ‡เชจเซ‡, เชคเซ‡เชฎ เช›เชคเชพเช‚, เชธเซเชฅเชพเชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เช† เชตเชฟเชญเชพเช— RAM เชชเชฐ "เชœเชถเซ‡").

เชธเชพเชฐเชพ เชธเชฎเชพเชšเชพเชฐ เช เช›เซ‡ เช•เซ‡ .data/.bss เชซเชฟเชŸ เชœเซ‹เชˆเช, เชชเชฐเช‚เชคเซ เชธเชพเชฅเซ‡ .text เชฎเซเชถเซเช•เซ‡เชฒเซ€ เช เช›เซ‡ เช•เซ‡ เช‡เชฎเซ‡เชœ เชฎเชพเชŸเซ‡ เชฎเชพเชคเซเชฐ 1MiB เชฎเซ‡เชฎเชฐเซ€ เช›เซ‡. เชฌเชนเชพเชฐ เชซเซ‡เช‚เช•เซ€ เชถเช•เชพเชฏ เช›เซ‡ .text เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชšเชฟเชคเซเชฐ เชฒเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชตเชพเช‚เชšเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชตเช–เชคเซ‡ SD เช•เชพเชฐเซเชกเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚, เชชเชฐเช‚เชคเซ fruits.png เชจเซเช‚ เชตเชœเชจ เชฒเช—เชญเช— 330KiB เช›เซ‡, เชคเซ‡เชฅเซ€ เช† เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚: เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ .text OpenCV เช•เซ‹เชกเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡.

เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡, เชคเซเชฏเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชธเซเชคเซ เชฌเชพเช•เซ€ เช›เซ‡ - เช•เซ‹เชกเชจเซ‹ เชเช• เชญเชพเช— QSPI เชซเซเชฒเซ‡เชถ เชชเชฐ เชฒเซ‹เชก เช•เชฐเชตเซ‹ (เชคเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฌเชธเชฎเชพเช‚ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชฎเซ‡เชช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชตเชฟเชถเชฟเชทเซเชŸ เชฎเซ‹เชก เชงเชฐเชพเชตเซ‡ เช›เซ‡, เชœเซ‡เชฅเซ€ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช† เชกเซ‡เชŸเชพเชจเซ‡ เชธเซ€เชงเซ‹ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เซ‡). เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชเช• เชธเชฎเชธเซเชฏเชพ เชŠเชญเซ€ เชฅเชพเชฏ เช›เซ‡: เชชเซเชฐเชฅเชฎ, เช‰เชชเช•เชฐเชฃ เชฐเซ€เชฌเซ‚เชŸ เชฅเชฏเชพ เชชเช›เซ€ เชคเชฐเชค เชœ QSPI เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเซ€ เชฎเซ‡เชฎเชฐเซ€ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€ (เชคเชฎเชพเชฐเซ‡ เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชชเซเชก เชฎเซ‹เชกเชจเซ‡ เช…เชฒเช—เชฅเซ€ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡), เช…เชจเซ‡ เชฌเซ€เชœเซเช‚, เชคเชฎเซ‡ เช† เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ "เชซเซเชฒเซ‡เชถ" เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€. เชเช• เชชเชฐเชฟเชšเชฟเชค เชฌเซเชŸเชฒเซ‹เชกเชฐ.

เชชเชฐเชฟเชฃเชพเชฎเซ‡, QSPI เชฎเชพเช‚เชจเชพ เชคเชฎเชพเชฎ เช•เซ‹เชกเชจเซ‡ เชฒเชฟเช‚เช• เช•เชฐเชตเชพเชจเซ‹ เชจเชฟเชฐเซเชฃเชฏ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹, เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเซเชต-เชฒเซ‡เช–เชฟเชค เชฒเซ‹เชกเชฐ เชธเชพเชฅเซ‡ เชซเซเชฒเซ‡เชถ เช•เชฐเซ‹ เชœเซ‡ TFTP เชฆเซเชตเชพเชฐเชพ เชœเชฐเซ‚เชฐเซ€ เชฌเชพเชˆเชจเชฐเซ€ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชถเซ‡.

เชชเชฐเชฟเชฃเชพเชฎ

เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เชเชฎเซเชฌเซ‹เช•เซเชธเชฎเชพเช‚ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เชฒเช—เชญเช— เชเช• เชตเชฐเซเชท เชชเชนเซ‡เชฒเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เชตเชฟเชตเชฟเชง เช•เชพเชฐเชฃเซ‹เชธเชฐ เชคเซ‡เชจเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชฎเซเชฒเชคเชตเซ€ เชฐเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• libstdc++ เช…เชจเซ‡ เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช›เซ‡. Embox เชฎเชพเช‚ C++ เชธเชชเซ‹เชฐเซเชŸเชจเซ€ เชธเชฎเชธเซเชฏเชพ เช† เชฒเซ‡เช–เชจเชพ เช…เชตเช•เชพเชถเชจเซ€ เชฌเชนเชพเชฐ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชนเซ€เช‚ เชนเซเช‚ เชฎเชพเชคเซเชฐ เชเชŸเชฒเซเช‚ เชœ เช•เชนเซ€เชถ เช•เซ‡ เช…เชฎเซ‡ เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เช† เชธเชฎเชฐเซเชฅเชจ เชนเชพเช‚เชธเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เช›เซ€เช ๐Ÿ™‚

เช…เช‚เชคเซ‡, เช† เชธเชฎเชธเซเชฏเชพเช“ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ (เช“เชชเชจเชธเซ€เชตเซ€ เช‰เชฆเชพเชนเชฐเชฃ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชชเซ‚เชฐเชคเซเช‚ เชนเชคเซเช‚), เช…เชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เชนเชคเซเช‚. เช•เซ‡เชจเซ€ เชซเชฟเชฒเซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเซ‹เชฐเซเชกเชจเซ‡ เชธเซ€เชฎเชพเช“ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ 40 เชฒเชพเช‚เชฌเซ€ เชธเซ‡เช•เชจเซเชก เชฒเชพเช—เซ‡ เช›เซ‡. เช†, เช…เชฒเชฌเชคเซเชค, เช–เซ‚เชฌ เชฒเชพเช‚เชฌเซ เช›เซ‡ (เช† เชฌเชพเชฌเชคเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡ เชตเชฟเชšเชพเชฐเชฃเชพเช“ เช›เซ‡, เชธเชซเชณเชคเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช† เชตเชฟเชถเซ‡ เชเช• เช…เชฒเช— เชฒเซ‡เช– เชฒเช–เชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชถเซ‡).

STM32F7-Discovery เชชเชฐ OpenCV

เชœเซ‹ เช•เซ‡, เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชงเซเชฏเซ‡เชฏ เชเช• เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชนเชคเซ‹ เชœเซ‡ เช…เชจเซเช•เซเชฐเชฎเซ‡ STM32 เชชเชฐ OpenCV เชšเชฒเชพเชตเชตเชพเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชธเช‚เชญเชพเชตเชจเชพ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡, เช† เชงเซเชฏเซ‡เชฏ เชนเชพเช‚เชธเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชนเซเชฐเซ‡!

tl;dr: เชชเช—เชฒเชพเชตเชพเชฐ เชธเซ‚เชšเชจเชพเช“

0: Embox เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹, เชœเซ‡เชฎ เช•เซ‡:

    git clone https://github.com/embox/embox && cd ./embox

1: เชšเชพเชฒเซ‹ เชฌเซเชŸเชฒเซ‹เชกเชฐ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ€เชจเซ‡ เชถเชฐเซ‚ เช•เชฐเซ€เช เชœเซ‡ QSPI เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเซ‡ "เชซเซเชฒเซ‡เชถ" เช•เชฐเชถเซ‡.

    make confload-arm/stm32f7cube

เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡. เช…เชฎเซ‡ TFTP เชฆเซเชตเชพเชฐเชพ เช›เชฌเซ€ เช…เชชเชฒเซ‹เชก เช•เชฐเซ€เชถเซเช‚. เชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เชนเซ‹เชธเซเชŸ IP เชเชกเซเชฐเซ‡เชธ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ conf/rootfs/network เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช‰เชฆเชพเชนเชฐเชฃ:

iface eth0 inet static
    address 192.168.2.2
    netmask 255.255.255.0
    gateway 192.168.2.1
    hwaddress aa:bb:cc:dd:ee:02

gateway - เชนเซ‹เชธเซเชŸ เชธเชฐเชจเชพเชฎเซเช‚ เชœเซเชฏเชพเช‚เชฅเซ€ เช›เชฌเซ€ เชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, address - เชฌเซ‹เชฐเซเชกเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚.

เชคเซ‡ เชชเช›เซ€, เช…เชฎเซ‡ เชฌเซเชŸเชฒเซ‹เชกเชฐ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช:

    make

2: เชฌเซ‹เชฐเซเชก เชชเชฐ เชฌเซ‚เชŸเชฒเซ‹เชกเชฐเชจเซเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชฒเซ‹เชกเชฟเช‚เช— (เชถเชฌเซเชฆ เชฎเชพเชŸเซ‡ เชฎเชพเชซ เช•เชฐเชถเซ‹) - เช…เชนเซ€เช‚ เช•เช‚เชˆ เชšเซ‹เช•เซเช•เชธ เชจเชฅเซ€, เชคเชฎเชพเชฐเซ‡ STM32F7Discovery เชฎเชพเชŸเซ‡เชจเซ€ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชœเซ‡เชฎ เชคเซ‡ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชœเซ‹ เชคเชฎเชจเซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚ เชคเซ‡ เช–เชฌเชฐ เชจเชฅเซ€, เชคเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.
3: OpenCV เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชธเชพเชฅเซ‡ เช›เชฌเซ€เชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเชตเซเช‚.

    make confload-platform/opencv/stm32f7discovery
    make

4: QSPI เชจเซ‡ qspi.bin เชชเชฐ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ ELF เชตเชฟเชญเชพเช—เซ‹เชฎเชพเช‚เชฅเซ€ เช…เชฐเซเช•

    arm-none-eabi-objcopy -O binary build/base/bin/embox build/base/bin/qspi.bin 
        --only-section=.text --only-section=.rodata 
        --only-section='.ARM.ex*' 
        --only-section=.data

conf เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช›เซ‡ เชœเซ‡ เช† เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฅเซ€ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹

    ./conf/qspi_objcopy.sh # ะัƒะถะฝั‹ะน ะฑะธะฝะฐั€ะฝะธะบ -- build/base/bin/qspi.bin

5: tftp เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, QSPI เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เชชเชฐ qspi.bin.bin เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹. เชนเซ‹เชธเซเชŸ เชชเชฐ, เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, tftp เชธเชฐเซเชตเชฐเชจเชพ เชฐเซ‚เชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ qspi.bin เชจเซ€ เชจเช•เชฒ เช•เชฐเซ‹ (เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ /srv/tftp/ เช…เชฅเชตเชพ /var/lib/tftpboot/; เช…เชจเซเชฐเซ‚เชช เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡เชจเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เชฎเซ‹เชŸเชพ เชญเชพเช—เชจเชพ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชตเชฟเชคเชฐเชฃเซ‹เชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡, เชœเซ‡เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. tftpd เช…เชฅเชตเชพ tftp-hpa, เช•เซเชฏเชพเชฐเซ‡เช• เชคเชฎเชพเชฐเซ‡ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡ systemctl start tftpd.service เชถเชฐเซ‚ เช•เชฐเชตเชพ).

    # ะฒะฐั€ะธะฐะฝั‚ ะดะปั tftpd
    sudo cp build/base/bin/qspi.bin /srv/tftp
    # ะฒะฐั€ะธะฐะฝั‚ ะดะปั tftp-hpa
    sudo cp build/base/bin/qspi.bin /var/lib/tftpboot

Embox เชชเชฐ (เชเชŸเชฒเซ‡ โ€‹โ€‹เช•เซ‡ เชฌเซเชŸเชฒเซ‹เชกเชฐเชฎเชพเช‚), เชคเชฎเชพเชฐเซ‡ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เช…เชฎเซ‡ เชงเชพเชฐเซ€เช เช›เซ€เช เช•เซ‡ เชธเชฐเซเชตเชฐ เชชเชพเชธเซ‡ 192.168.2.1 เชธเชฐเชจเชพเชฎเซเช‚ เช›เซ‡):

    embox> qspi_loader qspi.bin 192.168.2.1

6: เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ goto เชคเชฎเชพเชฐเซ‡ QSPI เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ "เชœเชฎเซเชช" เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช‡เชฎเซ‡เชœ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชšเซ‹เช•เซเช•เชธ เชธเซเชฅเชพเชจ เชฌเชฆเชฒเชพเชถเซ‡, เชคเชฎเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช† เชธเชฐเชจเชพเชฎเซเช‚ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ mem 0x90000000 (เชชเซเชฐเชพเชฐเช‚เชญ เชธเชฐเชจเชพเชฎเซเช‚ เช‡เชฎเซ‡เชœเชจเชพ เชฌเซ€เชœเชพ 32-เชฌเซ€เชŸ เชถเชฌเซเชฆเชฎเชพเช‚ เชฌเช‚เชงเชฌเซ‡เชธเซ‡ เช›เซ‡); เชคเชฎเชพเชฐเซ‡ เชธเซเชŸเซ‡เช•เชจเซ‡ เชซเซเชฒเซ‡เช— เช•เชฐเชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ -s, เชธเซเชŸเซ‡เช• เชธเชฐเชจเชพเชฎเซเช‚ 0x90000000 เชชเชฐ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ:

    embox>mem 0x90000000
    0x90000000:     0x20023200  0x9000c27f  0x9000c275  0x9000c275
                      โ†‘           โ†‘
              ัั‚ะพ ะฐะดั€ะตั    ัั‚ะพ  ะฐะดั€ะตั 
                ัั‚ัะบะฐ        ะฟะตั€ะฒะพะน
                           ะธะฝัั‚ั€ัƒะบั†ะธะธ

    embox>goto -i 0x9000c27f -s 0x20023200 # ะคะปะฐะณ -i ะฝัƒะถะตะฝ ั‡ั‚ะพะฑั‹ ะทะฐะฟั€ะตั‚ะธั‚ัŒ ะฟั€ะตั€ั‹ะฒะฐะฝะธั ะฒะพ ะฒั€ะตะผั ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธะธ ัะธัั‚ะตะผั‹

    < ะะฐั‡ะธะฝะฐั ะพั‚ััŽะดะฐ ะฑัƒะดะตั‚ ะฒั‹ะฒะพะด ะฝะต ะทะฐะณั€ัƒะทั‡ะธะบะฐ, ะฐ ะพะฑั€ะฐะทะฐ ั OpenCV >

7: เชฒเซ‹เชจเซเชš

    embox> edges 20

เช…เชจเซ‡ 40-เชธเซ‡เช•เชจเซเชกเชจเซ€ เชธเชฐเชนเชฆ เชถเซ‹เชงเชจเซ‹ เช†เชจเช‚เชฆ เชฎเชพเชฃเซ‹ ๐Ÿ™‚

เชœเซ‹ เช•เช‚เชˆเช• เช–เซ‹เชŸเซเช‚ เชฅเชพเชฏ เช›เซ‡ - เชเช• เชฎเซเชฆเซเชฆเซ‹ เชฒเช–เซ‹ เช…เชฎเชพเชฐเชพ เชญเช‚เชกเชพเชฐ, เช…เชฅเชตเชพ embox-devel@googlegroups.com เชฎเซ‡เช‡เชฒเชฟเช‚เช— เชธเซ‚เชšเชฟ เชชเชฐ, เช…เชฅเชตเชพ เช…เชนเซ€เช‚ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐ เชงเชฐเชพเชตเชคเซ€ เชธเชพเช‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ ๐Ÿ”ฅ DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐเซเชธ เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ | ProHoster