STM32F7-เจกเจฟเจธเจ•เจตเจฐเฉ€ 'เจคเฉ‡ OpenCV

STM32F7-เจกเจฟเจธเจ•เจตเจฐเฉ€ 'เจคเฉ‡ OpenCV เจฎเฉˆเจ‚ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเจพเจ‚ เจเจฎเจฌเจพเจ•เจธ, เจ…เจคเฉ‡ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเจš เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจฎเฉˆเจ‚ STM32746G เจฌเฉ‹เจฐเจก 'เจคเฉ‡ เจ“เจชเจจเจธเฉ€เจตเฉ€ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ•เฉ€เจคเจพ.

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ–เฉ‹เจœ เจ‡เฉฐเจœเจฃ เจตเจฟเฉฑเจš "STM32 เจฌเฉ‹เจฐเจก 'เจคเฉ‡ เจ“เจชเจจเจธเฉ€เจตเฉ€" เจตเจฐเจ—เจพ เจ•เฉเจ เจŸเจพเจˆเจช เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉ‹เจ• เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ STM32 เจฌเฉ‹เจฐเจกเจพเจ‚ เจœเจพเจ‚ เจนเฉ‹เจฐ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ 'เจคเฉ‡ เจ‡เจธ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจเฅค
เจ‡เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจตเจฟเจกเฉ€เจ“เจœเจผ เจนเจจ เจœเฉ‹, เจจเจพเจฎ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เจน เจฆเจฟเจ–เจพเจ‰เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจชเจฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ (เจธเจพเจฐเฉ‡ เจตเฉ€เจกเฉ€เจ“เจœเจผ เจตเจฟเฉฑเจš เจœเฉ‹ เจฎเฉˆเจ‚ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆ) STM32 เจฌเฉ‹เจฐเจก 'เจคเฉ‡, เจ•เฉˆเจฎเจฐเฉ‡ เจคเฉ‹เจ‚ เจธเจฟเจฐเจซ เจšเจฟเฉฑเจคเจฐ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเจพ เจธเจ•เฉเจฐเฉ€เจจ 'เจคเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจœเจพเจ‚ เจคเจพเจ‚ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡, เจœเจพเจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจฌเฉ‹เจฐเจกเจพเจ‚ 'เจคเฉ‡ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจธเฉ€ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฐเจพเจธเจฌเฉ‡เจฐเฉ€ เจชเจพเจˆ)เฅค

เจ‡เจน เจ–เจพ เจ•เจฟเจ‰เจ‚ เจนเฉˆ?

เจ–เฉ‹เจœ เจธเจตเจพเจฒเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจธเจฟเฉฑเจงเฉ€ เจ‡เจธ เจคเฉฑเจฅ เจฆเฉเจ†เจฐเจพ เจตเจฟเจ†เจ–เจฟเจ† เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ เจ•เจฟ เจ“เจชเจจเจธเฉ€เจตเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจฟเฉฑเจง เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจตเจฟเจœเจผเจจ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจนเฉ‹เจฐ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ‡เจธ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจนเจจ, เจ…เจคเฉ‡ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ 'เจคเฉ‡ เจกเฉˆเจธเจ•เจŸเฉŒเจช-เจคเจฟเจ†เจฐ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจชเจฐ เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจ…เจœเฉ‡ เจตเฉ€ เจ•เฉ‹เจˆ เจชเฉเจฐเจธเจฟเฉฑเจง เจคเจฟเจ†เจฐ เจชเจ•เจตเจพเจจ เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚ เจนเจจ?

เจ›เฉ‹เจŸเฉ‡ เจธเจผเจพเจฒเจพเจ‚ 'เจคเฉ‡ เจ“เจชเจจเจธเฉ€เจตเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‹ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆ:

  • เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฎเฉŒเจกเจฟเจŠเจฒเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉˆเฉฑเจŸ เจฆเฉ‡ เจจเจพเจฒ เจตเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจ‡เฉฑเจ• เจฌเจนเฉเจค เจตเฉฑเจกเฉ‡ เจ•เฉ‹เจก (เจ•เจˆ เจฎเฉˆเจ—เจพเจฌเจพเจˆเจŸ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚) เจฆเฉ‡ เจ•เจพเจฐเจจ เจ‰เจธเฉ‡ STM32F7Discovery (เจญเจพเจตเฉ‡เจ‚ OS เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เฉ‡ เจฌเจฟเจจเจพเจ‚) เจฆเฉ€ เจซเจฒเฉˆเจธเจผ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจซเจฟเฉฑเจŸ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค
  • เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ–เฉเจฆ C++ เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ€ เจ—เจˆ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ
    • เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจฐเจจเจŸเจพเจˆเจฎ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ (เจ…เจชเจตเจพเจฆ, เจ†เจฆเจฟ)
    • LibC/Posix เจฒเจˆ เจฅเฉ‹เฉœเจพ เจธเจฎเจฐเจฅเจจ, เจœเฉ‹ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจเจฎเจฌเฉˆเจกเจก เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ OS เจตเจฟเฉฑเจš เจชเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ - เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจŸเฉˆเจ‚เจกเจฐเจก เจชเจฒเฉฑเจธ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจŸเฉˆเจ‚เจกเจฐเจก STL เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ (เจตเฉˆเจ•เจŸเจฐ, เจ†เจฆเจฟ) เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

