1. 编译选项
message(STATUS "Hi 3519AV100 cross compiling...")
set(CMAKE_C_COMPILER "arm-himix200-linux-gcc")
set(CMAKE_CXX_COMPILER "arm-himix200-linux-g++")
set(CMAKE_STRIP "arm-himix200-linux-strip")
#add_compile_options(-Wall -O2 -g -Wpsabi -fno-aggressive-loop-optimizations)
#add_compile_options(-Dhi3519av100 -DHI_XXXX -DISP_V2)
#add_compile_options(-mcpu=cortex-a53 -mfloat-abi=softfp -mfpu=neon-vfpv4)
#add_compile_options(-ffunction-sections -fdata-sections -fstack-protector -fPIC)
#add_compile_options(-DHI_RELEASE -Wno-error=implicit-function-declaration)
#add_compile_options(-DVER_X=1 -DVER_Y=0 -DVER_Z=0 -DVER_P=0 -DVER_B=10)
#add_compile_options(-DUSER_BIT_32 -DKERNEL_BIT_32 -Wno-date-time)
#add_compile_options(-DSENSOR0_TYPE=SONY_IMX334_MIPI_8M_30FPS_12BIT)
#add_compile_options(-DSENSOR1_TYPE=SONY_IMX290_SLAVE_MIPI_2M_60FPS_10BIT)
#add_compile_options(-DSENSOR2_TYPE=SONY_IMX290_SLAVE_MIPI_2M_60FPS_10BIT)
#add_compile_options(-DSENSOR3_TYPE=SONY_IMX290_SLAVE_MIPI_2M_60FPS_10BIT)
#add_compile_options(-DSENSOR4_TYPE=SONY_IMX334_MIPI_8M_30FPS_12BIT)
#add_compile_options(-DHI_ACODEC_TYPE_INNER -DHI_ACODEC_TYPE_HDMI -DSMP)
对一段视频处理(上海热像 384*288)
- 带有所有的编译选项 0.112 s/f
- 去掉所有编译选项,如上图。0.722 s/f
- 添加了这一条:add_compile_options(-Wall -O2 -g -Wpsabi -fno-aggressive-loop-optimizations) 0.502 s/f
- add_compile_options(-Wall -O2 -g -Wpsabi -fno-aggressive-loop-optimizations)
add_compile_options(-mcpu=cortex-a53 -mfloat-abi=softfp -mfpu=neon-vfpv4 -fPIC) [fPIC必须假设,否则出错]
速度为0.112 s/f - 改为:
add_compile_options(-Wall -O2 -g -Wpsabi -fno-aggressive-loop-optimizations)
add_compile_options(-mfloat-abi=softfp -mfpu=neon-vfpv4 -fPIC)
即去掉:-mcpu=cortex-a53
速度为0.117 s/f 【速度略有下降】 - 改为:
add_compile_options(-Wall -O2 -g -Wpsabi -fno-aggressive-loop-optimizations)
add_compile_options(-mfpu=neon-vfpv4 -fPIC)
速度为0.502 s/f 【说明 -mfloat-abi=softfp是有作用的】 - 改为:
add_compile_options(-O2 -mcpu=cortex-a53 -mfloat-abi=softfp -fPIC)
速度为0.112 s/f - 改为:
add_compile_options(-O3 -mcpu=cortex-a53 -mfloat-abi=softfp -fPIC)
速度为0.112 s/f (小数点后第四位比上面略差)
【总结】
- 我没有把所有编译选项一一测试。
- 我的程序不依赖任何华为的库和其他第三方。这种情况下,编译选项上面的6应该就可以了。
做strip可以减少文件的空间大小,但不能提高运行速度。
这篇文章谈了一些3519A编译选项的优化:
https://blog.youkuaiyun.com/JustDoIt_201603/article/details/103083962?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-13.control&dist_request_id=1619613455679_44023&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-13.control