STM32F7-เดกเดฟเดธเตเด•เดตเดฑเดฟเดฏเดฟเดฒเต† OpenCV

STM32F7-เดกเดฟเดธเตเด•เดตเดฑเดฟเดฏเดฟเดฒเต† OpenCV เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเดฟเตฝ เด’เดฐเดพเดณเดพเดฃเต เดžเดพเตป เดŽเด‚เดฌเต‹เด•เตเดธเต, เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เดŽเด™เตเด™เดจเต† STM32746G เดฌเต‹เตผเดกเดฟเตฝ OpenCV เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดžเตเดžเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เด’เดฐเต เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเดจเดฟเตฝ "OpenCV on STM32 เดฌเต‹เตผเดกเต" เดŽเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดŸเตˆเดชเตเดชเตเดšเต†เดฏเตเดฏเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, STM32 เดฌเต‹เตผเดกเตเด•เดณเดฟเดฒเต‹ เดฎเดฑเตเดฑเต เดฎเตˆเด•เตเดฐเต‹เด•เตบเดŸเตเดฐเต‹เดณเดฑเตเด•เดณเดฟเดฒเต‹ เดˆ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดงเดพเดฐเดพเดณเด‚ เด†เดณเตเด•เดณเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚.
เดถเต€เตผเดทเด•เดฎเดจเตเดธเดฐเดฟเดšเตเดšเต เดตเดฟเดญเดœเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸ เดจเดฟเดฐเดตเดงเดฟ เดตเต€เดกเดฟเดฏเต‹เด•เตพ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ (เดžเดพเตป เด•เดฃเตเดŸ เดŽเดฒเตเดฒเดพ เดตเต€เดกเดฟเดฏเต‹เด•เดณเดฟเดฒเตเด‚) STM32 เดฌเต‹เตผเดกเดฟเตฝ, เด•เตเดฏเดพเดฎเดฑเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เดซเดฒเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด‡เดฎเต‡เดœเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดคเดจเตเดจเต† เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเดฒเต‹ เด•เต‚เดŸเตเดคเตฝ เดถเด•เตเดคเดฎเดพเดฏ เดฌเต‹เตผเดกเตเด•เดณเดฟเดฒเต‹ เดšเต†เดฏเตเดคเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฑเดพเดธเตโ€Œเดฌเต†เดฑเดฟ เดชเตˆ).

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เด‡เดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต?

เด“เดชเตเดชเตบเดธเดฟเดตเดฟ เดเดฑเตเดฑเดตเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ เดตเดฟเดทเตป เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดพเดฃเต†เดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดพเดฃเต เดคเดฟเดฐเดฏเตฝ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเตเดŸเต† เดœเดจเดชเตเดฐเต€เดคเดฟ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด…เดคเดฟเดจเตผเดคเตเดฅเด‚ เด•เต‚เดŸเตเดคเตฝ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เด‡เดคเต เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† เดฎเตˆเด•เตเดฐเต‹เด•เตบเดŸเตเดฐเต‹เดณเดฑเดฟเตฝ เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเต-เดฑเต†เดกเดฟ เด•เต‹เดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เดตเดฟเด•เดธเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดˆ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดชเตเดชเต‹เดดเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดชเดพเดšเด•เด•เตเด•เตเดฑเดฟเดชเตเดชเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเตเดคเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต?