Embox เจตเจฟเฉฑเจš เจชเฉ‹เจฐเจŸเจฟเฉฐเจ—

เจ†เจฎ เจตเจพเจ‚เจ—, เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ‡เจธ เจจเฉ‚เฉฐ เจ‰เจธ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจเจพ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจตเจฟเจšเจพเจฐ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจตเจฟเจ•เจพเจธเจ•เจฐเจคเจพเจตเจพเจ‚ เจจเฉ‡ เจ‡เจธเจฆเจพ เจ‡เจฐเจพเจฆเจพ เจ•เฉ€เจคเจพ เจธเฉ€เฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจธ เจจเจพเจฒ เจ•เฉ‹เจˆ เจธเจฎเฉฑเจธเจฟเจ† เจจเจนเฉ€เจ‚ เจนเฉˆ - เจธเจฐเฉ‹เจค เจ•เฉ‹เจก 'เจคเฉ‡ เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ github, เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ†เจฎ cmake เจจเจพเจฒ GNU/Linux เจฆเฉ‡ เจ…เจงเฉ€เจจ เจฌเจฃเจพเจˆ เจ—เจˆ เจนเฉˆเฅค

เจšเฉฐเจ—เฉ€ เจ–เจผเจฌเจฐ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ“เจชเจจเจธเฉ€เจตเฉ€ เจจเฉ‚เฉฐ เจฌเจพเจ•เจธ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจชเฉ‹เจฐเจŸเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเจพเจฒ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ‡เจ•เฉฑเจ เฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‰เจน เจ•เจฟเฉฐเจจเฉ€ เจฅเจพเจ‚ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจจเฅค เจนเจฐเฉ‡เจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

> 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 เจ…เจคเฉ‡ .data เจœเจผเจฟเจ†เจฆเจพ เจฅเจพเจ‚ เจจเจนเฉ€เจ‚ เจฒเฉˆเจ‚เจฆเฉ‡, เจชเจฐ เจ•เฉ‹เจก 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 เจ…เจœเฉ‡ เจตเฉ€ เจ•เจพเจซเจผเฉ€ เจนเฉˆ, เจชเจฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจซเจฒเจคเจพ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจˆเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจšเจฒเจพเจ“

เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฐ 'เจคเฉ‡ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ“ เจ•เจฟ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ•เจฟเจฎเฉ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจก เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เฉฐเจŸเฉ€เจ—เฉเจฐเฉ‡เจŸเจฐ / CP เจšเฉเจฃเจฟเจ†, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ‡เจน 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 เจ…เจคเฉ‡ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฐเจพเจนเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐ เจ–เจฟเฉฑเจš เจธเจ•เจฆเฉ‡ เจนเจจ, เจœเฉ‹ เจ•เจฟ STM32 เจฒเจˆ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจฏเจ•เฉ€เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจ—เฉ‡เฅค เจ…เจธเจฒ เจตเจฟเฉฑเจš, QT เจจเฉ‚เฉฐ STM32F7Discovery 'เจคเฉ‡ เจตเฉ€ เจšเจฒเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจšเจฐเจšเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€ ๐Ÿ™‚

เจฅเฉ‹เฉœเฉเจนเฉ‡ เจœเจฟเจนเฉ‡ เจธเจชเจธเจผเจŸเฉ€เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เจฟเจจเจพเจฐเฉ‡ เจ–เฉ‹เจœเจ• เจฆเจพ เจจเจคเฉ€เจœเจพ เจ•เจฟเจธ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฎเจฟเจฒเจฆเจพ เจนเฉˆเฅค

STM32F7-เจกเจฟเจธเจ•เจตเจฐเฉ€ 'เจคเฉ‡ OpenCV

เจ…เจธเจฒเฉ€ เจคเจธเจตเฉ€เจฐ

STM32F7-เจกเจฟเจธเจ•เจตเจฐเฉ€ 'เจคเฉ‡ OpenCV

เจ‡เจธ เจฆเจพ เจจเจคเฉ€เจœเจพ

STM32F7Discovery 'เจคเฉ‡ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ

32F746GDISCOVERY 'เจคเฉ‡ เจ•เจˆ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจธเฉˆเจ•เจธเจผเจจ เจนเจจ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจจเจพ เจ•เจฟเจธเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

  1. 320KiB เจฐเฉˆเจฎ
  2. เจšเจฟเฉฑเจคเจฐ เจฒเจˆ 1MiB เจซเจฒเฉˆเจธเจผ
  3. 8MiB SDRAM
  4. 16MiB QSPI NAND เจซเจฒเฉˆเจธเจผ
  5. microSD เจ•เจพเจฐเจก เจธเจฒเจพเจŸ

เจ‡เฉฑเจ• SD เจ•เจพเจฐเจก เจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‰เจฆเจพเจนเจฐเจฃ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš, เจ‡เจน เจฌเจนเฉเจค เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ.
เจกเจฟเจธเจชเจฒเฉ‡เจ… เจฆเจพ เจฐเฉˆเจœเจผเฉ‹เจฒเจฟเจŠเจธเจผเจจ 480ร—272 เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ 522 เจฌเจฟเฉฑเจŸ เจฆเฉ€ เจกเฉ‚เฉฐเจ˜เจพเจˆ 'เจคเฉ‡ 240 เจฌเจพเจˆเจŸ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจฏเจพเจจเฉ€. เจ‡เจน RAM เจฆเฉ‡ เจ†เจ•เจพเจฐ เจคเฉ‹เจ‚ เจตเฉฑเจง เจนเฉˆ, เจ‡เจธเจฒเจˆ เจซเจฐเฉ‡เจฎเจฌเจซเจฐ เจ…เจคเฉ‡ เจนเฉ€เจช (เจœเจฟเจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€, OpenCV เจธเจฎเฉ‡เจค, เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจ…เจคเฉ‡ เจธเจนเจพเจ‡เจ• เจขเจพเจ‚เจšเจฟเจ†เจ‚ เจฒเจˆ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ) SDRAM เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉ‹เจฃเจ—เฉ‡, เจฌเจพเจ•เฉ€ เจธเจญ เจ•เฉเจ (เจธเจŸเฉˆเจ• เจฒเจˆ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจฟเจธเจŸเจฎ เจฒเฉ‹เฉœเจพเจ‚) RAM 'เจคเฉ‡ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ STM32F7Discovery เจฒเจˆ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉฐเจฐเจšเจจเจพ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚ (เจชเฉ‚เจฐเจพ เจจเฉˆเฉฑเจŸเจตเจฐเจ•, เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚, เจธเจŸเฉˆเจ• เจจเฉ‚เฉฐ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจ›เฉ‹เจŸเจพ เจฌเจฃเจพเจ‰, เจ†เจฆเจฟ) เจ…เจคเฉ‡ เจ“เจชเจจเจธเฉ€เจตเฉ€ เจจเฉ‚เฉฐ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€:

   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-เจกเจฟเจธเจ•เจตเจฐเฉ€ 'เจคเฉ‡ OpenCV

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจตเจฟเจšเจ•เจพเจฐเจฒเจพ เจŸเฉ€เจšเจพ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจฌเจฃเจพเจ‰เจฃเจพ เจธเฉ€ เจœเฉ‹ เจ•เฉเจฐเจฎเจตเจพเจฐ STM32 'เจคเฉ‡ OpenCV เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจเจ—เจพ, เจ‡เจน เจŸเฉ€เจšเจพ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจนเฉ‚เจฐเฉ‡!

tl; dr: เจ•เจฆเจฎ เจฆเจฐ เจ•เจฆเจฎ เจจเจฟเจฐเจฆเฉ‡เจธเจผ

0: เจเจฎเจฌเจพเจ•เจธ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ‹, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚:

    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.bin.bin เจจเฉ‚เฉฐ เจ‡เฉฑเจ• QSPI เจซเจฒเฉˆเจธเจผ เจกเจฐเจพเจˆเจต เจตเจฟเฉฑเจš เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ‹เฅค เจนเฉ‹เจธเจŸ 'เจคเฉ‡, เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, qspi.bin เจจเฉ‚เฉฐ tftp เจธเจฐเจตเจฐ เจฆเฉ‡ เจฐเฉ‚เจŸ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ•เจพเจชเฉ€ เจ•เจฐเฉ‹ (เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ /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-เจธเจ•เจฟเฉฐเจŸ เจฆเฉ€ เจฌเจพเจฐเจกเจฐ เจ–เฉ‹เจœ เจฆเจพ เจ†เจจเฉฐเจฆ เจฎเจพเจฃเฉ‹ ๐Ÿ™‚

เจœเฉ‡ เจ•เฉเจ เจ—เจฒเจค เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ - เจ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฎเฉเฉฑเจฆเจพ เจฒเจฟเจ–เฉ‹ เจธเจพเจกเฉ€ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€, เจœเจพเจ‚ เจฎเฉ‡เจฒเจฟเฉฐเจ— เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจš [เจˆเจฎเฉ‡เจฒ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค], เจœเจพเจ‚ เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจตเจฟเฉฑเจš.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