STM32F7-Discovery рд╡рд░ OpenCV

STM32F7-Discovery рд╡рд░ OpenCV рдореА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ рдПрдореНрдмреЙрдХреНрд╕, рдЖрдгрд┐ рдпрд╛ рд▓реЗрдЦрд╛рдд рдореА STM32746G рдмреЛрд░реНрдбрд╡рд░ OpenCV рдХрд╕реЗ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓реЗрди.

рддреБрдореНрд╣реА рд╕рд░реНрдЪ рдЗрдВрдЬрд┐рдирдордзреНрдпреЗ тАЬрдУрдкрдирд╕реАрд╡реНрд╣реА рдСрди STM32 рдмреЛрд░реНрдбтАЭ рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рдЯрд╛рдЗрдк рдХреЗрд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реА рд▓рд╛рдпрдмреНрд░рд░реА STM32 рдмреЛрд░реНрдб рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рд╡рд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реЗ рдХрд╛рд╣реА рд▓реЛрдХ рд╕рд╛рдкрдбрддреАрд▓.
рдЕрд╕реЗ рдмрд░реЗрдЪ рд╡реНрд╣рд┐рдбрд┐рдУ рдЖрд╣реЗрдд рдЬреЗ рдирд╛рд╡рд╛рдиреБрд╕рд╛рд░ рдард░рд╡реВрди, рдХрд╛рдп рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рддреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ, рдкрд░рдВрддреБ рд╕рд╛рдорд╛рдиреНрдпрддрдГ (рдореА рдкрд╛рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд╡реНрд╣рд┐рдбрд┐рдУрдВрдордзреНрдпреЗ) STM32 рдмреЛрд░реНрдбрд╡рд░, рдХреЕрдореЗрд░рд╛рдордзреВрди рдлрдХреНрдд рдкреНрд░рддрд┐рдорд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реА рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреНрд░реАрдирд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЭрд╛рд▓рд╛, рдЖрдгрд┐ рдкреНрд░рддрд┐рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рддрдГ рдПрдХрддрд░ рдирд┐рдпрдорд┐рдд рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдмреЛрд░реНрдбрд╡рд░ рдХреЗрд▓реА рдЧреЗрд▓реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ).

рд╣реЗ рдХрдареАрдг рдХрд╛ рдЖрд╣реЗ?

рд╢реЛрдз рдХреНрд╡реЗрд░реАрдВрдЪреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрджреНрд╡рд╛рд░реЗ рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реА рдЬрд╛рддреЗ рдХреА OpenCV рд╣реА рд╕рд░реНрд╡рд╛рдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдВрдЧрдгрдХ рджреГрд╖реНрдЯреА рд▓рд╛рдпрдмреНрд░рд░реА рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрдзрд┐рдХ рд╡рд┐рдХрд╛рд╕рдХ рддреНрдпрд╛рд╕ рдкрд░рд┐рдЪрд┐рдд рдЖрд╣реЗрдд рдЖрдгрд┐ рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рд╡рд░ рдбреЗрд╕реНрдХрдЯреЙрдк-рд░реЗрдбреА рдХреЛрдб рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕реБрд▓рдн рдХрд░рддреЗ. рдкрд░рдВрддреБ рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрджреНрдпрд╛рдк рд▓реЛрдХрдкреНрд░рд┐рдп рддрдпрд╛рд░ рдкрд╛рдХрдХреГрддреА рдХрд╛ рдирд╛рд╣реАрдд?