เดšเต†เดฑเดฟเดฏ เดฌเต‹เตผเดกเตเด•เดณเดฟเตฝ OpenCV เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต† เดชเตเดฐเดถเตเดจเด‚ เดฐเดฃเตเดŸเต เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต:

  • เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเต‹เดฒเตเด‚ เดจเดฟเด™เตเด™เตพ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดตเดณเดฐเต† เดตเดฒเดฟเดฏ เด•เต‹เดกเต (เดจเดฟเดฐเดตเดงเดฟ เดฎเต†เด—เดพเดฌเตˆเดฑเตเดฑเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ) เด•เดพเดฐเดฃเด‚ เด…เดคเต เด…เดคเต‡ STM32F7Discovery เดฏเตเดŸเต† เดซเตเดฒเดพเดทเต เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต (OS เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เดพเดคเต† เดชเต‹เดฒเตเด‚) เดฏเต‹เดœเดฟเด•เตเด•เตเด•เดฏเดฟเดฒเตเดฒ.
  • เดฒเตˆเดฌเตเดฐเดฑเดฟ เดคเดจเตเดจเต† C++ เตฝ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต
    • เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เดฑเตบเดŸเตˆเดฎเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เดชเดฟเดจเตเดคเตเดฃ เด†เดตเดถเตเดฏเดฎเดพเดฃเต (เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ, เดฎเตเดคเดฒเดพเดฏเดต)
    • เดŽเด‚เดฌเดกเดกเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ OS-เด•เดณเดฟเตฝ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจ LibC/Posix-เดจเต เดชเดฟเดจเตเดคเตเดฃ เด•เตเดฑเดตเดพเดฃเต - เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดชเตเดฒเดธเต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเด‚ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ STL เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเด‚ (เดตเต†เด•เตเดฑเตเดฑเตผ, เดฎเตเดคเดฒเดพเดฏเดต) เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดŽเด‚เดฌเต‹เด•เตเดธเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดชเดคเดฟเดตเตเดชเต‹เดฒเต†, เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เตพ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เด…เดคเต เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดš เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฒเตเดฒเดคเดพเดฃเต. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เดคเดฟเตฝ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ - เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เด‡เดตเดฟเดŸเต† เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด—เดฟเดคเตเดคเดฌเต, เด—เตเดฐเดจเตเดฅเดถเดพเดฒ GNU/Linux เดจเต เด•เต€เดดเดฟเตฝ เดธเดพเดงเดพเดฐเดฃ cmake เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดฎเดพเดนเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด“เดชเตเดชเตบเดธเดฟเดตเดฟ เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดพเดฏเดฟ เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด‡เดคเต เดชเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒ เดตเดพเตผเดคเตเดค. เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเต เดŽเดคเตเดฐ เดธเตเดฅเดฒเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเต‹เด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด“เดฐเต‹ เดฎเตŠเดกเตเดฏเต‚เดณเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเต.

> 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 เด†เดฃเต, เดฐเดฃเตเดŸเดพเดฎเดคเดพเดฏเดฟ, เดŽเด‚เดฌเต‹เด•เตเดธเต เดˆ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดจเดพเดฏเดฟ เด—เตเดฐเดพเดซเดฟเด•เตเดธเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเดจเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดŽเด‚เดฌเต‹เด•เตเดธเดฟเดจเต เดฌเดพเดนเตเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด‰เดฃเตเดŸเต, เด…เดคเดฟเดจเตเดฑเต† เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต† เดžเด™เตเด™เตพ OpenCV เด’เดฐเต เดฎเตŠเดกเตเดฏเต‚เดณเดพเดฏเดฟ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต (เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเดŸเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ "เดฎเดฟเดจเดฟเดฎเตฝ" เด…เดธเด‚เดฌเตเดฒเดฟเด•เตเด•เต เด’เดฐเต‡ เด“เดชเตเดทเดจเตเด•เดณเต†เดฒเตเดฒเดพเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต), เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดžเดพเตป เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต:

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() เด•เตเดฏเตเดŸเดฟ, เดœเดฟเดŸเดฟเด•เต†, เดตเดฟเตปเดกเต‹เดธเต เด‡เดจเตเดฑเตผเดซเต‡เดธเตเด•เตพ เดตเดดเดฟ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดตเดฐเดฏเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด‡เดคเต เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ STM32-เดจเตเดณเตเดณ เด•เต‹เตบเดซเดฟเด—เดฑเดฟเตฝ เด‰เดฃเตเดŸเดพเด•เดฟเดฒเตเดฒ. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, QT STM32F7Discovery-เดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดฎเดฑเตเดฑเตŠเดฐเต เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดšเตผเดšเตเดšเดšเต†เดฏเตเดฏเตเด‚ :)

