Π― ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΡΠ»ΠΈ Π²Π±ΠΈΡΡ Π² ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΈΠΊ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ «OpenCV on STM32 board», ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΠ°Ρ
STM32 ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ
.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠΎΡΠΎΡΡΠ΅, ΡΡΠ΄Ρ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ (Π²ΠΎ Π²ΡΠ΅Ρ
Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΠΈΠ΄Π΅Π») Π½Π° ΠΏΠ»Π°ΡΠ΅ STM32 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Ρ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π½Π° ΡΠΊΡΠ°Π½, Π° ΡΠ°ΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π΅Π»Π°Π»Π°ΡΡ Π»ΠΈΠ±ΠΎ Π½Π° ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π»ΠΈΠ±ΠΎ Π½Π° ΠΏΠ»Π°ΡΠ°Ρ
ΠΏΠΎΠΌΠΎΡΠ½Π΅Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Raspberry Pi).
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ?
ΠΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ OpenCV β ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ, Π° Π·Π½Π°ΡΠΈΡ, Ρ Π½Π΅ΠΉ Π·Π½Π°ΠΊΠΎΠΌΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π΄Π° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ Π΄Π»Ρ Π΄Π΅ΡΠΊΡΠΎΠΏΠ° ΠΊΠΎΠ΄ Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΎ ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅Ρ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π³ΠΎΡΠΎΠ²ΡΡ ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OpenCV Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΠ»Π°ΡΠΊΠ°Ρ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π΄Π²ΡΠΌΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈΡΠΌΠΈ:
- ΠΡΠ»ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π°ΠΆΠ΅ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π²ΠΎ ΡΠ»ΡΡ-ΠΏΠ°ΠΌΡΡΡ ΡΠΎΠΉ ΠΆΠ΅ STM32F7Discovery ΠΎΠ½Π° ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π²Π»Π΅Π·Π΅Ρ (Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΡΡΡΡΠ° ΠΠ‘) ΠΈΠ·-Π·Π° ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ)
- Π‘Π°ΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° C++, Π° Π·Π½Π°ΡΠΈΡ
- ΠΡΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ»ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π½ΡΠ°ΠΉΠΌΠ° (ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Ρ.ΠΏ.)
- ΠΠ°Π»ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ LibC/Posix, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π΅ΡΡΡ Π² ΠΠ‘ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ β Π½ΡΠΆΠ½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠ»ΡΡΠΎΠ² ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² STL (vector ΠΈ Ρ.Π΄.)
ΠΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Embox
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΠ°ΡΡ Π΅Ρ Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠΎ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΡΠΈΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ β ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π°
ΠΠ· Ρ ΠΎΡΠΎΡΠΈΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ β 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 ΠΠΈΠ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ»ΠΈΠ½ΠΊΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ΄Π° ΡΡΠ°Π½Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠΊΠΈΠ½ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°Π»ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ (ΠΊΠΎΡΠΎΡΡΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ Π²Π΅ΡΡΠΈΡ 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 ΠΠΈΠ ΠΊΠΎΠ΄Π° β ΡΡΠΎ Π²ΡΡ Π΅ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΡΠΆΠ΅ Π΄Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ΄Ρ Π½Π° ΡΡΠΏΠ΅Ρ
.
ΠΠ°ΠΏΡΡΠΊ Π² ΡΠΌΡΠ»ΡΡΠΎΡΠ΅
ΠΠ° ΡΠΌΡΠ»ΡΡΠΎΡΠ΅ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ±Π΅Π΄ΠΈΠΌΡΡ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° qemu. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΌΡΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Ρ Π²ΡΠ±ΡΠ°Π» Integrator/CP, Ρ.ΠΊ. Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΡΠΎΠΆΠ΅ ARM, Π° Π²ΠΎ-Π²ΡΠΎΡΡΡ , Embox ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ Π³ΡΠ°ΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
Π Embox Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ 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()
ΡΠΌΠ΅Π΅Ρ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ QT, GTK ΠΈ Windows, ΠΊΠΎΡΠΎΡΡΡ
, ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ, Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ Π΄Π»Ρ STM32 ΡΠΎΡΠ½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, QT ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° STM32F7Discovery, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠΆΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ π
ΠΠΎΡΠ»Π΅ Π½Π΅Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡΠΌΠ°ΡΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΠ° Π³ΡΠ°Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΠ°ΠΏΡΡΠΊ Π½Π° STM32F7Discovery
ΠΠ° 32F746GDISCOVERY Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
- 320KiB ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ
- 1MiB ΡΠ»ΡΡ-ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·Π°
- 8MiB SDRAM
- 16MiB QSPI NAND-ΡΠ»ΡΡΠΊΠ°
- Π Π°Π·ΡΡΠΌ Π΄Π»Ρ microSD-ΠΊΠ°ΡΡΠΎΡΠΊΠΈ
SD-ΠΊΠ°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΠΈΡΠΏΠ»Π΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 480×272, Π° Π·Π½Π°ΡΠΈΡ, ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΠ΄ ΡΡΠ΅ΠΉΠΌΠ±ΡΡΡΠ΅Ρ ΡΠΎΡΡΠ°Π²ΠΈΡ 522 240 Π±Π°ΠΉΡ ΠΏΡΠΈ Π³Π»ΡΠ±ΠΈΠ½Π΅ 32 Π±ΠΈΡΠ°, Ρ.Π΅. ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ±ΡΡΡΠ΅Ρ ΠΈ ΠΊΡΡΡ (ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄Π»Ρ OpenCV, ΡΡΠΎΠ±Ρ Ρ
ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΡΡΠΊΡΡΡ) Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ Π² SDRAM, Π²ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ (ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΠ΄ ΡΡΡΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π½ΡΠΆΠ΄Ρ) ΠΎΡΠΏΡΠ°Π²ΠΈΡΡΡ Π² RAM.
ΠΡΠ»ΠΈ Π²Π·ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ STM32F7Discovery (Π²ΡΠΊΠΈΠ½ΡΡΡ Π²ΡΡ ΡΠ΅ΡΡ, Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠΊΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈ Ρ.Π΄.) ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ΄Π° OpenCV Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
text data bss dec hex filename
2876890 459208 312736 3648834 37ad42 build/base/bin/embox
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ ΠΊΡΠ΄Π° ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠ½Ρ: Π² .text
ΠΈ .rodata
Π»Π΅ΠΆΠ°Ρ ΠΈΠ½ΡΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ (Π³ΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ, readonly-Π΄Π°Π½Π½ΡΠ΅), Π² .data
Π»Π΅ΠΆΠ°Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅, Π² .bss
Π»Π΅ΠΆΠΈΡ «Π·Π°Π½ΡΠ»ΡΠ½Π½ΡΠ΅» ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΌ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½ΡΠΆΠ½ΠΎ ΠΌΠ΅ΡΡΠΎ (ΡΡΠ° ΡΠ΅ΠΊΡΠΈΡ «ΠΎΡΠΏΡΠ°Π²ΠΈΡΡΡ» Π² RAM).
Π₯ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ .data
/.bss
Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ, Π° Π²ΠΎΡ Ρ .text
Π±Π΅Π΄Π° β ΠΏΠΎΠ΄ ΠΎΠ±ΡΠ°Π· Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ 1MiB ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠΆΠ½ΠΎ Π²ΡΠΊΠΈΠ½ΡΡΡ ΠΈΠ· .text
ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ ΡΠΈΡΠ°ΡΡ Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ SD-ΠΊΠ°ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅, Π½ΠΎ fruits.png Π²Π΅ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 330KiB, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠΎ Π½Π΅ ΡΠ΅ΡΠΈΡ: Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ .text
ΡΠΎΡΡΠΎΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π° OpenCV.
ΠΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΡΡΡΡΡ, ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ β Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° Π½Π° QSPI-ΡΠ»ΡΡΠΊΡ (Ρ Π½Π΅Ρ Π΅ΡΡΡ ΡΠΏΠ΅Ρ. ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ ΠΌΡΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠΈΠ½Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠΌ Π½Π°ΠΏΡΡΠΌΡΡ). ΠΡΠΈ ΡΡΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΏΠ°ΠΌΡΡΡ QSPI-ΡΠ»ΡΡΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ memory-mapped-ΡΠ΅ΠΆΠΈΠΌ), Π²ΠΎ-Π²ΡΠΎΡΡΡ , Π½Π΅Π»ΡΠ·Ρ «ΠΏΡΠΎΡΠΈΡΡ» ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ.
Π ΠΈΡΠΎΠ³Π΅ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ»ΠΈΠ½ΠΊΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π² QSPI, Π° ΠΏΡΠΎΡΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΡΠΌ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ ΠΏΠΎ TFTP.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΠ΄Π΅Ρ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π½Π° Embox ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄, Π½ΠΎ ΡΠ°Π· Π·Π° ΡΠ°Π·ΠΎΠΌ ΡΡΠΎ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π»ΠΎΡΡ ΠΈΠ·-Π·Π° ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½. ΠΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° libstdc++ ΠΈ standart template library. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ C++ Π² Embox Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ Π½Π°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΎΠ±ΡΡΠΌΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ π
Π ΠΈΡΠΎΠ³Π΅ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π½Ρ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° OpenCV), ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΠ»ΡΡ. 40 Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΠΊΡΠ½Π΄ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Ρ ΠΏΠ»Π°ΡΡ ΠΏΠΎΠΈΡΠΊ Π³ΡΠ°Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠΎΠΌ ΠΡΠ½Π½ΠΈ. ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ (Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΎΠ± ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π°).
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° OpenCV Π½Π° STM32, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠ° ΡΠ΅Π»Ρ Π±ΡΠ»Π° Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ°, ΡΡΠ°!
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: ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ELF ΡΠ΅ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² QSPI, Π² qspi.bin
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-ΡΠ΅ΠΊΡΠ½Π΄Π½ΡΠΌ ΠΏΠΎΠΈΡΠΊΠΎΠΌ Π³ΡΠ°Π½ΠΈΡ π
ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΉΠ΄ΡΡ Π½Π΅ ΡΠ°ΠΊ β ΠΏΠΈΡΠΈΡΠ΅ issue Π²
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com