рд▓рд╣рд╛рди рд╢реЙрд▓рд╡рд░ OpenCV рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рд╕рдорд╕реНрдпрд╛ рджреЛрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ:

  • рдЬрд░ рддреБрдореНрд╣реА рд▓рд╛рдпрдмреНрд░рд░реА рдЕрдЧрджреА рдХрдореАрдд рдХрдореА рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреНрдпрд╛ рд╕рдВрдЪрд╛рд╕рд╣ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реА, рддрд░ рддреА рдлрдХреНрдд рддреНрдпрд╛рдЪ STM32F7Discovery рдЪреНрдпрд╛ рдлреНрд▓реЕрд╢ рдореЗрдорд░реАрдордзреНрдпреЗ рдмрд╕рдгрд╛рд░ рдирд╛рд╣реА (рдЕрдЧрджреА OS рд╡рд┐рдЪрд╛рд░рд╛рдд рди рдШреЗрддрд╛) рдЦреВрдк рдореЛрдареНрдпрд╛ рдХреЛрдбрдореБрд│реЗ (рдЕрдиреЗрдХ рдореЗрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рд╕реВрдЪрдирд╛)
  • рд▓рд╛рдпрдмреНрд░рд░реА рд╕реНрд╡рддрдГ C++ рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ
    • рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░рдирдЯрд╛рдЗрдорд╕рд╛рдареА рд╕рдорд░реНрдерди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рдЕрдкрд╡рд╛рдж рдЗ.)
    • LibC/Posix рд╕рд╛рдареА рдереЛрдбреЗ рд╕рдорд░реНрдерди, рдЬреЗ рд╕рд╣рд╕рд╛ рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА OS рдордзреНрдпреЗ рдЖрдврд│рддреЗ - рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдорд╛рдирдХ рдкреНрд▓рд╕ рд▓рд╛рдпрдмреНрд░рд░реА рдЖрдгрд┐ рдПрдХ рдорд╛рдирдХ STL рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдпрдмреНрд░рд░реА (рд╡реЗрдХреНрдЯрд░, рдЗ.) рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдПрдореНрдмреЙрдХреНрд╕рд╡рд░ рдкреЛрд░реНрдЯ рдХрд░рдд рдЖрд╣реЗ

рдиреЗрд╣рдореАрдкреНрд░рдорд╛рдгреЗ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рдХреЛрдгрддреЗрд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреЛрд░реНрдЯ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА рдЬреНрдпрд╛ рдлреЙрд░реНрдордордзреНрдпреЗ рддреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рддреЛ рдПрдХ рдЪрд╛рдВрдЧрд▓реА рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдпрд╛рдордзреНрдпреЗ рдХреЛрдгрддреАрд╣реА рд╕рдорд╕реНрдпрд╛ рдирд╛рд╣реА - рд╕реНрддреНрд░реЛрдд рдХреЛрдб рд╡рд░ рдЖрдврд│реВ рд╢рдХрддреЛ github, рд▓рд╛рдпрдмреНрд░рд░реА рдиреЗрд╣рдореАрдЪреНрдпрд╛ cmake рд╕рд╣ GNU/Linux рдЕрдВрддрд░реНрдЧрдд рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ.

рдЪрд╛рдВрдЧрд▓реА рдмрд╛рддрдореА рдЕрд╢реА рдЖрд╣реЗ рдХреА 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 рдЖрдгрд┐ .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 рдЕрдЬреВрдирд╣реА рдмрд░реЗрдЪ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдзреАрдЪ рдпрд╢рд╛рдЪреА рдЖрд╢рд╛ рджреЗрддреЗ.

рдПрдореБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рд╛

рдПрдореБрд▓реЗрдЯрд░рд╡рд░ рдбреАрдмрдЧ рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдкреНрд░рдердо рд▓рд╛рдпрдмреНрд░рд░реА qemu рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛. рдПрдХ рдЕрдиреБрдХрд░рдгреАрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдореНрд╣рдгреВрди, рдореА рдЗрдВрдЯрд┐рдЧреНрд░реЗрдЯрд░ / CP рдирд┐рд╡рдбрд▓реЗ, рдХрд╛рд░рдг рдкреНрд░рдердо, рддреЗ рдПрдЖрд░рдПрдо рджреЗрдЦреАрд▓ рдЖрд╣реЗ рдЖрдгрд┐ рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рдПрдореНрдмреЙрдХреНрд╕ рдпрд╛ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрдЙрдЯрдкреБрдЯрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ.