เดŽเดกเตเดœเต เดกเดฟเดฑเตเดฑเด•เตเดŸเดฑเดฟเดจเตเดฑเต† เดซเดฒเด‚ เดเดคเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเดพเดฃเต เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดฟเดฏ เดถเต‡เดทเด‚, เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚.

STM32F7-เดกเดฟเดธเตเด•เดตเดฑเดฟเดฏเดฟเดฒเต† OpenCV

เดฏเดฅเดพเตผเดคเตเดฅ เดšเดฟเดคเตเดฐเด‚

STM32F7-เดกเดฟเดธเตเด•เดตเดฑเดฟเดฏเดฟเดฒเต† OpenCV

เดซเดฒเด‚

STM32F7Discovery-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

32F746GDISCOVERY เดจเต เดจเดฟเดฐเดตเดงเดฟ เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเตผ เดฎเต†เดฎเตเดฎเดฑเดฟ เดตเดฟเดญเดพเด—เด™เตเด™เดณเตเดฃเตเดŸเต, เด…เดคเต เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดคเดฐเดคเตเดคเดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเตŠเดฐเต เดฐเต€เดคเดฟเดฏเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

  1. 320KiB เดฑเดพเด‚
  2. เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเต 1MiB เดซเตเดฒเดพเดทเต เดฎเต†เดฎเตเดฎเดฑเดฟ
  3. 8MiB SDRAM
  4. 16MiB QSPI NAND เดซเตเดฒเดพเดทเต เดกเตเดฐเตˆเดตเต
  5. เดฎเตˆเด•เตเดฐเต‹ เดŽเดธเตเดกเดฟ เด•เดพเตผเดกเต เดธเตเดฒเต‹เดŸเตเดŸเต

เด‡เดฎเต‡เดœเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต SD เด•เดพเตผเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ เด‡เดคเต เดตเดณเดฐเต† เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดฒเตเดฒ.
เดกเดฟเดธเตเดชเตเดฒเต‡เดฏเตเด•เตเด•เต 480x272 เดฑเต†เดธเดฒเต‚เดทเตป เด‰เดฃเตเดŸเต, เด…เดคเดฟเดจเตผเดคเตเดฅเด‚ เดซเตเดฐเต†เดฏเดฟเด‚เดฌเดซเดฑเดฟเดจเตเดณเตเดณ เดฎเต†เดฎเตเดฎเดฑเดฟ 522 เดฌเตˆเดฑเตเดฑเตเด•เดณเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เด…เดคเดพเดฏเดคเต 240 เดฌเดฟเดฑเตเดฑเตเด•เตพ. เด‡เดคเต เดฑเดพเดฎเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเดคเตเดคเต‡เด•เตเด•เดพเตพ เดตเดฒเตเดคเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดซเตเดฐเต†เดฏเดฟเด‚เดฌเดซเดฑเตเด‚ เด•เต‚เดฎเตเดชเดพเดฐเดตเตเด‚ (เดฎเดฑเตเดฑเต เด•เดพเดฐเตเดฏเด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚, เด“เดชเตเดชเตบเดธเดฟเดตเดฟเด•เตเด•เต เด‡เดฎเต‡เดœเตเด•เตพเด•เตเด•เตเด‚ เด“เด•เตเดธเดฟเดฒเดฑเดฟ เดธเตเดŸเตเดฐเด•เตเดšเดฑเตเด•เตพเด•เตเด•เตเด‚ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด‚) SDRAM-เตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเด‚, เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพเด‚ (เดธเตเดฑเตเดฑเดพเด•เตเด•เตเด•เตพเด•เตเด•เตเด‚ เดฎเดฑเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เตเดฎเตเดณเตเดณ เดฎเต†เดฎเตเดฎเดฑเดฟ เด†เดตเดถเตเดฏเด™เตเด™เตพ) เดฑเดพเดฎเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด‚.

