简介
ikipc是picomax SDK 的主要摄像头程序,对摄像头开发有比较打的参考价值。
文件目录结构
rkipc/
├── Makefile # 主Makefile build.sh就是调用它进行编译
└── rkipc # rkipc的主要代码
├── CMakeLists.txt # 主要调用这个生成真正的Makefile来编译
├── common
│ ├── common.c
│ ├── common.h
│ ├── event
│ │ ├── event.c
│ │ └── event.h
│ ├── isp
│ │ ├── rk3588
│ │ ├── rv1106
│ │ └── rv1126
│ ├── ivm
│ │ ├── event.c
│ │ ├── event.h
│ │ ├── face_landmark5.data
│ │ ├── ivm_dependent.h
│ │ └── object_detection_ipc.data
│ ├── log.h
│ ├── network
│ │ ├── gbk_to_utf8.c
│ │ ├── gbk_to_utf8.h
│ │ ├── Hostapd.c
│ │ ├── Hostapd.h
│ │ ├── net_main_test
│ │ ├── network.c
│ │ ├── network.h
│ │ ├── ntp.c
│ │ ├── ntp.h
│ │ ├── RK_encode.c
│ │ ├── RK_encode.h
│ │ ├── Rk_softap.h
│ │ ├── Rk_wifi.c
│ │ ├── Rk_wifi.h
│ │ ├── slog.h
│ │ ├── utf8_to_gbk.c
│ │ ├── utf8_to_gbk.h
│ │ ├── utility.c
│ │ ├── utility.h
│ │ └── wpa_ctrl.h
│ ├── osd
│ │ ├── bmp_reader.c
│ │ ├── bmp_reader.h
│ │ ├── color_table.c
│ │ ├── color_table.h
│ │ ├── draw_paint.c
│ │ ├── draw_paint.h
│ │ ├── font_factory.c
│ │ ├── font_factory.h
│ │ ├── image.bmp
│ │ ├── osd.c
│ │ ├── osd_common.h
│ │ ├── osd.h
│ │ ├── simsun_cn_3000.ttf
│ │ ├── simsun_cn.ttc
│ │ └── simsun_en.ttf
│ ├── param
│ │ ├── dictionary.c
│ │ ├── dictionary.h
│ │ ├── iniparser.c
│ │ ├── iniparser.h
│ │ ├── param.c
│ │ └── param.h
│ ├── region_clip
│ │ ├── region_clip.c
│ │ └── region_clip.h
│ ├── rockiva
│ │ ├── rockiva.c
│ │ └── rockiva.h
│ ├── roi
│ │ ├── roi.c
│ │ └── roi.h
│ ├── rtmp
│ │ ├── rtmp.c
│ │ └── rtmp.h
│ ├── socket_server
│ │ ├── server.c
│ │ ├── server.h
│ │ ├── socket.c
│ │ └── socket.h
│ ├── speaker_test.wav
│ ├── storage
│ │ ├── storage.c
│ │ └── storage.h
│ ├── system
│ │ ├── system.c
│ │ └── system.h
│ ├── sysutil
│ │ ├── iio.c
│ │ ├── iio.h
│ │ ├── rk_adc.c
│ │ ├── rk_adc.h
│ │ ├── rk_sysfs.c
│ │ └── rk_sysfs.h
│ ├── tuya_ipc
│ │ ├── 4.1.1
│ │ └── 5.5.29
│ └── vendor_storage
│ ├── vendor_storage.c
│ └── vendor_storage.h
├── docs # 文档
│ ├── resources
│ │ └── rkipc-framework.png
│ └── Rockchip_Developer_Guide_Linux_RKIPC_CN.md # 主要参考
├── format.sh
├── lib
│ ├── aarch64-rockchip1031-linux-gnu
│ │ └── libwpa_client.so
│ ├── arm-rockchip830-linux-gnueabihf
│ │ ├── libivm_share.so
│ │ ├── libmbedtls.a
│ │ ├── librknn_api.so
│ │ ├── libtuya_ipc.a
│ │ └── libwpa_client.so
│ └── arm-rockchip830-linux-uclibcgnueabihf
│ ├── libtuya_iot.a
│ └── libwpa_client.so
├── LICENSE
└── src # 各个产品线的代码,这里只列出rv1106_ipc的
....
├── rv1106_ipc
│ ├── audio
│ ├── CMakeLists.txt
│ ├── main.c
│ ├── rkipc-300w.ini
│ ├── rkipc-400w.ini
│ ├── rkipc-500w.ini
│ ├── RkLunch.sh
│ ├── RkLunch-stop.sh
│ └── video
...
编译
Makefile中最重要的是
rkipc-build:
@echo "RK_APP_CHIP is $(RK_APP_CHIP)"
@echo "RK_APP_TYPE is $(RK_APP_TYPE)"
rm -rf $(PKG_BIN) $(PKG_BUILD); \
mkdir -p $(PKG_BIN);
mkdir -p $(PKG_BUILD);
pushd $(PKG_BUILD)/; \
rm -rf CMakeCache.txt; \
cmake $(CURRENT_DIR)/$(PKG_NAME)/ \
-DCMAKE_C_COMPILER=$(RK_APP_CROSS)-gcc \
-DCMAKE_CXX_COMPILER=$(RK_APP_CROSS)-g++ \
-DCMAKE_INSTALL_PREFIX="$(CURRENT_DIR)/$(PKG_BIN)" \
-DCMAKE_COLOR_MAKEFILE=OFF \
-DCMAKE_SYSTEM_NAME=Linux \
$(RK_RKIPC_CONFIG) \
$(PKG_CONF_OPTS) ;\
make -j$(RK_APP_JOBS) || exit -1; \
make install; \
popd;
$(call MAROC_COPY_PKG_TO_APP_OUTPUT, $(RK_APP_OUTPUT), $(PKG_BIN))
在log里面
RK_APP_CHIP is rv1106
RK_APP_TYPE is RKIPC_RV1106
...
DCOMPILE_FOR_RV1106_IPC=ON
在rkipc/CMakeLists.txt中
if(COMPILE_FOR_RV1106_IPC)
add_subdirectory(src/rv1106_ipc)
endif()
会把src/rv1106_ipc加进去编译。
然后就是删除创建目录,对每个文件进行编译,链接最后生成相应的可执行文件。