рдПрдореНрдмреЙрдХреНрд╕рдордзреНрдпреЗ рдмрд╛рд╣реНрдп рд▓рд╛рдпрдмреНрд░рд░реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ, рддреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдЖрдореНрд╣реА рдУрдкрдирд╕реАрд╡реНрд╣реА рдореЙрдбреНрдпреВрд▓ рдореНрд╣рдгреВрди рдЬреЛрдбрддреЛ (рд╕реНрдерд┐рд░ рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд "рдХрд┐рдорд╛рди" рдмрд┐рд▓реНрдбрд╕рд╛рдареА рд╕рд░реНрд╡ рд╕рдорд╛рди рдкрд░реНрдпрд╛рдп рдкрд╛рд╕ рдХрд░рддреЛ), рддреНрдпрд╛рдирдВрддрд░ рдореА рдПрдХ рд╕рд╛рдзрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛрдбрддреЛ рдЬреЛ рдпрд╛рд╕рд╛рд░рдЦрд╛ рджрд┐рд╕рддреЛ:

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. microSD рдХрд╛рд░реНрдб рд╕реНрд▓реЙрдЯ

рдкреНрд░рддрд┐рдорд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА 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++ рд╕рдорд░реНрдердирд╛рдЪреА рд╕рдорд╕реНрдпрд╛ рдпрд╛ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╡реНрдпрд╛рдкреНрддреАрдЪреНрдпрд╛ рдкрд▓реАрдХрдбреЗ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдореА рдлрдХреНрдд рдПрд╡рдвреЗрдЪ рд╕рд╛рдВрдЧреЗрди рдХреА рдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрд▓рд╛ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдгрд╛рдд рд╣реЗ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ ЁЯЩВ

рд╕рд░рддреЗрд╢реЗрд╡рдЯреА, рдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрд╡рд░ рдорд╛рдд рдХреЗрд▓реА рдЧреЗрд▓реА (рдХрд┐рдорд╛рди OpenCV рдЙрджрд╛рд╣рд░рдгрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ), рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд▓реВ рдЭрд╛рд▓реЗ. рдХреЕрдиреА рдлрд┐рд▓реНрдЯрд░ рд╡рд╛рдкрд░реВрди рд╕реАрдорд╛ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдмреЛрд░реНрдбрд▓рд╛ 40 рд▓рд╛рдВрдм рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд. рд╣реЗ рдЕрд░реНрдерд╛рддрдЪ рдЦреВрдк рд▓рд╛рдВрдм рдЖрд╣реЗ (рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рд▓рд╛ рдХрд╕реЗ рдЕрдиреБрдХреВрд▓ рдХрд░рд╛рдпрдЪреЗ рдпрд╛рд╡рд░ рд╡рд┐рдЪрд╛рд░ рдЖрд╣реЗрдд, рдпрд╢ рдорд┐рд│рд╛рд▓реНрдпрд╛рд╕ рдпрд╛рдмрджреНрджрд▓ рд╕реНрд╡рддрдВрддреНрд░ рд▓реЗрдЦ рд▓рд┐рд╣рд┐рдгреЗ рд╢рдХреНрдп рд╣реЛрдИрд▓).

STM32F7-Discovery рд╡рд░ 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 (рдкреНрд░рд╛рд░рдВрднрд╛рдЪрд╛ рдкрддреНрддрд╛ рдкреНрд░рддрд┐рдореЗрдЪреНрдпрд╛ рджреБрд╕рд▒реНрдпрд╛ рейреи-рдмрд┐рдЯ рд╢рдмреНрджрд╛рдд рдмрд╕рддреЛ); рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдЯреЕрдХ рдзреНрд╡рдЬрд╛рдВрдХрд┐рдд рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ -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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