เดžเด™เตเด™เตพ STM32F7Discovery เดŽเดจเตเดจเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดŽเดŸเตเดคเตเดคเดพเตฝ (เดฎเตเดดเตเดตเตป เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด‚ เดŽเดฒเตเดฒเดพ เด•เดฎเดพเตปเดกเตเด•เดณเตเด‚ เดตเดฒเดฟเดšเตเดšเต†เดฑเดฟเดฏเตเด•, เดธเตเดฑเตเดฑเดพเด•เตเด•เตเด•เตพ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดšเต†เดฑเตเดคเดพเด•เตเด•เตเด• เดฎเตเดคเดฒเดพเดฏเดต) เด…เดตเดฟเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚ OpenCV เดšเต‡เตผเด•เตเด•เตเด•, เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฎเต†เดฎเตเดฎเดฑเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚:

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

เดเดคเตŠเด•เตเด•เต† เดตเดฟเดญเดพเด—เด™เตเด™เดณเดพเดฃเต เดŽเดตเดฟเดŸเต‡เด•เตเด•เดพเดฃเต เดชเต‹เด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด…เดคเตเดฐ เดชเดฐเดฟเดšเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดคเดตเตผเด•เตเด•เดพเดฏเดฟ, เดžเดพเตป เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเด‚: in .text ะธ .rodata เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดธเตเดฅเดฟเดฐเดพเด™เตเด•เด™เตเด™เดณเตเด‚ (เดเด•เดฆเต‡เดถเด‚ เดชเดฑเดžเตเดžเดพเตฝ, เดตเดพเดฏเดจ เดฎเดพเดคเตเดฐเด‚ เดกเดพเดฑเตเดฑ) เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต .data เดฎเดพเดฑเตเดฑเดพเดตเตเดจเตเดจ เดกเดพเดฑเตเดฑ เด‰เดฃเตเดŸเต .bss "เดชเต‚เดœเตเดฏเด‚" เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด‡เดŸเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต (เดˆ เดตเดฟเดญเดพเด—เด‚ RAM-เดฒเต‡เด•เตเด•เต "เดชเต‹เด•เตเด‚").

เดจเดฒเตเดฒ เดตเดพเตผเดคเตเดค เด…เดคเดพเดฃเต .data/.bss เดฏเต‹เดœเดฟเด•เตเด•เดฃเด‚, เดชเด•เตเดทเต‡ เด•เต‚เดŸเต† .text เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเต 1MiB เดฎเต†เดฎเตเดฎเดฑเดฟ เดฎเดพเดคเตเดฐเดฎเต‡เดฏเตเดณเตเดณเต‚ เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด‚. เดชเตเดฑเดคเตเดคเต‡เด•เตเด•เต เดŽเดฑเดฟเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚ .text เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดšเดฟเดคเตเดฐเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเดชเตเดชเดฟเตฝ เด’เดฐเต SD เด•เดพเตผเดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต, เดŽเดจเตเดจเดพเตฝ fruits.png เดจเต เดเด•เดฆเต‡เดถเด‚ 330KiB เดญเดพเดฐเดฎเตเดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เด‡เดคเต เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ: เดฎเดฟเด•เตเด•เดคเตเด‚ .text เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ OpenCV เด•เต‹เดกเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดตเดฒเดฟเดฏเดคเต‹เดคเดฟเตฝ, เด’เดฐเต เด•เดพเดฐเตเดฏเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเตเดณเตเดณเต‚ - เด•เต‹เดกเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เด‚ QSPI เดซเตเดฒเดพเดทเต เดกเตเดฐเตˆเดตเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต (เดธเดฟเดธเตเดฑเตเดฑเด‚ เดฌเดธเดฟเดฒเต‡เด•เตเด•เต เดฎเต†เดฎเตเดฎเดฑเดฟ เดฎเดพเดชเตเดชเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด‡เดคเดฟเดจเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดฎเต‹เดกเต เด‰เดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเดฑเดฟเดจเต เดˆ เดกเดพเดฑเตเดฑ เดจเต‡เดฐเดฟเดŸเตเดŸเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚). เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด’เดฐเต เดชเตเดฐเดถเตเดจเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต: เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เด‰เดชเด•เดฐเดฃเด‚ เดฑเต€เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดค เด‰เดŸเตป เดคเดจเตเดจเต† QSPI เดซเตเดฒเดพเดทเต เดกเตเดฐเตˆเดตเดฟเดจเตเดฑเต† เดฎเต†เดฎเตเดฎเดฑเดฟ เดฒเดญเตเดฏเดฎเดฒเตเดฒ (เดฎเต†เดฎเตเดฎเดฑเดฟ-เดฎเดพเดชเตเดชเต เดšเต†เดฏเตเดค เดฎเต‹เดกเต เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เดฃเด‚), เดฐเดฃเตเดŸเดพเดฎเดคเดพเดฏเดฟ, เดˆ เดฎเต†เดฎเตเดฎเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดˆ เดฎเต†เดฎเตเดฎเดฑเดฟ "เดซเตเดฒเดพเดทเต" เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด…เดธเดพเดงเตเดฏเดฎเดพเดฃเต เดธเดพเดงเดพเดฐเดฃ เดฌเต‚เดŸเตเดŸเตเดฒเต‹เดกเตผ.

เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚ QSPI-เดฏเดฟเดฒเต‡เด•เตเด•เต เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดธเตเดตเดฏเด‚ เดŽเดดเตเดคเดฟเดฏ เดฌเต‚เดŸเตเดŸเตเดฒเต‹เดกเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดซเตเดฒเดพเดทเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต, เด…เดคเต TFTP เดตเดดเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฌเตˆเดจเดฑเดฟ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เดซเดฒเด‚

เดˆ เดฒเตˆเดฌเตเดฐเดฑเดฟ เดŽเด‚เดฌเต‹เด•เตเดธเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด†เดถเดฏเด‚ เดเด•เดฆเต‡เดถเด‚ เด’เดฐเต เดตเตผเดทเด‚ เดฎเตเดฎเตเดชเต เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดชเดฒ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เด…เดคเต เดตเต€เดฃเตเดŸเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ เดฎเดพเดฑเตเดฑเดฟเดตเดšเตเดšเต. เด…เดตเดฏเดฟเดฒเตŠเดจเตเดจเต libstdc++, เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃเดฏเดพเดฃเต. เดŽเด‚เดฌเต‹เด•เตเดธเดฟเดฒเต† C++ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดŸเต† เดชเตเดฐเดถเตเดจเด‚ เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เดชเตเดชเตเดฑเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดˆ เดฒเตˆเดฌเตเดฐเดฑเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเดฐเดฟเดงเดฟ เดตเดฐเต† เดˆ เดชเดฟเดจเตเดคเตเดฃ เดจเต‡เดŸเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดžเตเดžเตเดตเต†เดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เดžเดพเตป เด‡เดตเดฟเดŸเต† เดชเดฑเดฏเต‚ :)

เด’เดŸเตเดตเดฟเตฝ, เดˆ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดŸเต (เด“เดชเตเดชเตบเดธเดฟเดตเดฟ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เตเดฑเดžเตเดžเดคเต เดฎเดคเดฟ), เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. Canny เดซเดฟเตฝเดŸเตเดŸเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดคเดฟเดฐเตเด•เตพ เดคเดฟเดฐเดฏเดพเตป เดฌเต‹เตผเดกเดฟเดจเต 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 เดซเตเดฒเดพเดทเต เดกเตเดฐเตˆเดตเดฟเดฒเต‡เด•เตเด•เต 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

เดŽเด‚เดฌเต‹เด•เตเดธเดฟเตฝ (เด…เดคเดพเดฏเดคเต เดฌเต‚เดŸเตเดŸเตเดฒเต‹เดกเดฑเดฟเตฝ) เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต (เดธเต†เตผเดตเดฑเดฟเดจเต 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•