华为海思HI3518E方案视频编解码传输
将SDK包拷贝到linux开发环境下并解压
参见“Hi3518EV20X/Hi3516CV200 SDK 安装以及升级使用说明.txt”文档初步部署环境
遇到问题:交叉变异工具链安装成功并导出环境变量,但仍无法运行
原因:ubuntu20.04默认不支持32位软件,需要安装32位兼容库
解决:使用aptitude方式安装
- sudo apt-get install aptitude
- sudo aptitude install lib32ncurses5-dev
- sudo aptitude install lib32z1
遇到问题:提示“arm-hisiv300-linux-gcc :command not found”
安装了32位库后使用“arm-hisiv300-linux-gcc -v”测试交叉编译工具链能够成功打印出版本信息,但是执行“sudo make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all”时仍然提示找“arm-hisiv300-linux-gcc command not found“
原因:“arm-hisiv300-linux-gcc -v”是在当前用户执行,而“sudo make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all”是在超级用户下执行,海思将交叉编译工具链导出环境变量脚本添加到“/etc/profile”文件末尾,通过命令“source /etc/profile”使得当前用户交叉编译工具链路径导出到环境变量了但是超级用户没有导出。
解决:切换到root用户下先执行命令“source /etc/profile”再编译
遇到问题:jffs2_tool相关编译报错
/usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.a(libmtd.o): in function `dev_node2num': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.c:444: undefined reference to `major' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.c:445: undefined reference to `minor' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.a(libmtd.o): in function `mtd_probe_node': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.c:1390: undefined reference to `major' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.c:1391: undefined reference to `minor' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.a(libmtd_legacy.o): in function `legacy_get_dev_info': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd_legacy.c:254: undefined reference to `major' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd_legacy.c:255: undefined reference to `minor' collect2: error: ld returned 1 exit status make[2]: *** [common.mk:71:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/flash_erase] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:libmtd.c没包含头文件
解决:使用man手册查寻major、minor。修改libmtd.c,添加头文件“#include <sys/sysmacros.h>”
再次编译,报错:
/usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd.a(libmtd_legacy.o): in function `legacy_get_dev_info': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd_legacy.c:254: undefined reference to `major' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/lib/libmtd_legacy.c:255: undefined reference to `minor' collect2: error: ld returned 1 exit status make[2]: *** [common.mk:71:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/flash_erase] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:跟上面一样没包含头文件
解决:修改libmtd_legacy.c,添加头文件“#include <sys/sysmacros.h>”
再次编译,报错:
/usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.o: in function `interpret_table_entry': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:468: undefined reference to `makedev' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:504: undefined reference to `makedev' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:511: undefined reference to `makedev' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.o: in function `write_special_file': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:945: undefined reference to `major' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:945: undefined reference to `minor' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.o: in function `recursive_populate_directory': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:1264: undefined reference to `minor' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:1264: undefined reference to `major' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:1274: undefined reference to `minor' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2.c:1274: undefined reference to `major' collect2: error: ld returned 1 exit status make[2]: *** [common.mk:71:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.jffs2] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:跟上面一样没包含头文件
解决:修改mkfs.jffs2c,添加头文件“#include <sys/sysmacros.h>”
再次编译,报错:
serve_image.c: In function ‘main’: serve_image.c:32:18: error: storage size of ‘hints’ isn’t known32 | struct addrinfo hints;| ^~~~~ serve_image.c:94:19: error: ‘AI_ADDRCONFIG’ undeclared (first use in this function)94 | hints.ai_flags = AI_ADDRCONFIG;| ^~~~~~~~~~~~~ serve_image.c:94:19: note: each undeclared identifier is reported only once for each function it appears in serve_image.c:97:8: warning: implicit declaration of function ‘getaddrinfo’ [-Wimplicit-function-declaration]97 | ret = getaddrinfo(argv[1], argv[2], &hints, &ai);| ^~~~~~~~~~~ serve_image.c:99:40: warning: implicit declaration of function ‘gai_strerror’; did you mean ‘strerror’? [-Wimplicit-function-declaration]99 | fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(ret));| ^~~~~~~~~~~~| strerror serve_image.c:99:34: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’ [-Wformat=]99 | fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(ret));| ~^ ~~~~~~~~~~~~~~~~~| | || | int| char *| %d serve_image.c:103:35: error: dereferencing pointer to incomplete type ‘struct addrinfo’103 | for (runp = ai; runp; runp = runp->ai_next) {| ^~ make[2]: *** [common.mk:83:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/serve_image.o] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:这个问题是网上找到答案的,究其原因,在于ubuntu操作系统版本太高,而SDK使用的mtd-utils版本太低导致
解决:思路有两个,一个是换一个高版本的mtd-utils,前面花那么多时间不是浪费了,果断换下一种方案,打开"/usr/include/netdb.h"文件,注释掉563行的“#ifdef __USE_XOPEN2K”和679行的“# endif ”[这里#endif花了好长时间才找到]
再次编译,还报错:
/usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/jffs2reader.o: in function `printdir': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/jffs2reader.c:358: undefined reference to `minor' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/jffs2reader.c:358: undefined reference to `major' collect2: error: ld returned 1 exit status make[2]: *** [common.mk:71:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/jffs2reader] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:问题还是头文件没包含
解决:修改jffs2reader.c,添加头文件“#include <sys/sysmacros.h>”
再次编译,继续报错:
In file included from mkfs.ubifs/devtable.c:47: mkfs.ubifs/devtable.c:240:10: error: called object ‘major’ is not a function or function pointer240 | name, major(nh_elt->dev), minor(nh_elt->dev));| ^~~~~ mkfs.ubifs/mkfs.ubifs.h:78:54: note: in definition of macro ‘dbg_msg’78 | printf("mkfs.ubifs: %s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__); \| ^~~~~~~~~~~ mkfs.ubifs/devtable.c:134:46: note: declared here134 | unsigned int mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;| ^~~~~ In file included from mkfs.ubifs/devtable.c:47: mkfs.ubifs/devtable.c:240:30: error: called object ‘minor’ is not a function or function pointer240 | name, major(nh_elt->dev), minor(nh_elt->dev));| ^~~~~ mkfs.ubifs/mkfs.ubifs.h:78:54: note: in definition of macro ‘dbg_msg’78 | printf("mkfs.ubifs: %s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__); \| ^~~~~~~~~~~ mkfs.ubifs/devtable.c:134:57: note: declared here134 | unsigned int mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;| ^~~~~ In file included from mkfs.ubifs/devtable.c:47: mkfs.ubifs/devtable.c:277:16: error: called object ‘major’ is not a function or function pointer277 | nm, major(nh_elt->dev), minor(nh_elt->dev));| ^~~~~ mkfs.ubifs/mkfs.ubifs.h:78:54: note: in definition of macro ‘dbg_msg’78 | printf("mkfs.ubifs: %s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__); \| ^~~~~~~~~~~ mkfs.ubifs/devtable.c:134:46: note: declared here134 | unsigned int mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;| ^~~~~ In file included from mkfs.ubifs/devtable.c:47: mkfs.ubifs/devtable.c:277:36: error: called object ‘minor’ is not a function or function pointer277 | nm, major(nh_elt->dev), minor(nh_elt->dev));| ^~~~~ mkfs.ubifs/mkfs.ubifs.h:78:54: note: in definition of macro ‘dbg_msg’78 | printf("mkfs.ubifs: %s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__); \| ^~~~~~~~~~~ mkfs.ubifs/devtable.c:134:57: note: declared here134 | unsigned int mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;| ^~~~~ make[2]: *** [common.mk:83:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.ubifs/devtable.o] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:问题还是头文件没包含
解决:修改devtable.c,添加头文件“#include <sys/sysmacros.h>”
再次编译,依旧报错:
mkfs.ubifs/hashtable/hashtable_itr.c:42:1: error: redefinition of ‘hashtable_iterator_key’42 | hashtable_iterator_key(struct hashtable_itr *i)| ^~~~~~~~~~~~~~~~~~~~~~ In file included from mkfs.ubifs/hashtable/hashtable_itr.c:5: mkfs.ubifs/hashtable/hashtable_itr.h:32:1: note: previous definition of ‘hashtable_iterator_key’ was here32 | hashtable_iterator_key(struct hashtable_itr *i)| ^~~~~~~~~~~~~~~~~~~~~~ mkfs.ubifs/hashtable/hashtable_itr.c:46:1: error: redefinition of ‘hashtable_iterator_value’46 | hashtable_iterator_value(struct hashtable_itr *i)| ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from mkfs.ubifs/hashtable/hashtable_itr.c:5: mkfs.ubifs/hashtable/hashtable_itr.h:41:1: note: previous definition of ‘hashtable_iterator_value’ was here41 | hashtable_iterator_value(struct hashtable_itr *i)| ^~~~~~~~~~~~~~~~~~~~~~~~ make[2]: *** [common.mk:83:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.ubifs/hashtable/hashtable_itr.o] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:hashtable_iterator_key函数和hashtable_iterator_value函数重复定义
解决:修改hashtable_itr.h文件,改为:void * hashtable_iterator_key(struct hashtable_itr *i); void * hashtable_iterator_value(struct hashtable_itr *i);
再次编译,继续报错,快要崩溃了:
ubi-utils/libubi.c: In function ‘vol_node2nums’: ubi-utils/libubi.c:385:10: error: called object ‘major’ is not a function or function pointer385 | major = major(st.st_rdev);| ^~~~~ ubi-utils/libubi.c:373:13: note: declared here373 | int i, fd, major, minor;| ^~~~~ ubi-utils/libubi.c:386:10: error: called object ‘minor’ is not a function or function pointer386 | minor = minor(st.st_rdev);| ^~~~~ ubi-utils/libubi.c:373:20: note: declared here373 | int i, fd, major, minor;| ^~~~~ ubi-utils/libubi.c: In function ‘dev_node2num’: ubi-utils/libubi.c:451:10: error: called object ‘major’ is not a function or function pointer451 | major = major(st.st_rdev);| ^~~~~ ubi-utils/libubi.c:441:9: note: declared here441 | int i, major, minor;| ^~~~~ ubi-utils/libubi.c:452:10: error: called object ‘minor’ is not a function or function pointer452 | minor = minor(st.st_rdev);| ^~~~~ ubi-utils/libubi.c:441:16: note: declared here441 | int i, major, minor;| ^~~~~ ubi-utils/libubi.c: In function ‘mtd_node_to_num’: ubi-utils/libubi.c:760:10: error: called object ‘major’ is not a function or function pointer760 | major = major(sb.st_rdev);| ^~~~~ ubi-utils/libubi.c:748:6: note: declared here748 | int major, minor;| ^~~~~ ubi-utils/libubi.c:761:10: error: called object ‘minor’ is not a function or function pointer761 | minor = minor(sb.st_rdev);| ^~~~~ ubi-utils/libubi.c:748:13: note: declared here748 | int major, minor;| ^~~~~ ubi-utils/libubi.c: In function ‘ubi_probe_node’: ubi-utils/libubi.c:869:10: error: called object ‘major’ is not a function or function pointer869 | major = major(st.st_rdev);| ^~~~~ ubi-utils/libubi.c:856:13: note: declared here856 | int i, fd, major, minor;| ^~~~~ ubi-utils/libubi.c:870:10: error: called object ‘minor’ is not a function or function pointer870 | minor = minor(st.st_rdev);| ^~~~~ ubi-utils/libubi.c:856:20: note: declared here856 | int i, fd, major, minor;| ^~~~~ make[2]: *** [common.mk:83:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/ubi-utils/libubi.o] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:问题还是头文件没包含
解决:修改libubi.c,添加头文件“#include <sys/sysmacros.h>”
再次编译,继续报错,快要崩溃了:
/usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.ubifs/mkfs.ubifs.o: in function `add_dev_inode': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.ubifs/mkfs.ubifs.c:1143: undefined reference to `minor' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.ubifs/mkfs.ubifs.c:1143: undefined reference to `major' /usr/bin/ld: /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.ubifs/mkfs.ubifs.c:1143: undefined reference to `makedev' collect2: error: ld returned 1 exit status make[2]: *** [common.mk:71:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0/mkfs.ubifs/mkfs.ubifs] 错误 1 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0” make[1]: *** [Makefile:46:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/sbin/mkfs.jffs2] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool” make: *** [Makefile:207:hipctools] 错误 2
原因:问题还是头文件没包含
解决:修改mkfs.ubifs.c,添加头文件“#include <sys/sysmacros.h>”
这回mtd-utils相关编译终于OK了,接下来又是cramfs_tool编译报错了,先把改好的mtd-utils-1.5.0压缩成mtd-utils-1.5.0.tar.bz2替换掉原来的,防止clean时删除
继续报错:
/usr/bin/ld: misc-utils/lslocks.o: in function `get_dev_inode': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/cramfs_tool/tmp/util-linux-2.22-rc2/misc-utils/lslocks.c:223: undefined reference to `makedev' /usr/bin/ld: misc-utils/lslocks.o: in function `get_fallback_filename': /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/cramfs_tool/tmp/util-linux-2.22-rc2/misc-utils/lslocks.c:142: undefined reference to `makedev' collect2: error: ld returned 1 exit status make[4]: *** [Makefile:4438:lslocks] 错误 1 make[4]: *** 正在等待未完成的任务....CCLD raw make[4]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/cramfs_tool/tmp/util-linux-2.22-rc2” make[3]: *** [Makefile:9528:all-recursive] 错误 1 make[3]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/cramfs_tool/tmp/util-linux-2.22-rc2” make[2]: *** [Makefile:3356:all] 错误 2 make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/cramfs_tool/tmp/util-linux-2.22-rc2” make[1]: *** [Makefile:39:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/cramfs_tool/tmp/sbin/mkfs.cramfs] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/cramfs_tool” make: *** [Makefile:212:hipctools] 错误 2
原因:问题还是头文件没包含
解决:修改lslocks.c,添加头文件“#include <sys/sysmacros.h>”
squashfs4.2编译报错:
mksquashfs.c: In function ‘create_inode’: mksquashfs.c:1354:24: error: called object ‘major’ is not a function or function pointer 1354 | unsigned int major = major(buf->st_rdev);| ^~~~~ mksquashfs.c:1354:16: note: declared here 1354 | unsigned int major = major(buf->st_rdev);| ^~~~~ mksquashfs.c:1355:24: error: called object ‘minor’ is not a function or function pointer 1355 | unsigned int minor = minor(buf->st_rdev);| ^~~~~ mksquashfs.c:1355:16: note: declared here 1355 | unsigned int minor = minor(buf->st_rdev);| ^~~~~ mksquashfs.c:1378:24: error: called object ‘major’ is not a function or function pointer 1378 | unsigned int major = major(buf->st_rdev);| ^~~~~ mksquashfs.c:1378:16: note: declared here 1378 | unsigned int major = major(buf->st_rdev);| ^~~~~ mksquashfs.c:1379:24: error: called object ‘minor’ is not a function or function pointer 1379 | unsigned int minor = minor(buf->st_rdev);| ^~~~~ mksquashfs.c:1379:16: note: declared here 1379 | unsigned int minor = minor(buf->st_rdev);| ^~~~~ unsquashfs.c: In function ‘create_inode’: unsquashfs.c:936:7: warning: implicit declaration of function ‘makedev’ [-Wimplicit-function-declaration]936 | makedev((i->data >> 8) & 0xff,| ^~~~~~~ mksquashfs.c: In function ‘dir_scan2’: mksquashfs.c:3778:17: warning: implicit declaration of function ‘makedev’ [-Wimplicit-function-declaration] 3778 | buf.st_rdev = makedev(pseudo_ent->dev->major,| ^~~~~~~ make[2]: *** [<内置>:mksquashfs.o] 错误 1 make[2]: *** 正在等待未完成的任务.... make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/squashfs4.2/tmp/squashfs4.2” make[1]: *** [Makefile:38:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/squashfs4.2/tmp/bin/mksquashfs] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/squashfs4.2” make: *** [Makefile:216:hipctools] 错误 2
原因:问题还是头文件没包含
解决:修改mksquashfs.c,添加头文件“#include <sys/sysmacros.h>”
继续报错:
/usr/bin/ld: unsquashfs.o: in function `create_inode': unsquashfs.c:(.text+0x2071): undefined reference to `makedev' collect2: error: ld returned 1 exit status make[2]: *** [Makefile:233:unsquashfs] 错误 1 make[2]: *** 正在等待未完成的任务.... make[2]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/squashfs4.2/tmp/squashfs4.2” make[1]: *** [Makefile:38:/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/squashfs4.2/tmp/bin/mksquashfs] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/squashfs4.2” make: *** [Makefile:216:hipctools] 错误 2
原因:问题还是头文件没包含、
解决:修改unsquashfs..c,添加头文件“#include <sys/sysmacros.h>”
终于全编译OK了,把有改动的打包一下,防止被clean。这个SDK做得可真垃圾,折磨人
烧录
先确定映像文件到16M的SPI Flash
分区
boot kernel roorfs 1M 3M 12M 烧录工具:HiTool【参考“HiTool工具平台 使用指南.pdf”和“HiBurn 工具使用指南.pdf”】
烧写成功后连接超级终端,重上电后提示"can't get kernel image!"
查看HiTool工具提示信息中kernel烧录地址为0x81000000,使用“printenv”命令查看环境变量中bootm启动地址是0x82000000,只要将环境变量中的地址改为bootm启动地址改为0x81000000【SDK包中这个文档(Hi3518EV20X/Hi3516CV200 SDK 安装以及升级使用说明.txt)是错误的,或者说跟Hitool工具不匹配】
// 正确的bootcmd和bootargs对应的设置命令: setenv bootcmd 'sf probe 0;sf read 0x81000000 0x100000 0x300000;bootm 0x81000000' setenv bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)
搭建tftp服务器,参考“Hi3518EV20X/Hi3516CV200 SDK 安装以及升级使用说明.txt”,使用tftp方式重新烧写uboot、kernel、rootfs
参考“Hi3518EV20X/Hi3516CV200 SDK 安装以及升级使用说明.txt”第5章,测试功能:网络配置、nfs、telnet。telnet时发现没有初始密码,使用“passwd"命令设置初始root密码。
~ # passwd Changing password for root New password: Retype password: Password for root changed by root
注意:设置完初始密码后,需要额外执行“telnetd&”命令方可telnet成功
mpp部署
在开发板系统根目录下创建mpp文件夹
nfs方式传输文件:将服务器ubuntu中mpp目录下的ko和lib两个文件夹复制到nfs文件夹中通过nfs方式将ko和lib两个文件夹及其内容复制到开发板中,其它文件均可以通过nfs方式传输,开发板根系统中/mpp/lib文件夹下*.a文件可以删除,.a为静态链接库,.so为动态链接库。开发版中的*.a文件没有任何作用
使用vi命令打开开发板系统“/etc/profile”,1.添加mpp/lib库路径到环境变量,2.网路配置
# 改动处1:添加mpp中lib路径 LD_LIBRARY_PATH="/usr/local/lib:/usr/lib:/mpp/lib" # 改动处2:在末尾追加网络配置 ifconfig eth0 192.168.1.10 ifconfig lo 127.0.0.1# 改动处3:加载ko cd /mpp/ko ./load3518e -a -sensor ar0130 -osmem 32 -total 64 cd /# 改动处4:挂载nfs(只在开发阶段添加,nfs服务器ip:192.168.1.141,路径:/home/thin-wind/nfs。如果挂载失败手动再执行一遍该指令) mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 192.168.1.141:/home/thin-wind/nfs /mnt
测试:ubuntu中进入mpp/vio目录,执行“make”命令,会编译生成一个名为“sample_vio”的可执行程序,通过nfs方式传到开发板中,执行“ ./sample_vio 0 1”,如果程序运行没有报错,说明mpp环境部署成功
学习了解YUV相关知识
测试了一下sample_venc,需要根据开发板硬件选择修改“Makefile.param”中的“CHIP_ID”和“SENSOR_TYPE”,然后make生成的程序才能在开发板中正确运行
先仔细阅读一下“HiMPP IPC V2.0 媒体处理软件开发参考.pdf”各章节的概括部分,再来分析示例代码
sample_venc VI部分源码分析
sample_venc VPASS部分源码分析
sample_venc VENC部分源码分析
RTP传输
ORTP库源码下载:https://github.com/dmonakhov/ortp
将下载好的放入ubuntu开发环境下解压。
注意ORTP库源码不支持h.264格式,需要做个简单修改
/* 在avprofile.c中的av_profile_init函数中增加如下一行代码 */ rtp_profile_set_payload(profile,96,&payload_type_h264);
执行:./autogen.sh
+ rm -rf config.cache autom4te.cache + libtoolize --copy --force ./autogen.sh: 行 36: libtoolize:未找到命令 + aclocal ./autogen.sh: 行 37: aclocal:未找到命令 + autoheader ./autogen.sh: 行 38: autoheader:未找到命令 + automake --force-missing --add-missing --copy ./autogen.sh: 行 39: automake:未找到命令 + autoconf ./autogen.sh: 行 40: autoconf:未找到命令
原因:缺少相关库
解决:
# 如果找不到下库可以先执行:sudu apt-get update sudo apt-get install libtool sudo apt-get install m4 sudo apt-get install automake
执行:./configure --prefix=/tmp/ortp --host=arm-hisiv300-linux
--prefix:安装位置 --host:交叉编译工具链
执行:make && make install
进入“/tmp/ortp”目录,查看该目录下生成了“include”和“lib”文件夹
先替换修改过后的“sample_comm_venc.c”,之后再分析源码,先部署环境[sample_comm_venc.c文件上传到“/doc/”目录下]
从“sample_comm_venc.c“中包含的头文件中看出跟ortp库相关的头文件需要部署的位置是:Hi3518E_SDK_V1.0.3.0/mpp/include,所以使用cp命令将/tmp/ortp/include/ortp整个文件夹复制到Hi3518E_SDK_V1.0.3.0/mpp/include目录下
修改“sample_venc.c”,将main函数中s32ChnNum通道数直接赋值为1,只测一路通道
进入“Hi3518E_SDK_V1.0.3.0/mpp/sample/venc”目录下,修改Makefile文件,然后执行make命令
# -lxxx : 链接libxxx.so -Lxxx : 指定链接路径 $(TARGET):%:%.o $(COMM_OBJ)$(CC) $(CFLAGS) -lpthread -lm -lortp -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS) -L/tmp/ortp/lib
将生成的sample_venc elf可执行程序通过nfs传到开发板系统中
“./sample_venc 0”执行程序后提示:./sample_venc: can't load library 'libortp.so.9',说明开发板中ortp环境没有搭建
解决:将ubuntu“/tmp/ortp/lib/”目录下的文件通过nfs方式全部复制到开发板“/mpp/lib/”目录下
然后通过命令“./sample_venc 0”就可以运行程序了
打开VLC播放器,点击“媒体”->“打开文件”,选择“demo.sdp”,windows系统IP要设置为:192.168.1.20就可以观看开发板通过ortp传出的视频了["demo.sdp"文件上传到“/doc/”目录下]
rtpsend.c发送示例简单分析并解读新版sample_venc.c中进行rtp发送的代码
isp的firmware分析
// 从sample_venc.c的main函数入口开始 SAMPLE_COMM_VI_StartViSAMPLE_COMM_VI_StartIspAndViSAMPLE_COMM_ISP_Initsensor_register_callback cmos_init_sensor_exp_function /* 绑定isp/sensor/xxx_cmos.c中相关函数 */// 3a注册,封装起来了,无法深入追踪HI_MPI_AE_Register HI_MPI_AWB_RegisterHI_MPI_AF_Register
- 如果自己的项目摄像头型号mpp已适配,则只需要关注xxx_cmos.c和xxx_sensor_ctl.c的局部微小修改
- 可以通过IIC向控制摄像头发送指令调节摄像头也可以调用isp相关api控制soc的算法达到目的
- 如果实际项目使用mpp暂未适配的sensor,那就要搜索关键字“SENSOR_TYPE“,参考添加自己的sensor到这套体系中去,还要根据自己的sensor,实现自己的xxx_cmos.c和xxx_sensor_ctl.c
- 在实际开发过程中,可以寻求供应商的技术支持
- 修改isp部分代码后要查看ko和lib文件夹下相关库是否需要更新到开发板中
解决了一下虚拟机ubuntu20.04重启登录后黑屏的问题【使用lightdm桌面】
USB WIFI STA模式驱动移植
将USB WIFI的SDK包复制到ubuntu中并解压
确认USB的VID和PID
查找config.mk文件中wpa_supplicant是否支持(如果不支持则改为支持)
详细阅读Makefile文件,增加PLATFORM = HI_3518E平台的支持,1.内核源码树路径设置:LINUX_SRC = //linux内核源码根目录 2.交叉工具链路径设置:CROSS_COMPILE = //交叉编译工具链前缀
确定好以上步骤后,进入这个SDK包根目录,使用“make”命令,结果报错:
编译中断。 make[2]: *** [scripts/Makefile.build:308:/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o] 错误 1 make[1]: *** [Makefile:1365:_module_/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y” make: *** [Makefile:402:LINUX] 错误 2 root@ubuntu:/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913# make make -C tools make[1]: 进入目录“/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools” gcc -g bin2h.c -o bin2h make[1]: 离开目录“/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools” /home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools/bin2h cp -f os/linux/Makefile.6 /home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/Makefile make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- -C /home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y SUBDIRS=/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux modules make[1]: 进入目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y”CC [M] /home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o /home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c:28:23: 致命错误: rt_config.h:没有那个文件或目录#include "rt_config.h"^ 编译中断。 make[2]: *** [scripts/Makefile.build:308:/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o] 错误 1 make[1]: *** [Makefile:1365:_module_/home/thin-wind/samba_share/Study/doc/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux] 错误 2 make[1]: 离开目录“/home/thin-wind/samba_share/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y” make: *** [Makefile:402:LINUX] 错误 2 root@ubuntu:/home/thin-wind/samba_share/
- 原因:找不到rt_config.h文件,然而我们到源码include目录下发下该文件已存在
- 解决:/os/linux/config.mk也要添加对HI_3518E平台的支持【WFLAGS += -I$(RT28xx_DIR)/include:指定头文件位置】
以上的修改可以搜索关键字“HI_3518E”查看所有修改处
将编译生成的“mt7601Usta.ko”文件通过nfs方式传到开发板中,复制到/mpp/ko/目录下,修改/etc/profile文件,增加指令:insmod mt7601Usta.ko,这样每次开机便会自动装载mt7601Usta.ko驱动
WIFI网络配置
- 发现开发板缺少wpa_supplicant工具,接下来需要移植wpa_supplicant工具
wpa_supplicant工具移植
下载wpa_supplicant源码并复制到ubuntu环境下解压,我使用的是当前最新版本2.9
进入wpa_supplicant目录下,找到Makefile文件并修改适配当前开发环境,添加:CC = arm-hisiv300-linux-gcc,make后提示:
Building wpa_supplicant requires a configuration file (.config). See README for more instructions. You can run "cp defconfig .config" to create an example configuration. make: *** [Makefile:67:verify_config] 错误 1
- 原因及解决:缺少.config文件,按照提示,执行命令:cp defconfig .config
再次make,提示错误:
../src/common/dpp.c:12:30: 致命错误: openssl/opensslv.h:没有那个文件或目录 #include <openssl/opensslv.h>^ 编译中断。 make: *** [Makefile:1992:../src/common/dpp.o] 错误 1
- 原因:缺少openssl库
openssl库移植
下载openssl复制到ubuntu环境下解压
查找解压后的根目录,发现没有Makefile文件,阅读README.md,参考“INSTALL.md”,要先执行命令:./config,这个命令执行过后才会生存Makefile文件
但是这里./config 需要哪些参数我也不知道,百度搜索openssl交叉编译,找到以下解决方法:
./config no-asm shared no-async --prefix=$(pwd)/install_dir --cross-compile-prefix=arm-hisiv300-linux-# 参数说明 # no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程; # shared: 生成动态连接库。 # no-async: 交叉编译工具链没有提供GNU C的ucontext库 # --prefix=: 安装路径 # --cross-compile-prefix=: 交叉编译工具
make后报错:
arm-hisiv300-linux-gcc: error: unrecognized command line option '-m64' make[1]: *** [Makefile:4210: apps/lib/libapps-lib-app_libctx.o] Error 1 make[1]: Leaving directory '/home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-3.0.0' make: *** [Makefile:3188:build_sw] 错误 2
原因及解决:"-m64"是x86平台的编译选项,交叉编译工具链不支持,打开Makefile,删除里面所有的"-m64"
再次make,这次是源码bn_dh.c错误,懒得改源码了,阅读我wpa_supplicant的README,发现其测试使用的是1.0.1或1.0.2,干脆下载1.0.2版本试试吧
解压openssl1.0.2版本源码并进入根目录
配置:./config no-asm shared no-async --prefix=$(pwd)/install_dir --cross-compile-prefix=arm-hisiv300-linux-
此时make后报错和上次的一样,打开Makefile,删除里面所有的"-m64"
这次make和make install均成功执行,进入install_dir目录下,发现有include、lib这两个文件夹,接下来需要这两个文件夹路径
修改wpa_supplicant的Makefile
# -L : 指定lib路径 -I : 指定头文件路径 CC=arm-hisiv300-linux-gcc -L/home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-1.0.2/install_dir/libCFLAGS = -MMD -O2 -Wall -g -I/home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-1.0.2/install_dir/includeLIBS = -L/home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-1.0.2/install_dir/lib
make后报错:
dbus/dbus_dict_helpers.c:10:10: fatal error: dbus/dbus.h: 没有那个文件或目录10 | #include <dbus/dbus.h>| ^~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:1992:dbus/dbus_dict_helpers.o] 错误 1
原因及解决:当前环境缺少dbus库
解决办法1:打开wpa_supplicant下的.config文件,搜索dbus关键字,将相关处注释掉,一共找到以下两处:
# CONFIG_CTRL_IFACE_DBUS_NEW=y # CONFIG_CTRL_IFACE_DBUS_INTRO=y
解决办法2:安装debus库,注意要是交叉编译
再次make后,产生新的问题:
../src/drivers/driver_nl80211.c:17:10: fatal error: netlink/genl/genl.h: 没有那个文件或目录17 | #include <netlink/genl/genl.h>| ^~~~~~~~~~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:1992:../src/drivers/driver_nl80211.o] 错误 1
原因:缺少libnl库
解决办法1:打开wpa_supplicant下的.config文件,搜索nl80211关键字,将相关处注释掉,一共找到以下1处需要注释的地方:
# 这么改有个问题就是当使用NL80211时该驱动异常 # CONFIG_DRIVER_NL80211=y
解决办法2:安装libnl库,注意要是交叉编译
再次make,居然报源码编译错误:
/usr/bin/ld: 当搜索用于 /home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-1.0.2/install_dir/lib/libssl.so 时跳过不兼容的 -lssl /usr/bin/ld: 当搜索用于 /home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-1.0.2/install_dir/lib/libssl.a 时跳过不兼容的 -lssl /usr/bin/ld: 当搜索用于 /home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-1.0.2/install_dir/lib/libcrypto.so 时跳过不兼容的 -lcrypto /usr/bin/ld: 当搜索用于 /home/thin-wind/samba_share/Study/doc/wpa_supplicant/openssl-1.0.2/install_dir/lib/libcrypto.a 时跳过不兼容的 -lcrypto /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `openssl_tls_cert_event': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2247: undefined reference to `sk_num' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2252: undefined reference to `sk_value' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2282: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `openssl_cert_tod': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2183: undefined reference to `sk_value' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2180: undefined reference to `sk_num' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `openssl_tls_cert_event': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2282: undefined reference to `sk_pop_free' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2282: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_match_suffix_helper': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2011: undefined reference to `sk_num' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2012: undefined reference to `sk_value' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2024: undefined reference to `sk_pop_free' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2028: undefined reference to `sk_pop_free' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2028: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_match_altsubject_component': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1692: undefined reference to `sk_value' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1691: undefined reference to `sk_num' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1700: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_verify_cb': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2404: undefined reference to `sk_num' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2415: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_match_altsubject_component': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1700: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_verify_cb': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:2408: undefined reference to `sk_value' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `openssl_connection_handshake': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:4304: undefined reference to `SSL_state' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `ocsp_resp_cb': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:4743: undefined reference to `sk_new_null' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:4747: undefined reference to `sk_push' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:4757: undefined reference to `sk_push' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:4752: undefined reference to `sk_free' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:4768: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_deinit': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1130: undefined reference to `ENGINE_cleanup' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1132: undefined reference to `CRYPTO_cleanup_all_ex_data' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1134: undefined reference to `ERR_free_strings' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1135: undefined reference to `EVP_cleanup' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_init': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:993: undefined reference to `SSL_load_error_strings' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:994: undefined reference to `SSL_library_init' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1024: undefined reference to `SSLv23_method' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1072: undefined reference to `SSL_SESSION_get_ex_new_index' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_parse_pkcs12': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:3363: undefined reference to `sk_pop' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:3382: undefined reference to `sk_pop_free' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_connection_established': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:1638: undefined reference to `SSL_state' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `openssl_debug_dump_certificates': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:5192: undefined reference to `sk_num' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:5193: undefined reference to `sk_value' /usr/bin/ld: ../src/crypto/tls_openssl.o: in function `tls_get_library_version': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/tls_openssl.c:5446: undefined reference to `SSLeay_version' /usr/bin/ld: ../src/common/dpp.o: in function `dpp_process_signed_connector': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/common/dpp.c:5680: undefined reference to `EVP_MD_CTX_create' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/common/dpp.c:5708: undefined reference to `EVP_MD_CTX_destroy' /usr/bin/ld: ../src/common/dpp.o: in function `dpp_build_conf_obj_dpp': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/common/dpp.c:4695: undefined reference to `EVP_MD_CTX_create' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/common/dpp.c:4780: undefined reference to `EVP_MD_CTX_destroy' /usr/bin/ld: ../src/ap/hostapd.o: in function `hostapd_free_hapd_data': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/ap/hostapd.c:442: undefined reference to `auth_sae_process_commit' /usr/bin/ld: ../src/ap/sta_info.o: in function `ap_free_sta': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/ap/sta_info.c:270: undefined reference to `sae_clear_retransmit_timer' /usr/bin/ld: ../src/ap/ieee802_11_vht.o: in function `hostapd_eid_txpower_envelope': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/ap/ieee802_11_vht.c:273: undefined reference to `hostapd_is_dfs_required' /usr/bin/ld: ../src/crypto/crypto_openssl.o: in function `EVP_MD_CTX_free': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/crypto_openssl.c:78: undefined reference to `EVP_MD_CTX_cleanup' /usr/bin/ld: ../src/crypto/crypto_openssl.o: in function `EVP_MD_CTX_new': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/crypto_openssl.c:69: undefined reference to `EVP_MD_CTX_init' /usr/bin/ld: ../src/crypto/crypto_openssl.o: in function `HMAC_CTX_free': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/crypto_openssl.c:58: undefined reference to `HMAC_CTX_cleanup' /usr/bin/ld: ../src/crypto/crypto_openssl.o: in function `HMAC_CTX_new': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/crypto_openssl.c:49: undefined reference to `HMAC_CTX_init' /usr/bin/ld: ../src/crypto/crypto_openssl.o: in function `get_group5_prime': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/crypto_openssl.c:91: undefined reference to `get_rfc3526_prime_1536' /usr/bin/ld: /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/crypto_openssl.c:91: undefined reference to `get_rfc3526_prime_1536' /usr/bin/ld: ../src/crypto/crypto_openssl.o: in function `HMAC_CTX_new': /home/thin-wind/samba_share/Study/doc/wpa_supplicant/wpa_supplicant-2.9/wpa_supplicant/../src/crypto/crypto_openssl.c:49: undefined reference to `HMAC_CTX_init' collect2: error: ld returned 1 exit status make: *** [Makefile:1905:wpa_supplicant] 错误 1
- 这个问题始终都解决不掉,算了,放弃了,不用最新新版本了,新版本遇到问题网上都搜索不到答案
下载跟搜索的博客相同版本的openssl版本0.98za,wpa_supplicant版本2.5
将两个压缩包分别解压, 将wpa_supplicant-2.5/patches/openssl-0.9.8za-tls-extensions.patch复制到openssl-0.9.8za/目录下
openssl:
在openssl-0.9.8za/目录下运行命令:patch -p1 < openssl-0.9.8za-tls-extensions.patch
修改Makefile
# 安装位置 INSTALLTOP=/tmp/ssl_install OPENSSLDIR=/tmp/ssl_install# 交叉编译工具链 CC= arm-hisiv300-linux-gcc AR= arm-hisiv300-linux-ar $(ARFLAGS) r ARD=arm-hisiv300-linux-ar $(ARFLAGS) d RANLIB= arm-hisiv300-linux-ranlib
make & make install,报错:
Expected text after =item, not a number Expected text after =item, not a number Expected text after =item, not a number Expected text after =item, not a number
- 原因及解决:OpenSSL 与 perl版本不兼容, 解决办法:sudo rm -f /usr/bin/pod2man
再次 make & make install,成功,查看/tmp/ssl_install/目录下已经产生安装后的文件了
wpa_supplicant:
安装完openssl,接下来看是安装wpa_supplicant,进入wpa_supplicant-2.5/wpa_supplicant/目录下
执行命令:cp defconfig .config
修改 .config
CC=arm-hisiv300-linux-gcc -L/tmp/ssl_install/lib CFLAGS+=-I /tmp/ssl_install/include LIBS+=-L/tmp/ssl_install/lib
make,报错:
../src/drivers/driver_nl80211.c:17:31: 致命错误: netlink/genl/genl.h:没有那个文件或目录 #include <netlink/genl/genl.h>^ 编译中断。 make: *** [Makefile:1758:../src/drivers/driver_nl80211.o] 错误 1
- 这个问题之前有解决方法了
解决掉上个问题后再次make,生成wpa_supplicant和wpa_cli,整个移植成功完成
将wpa_supplicant和wpa_cli文件通过nfs方式copy到开发板中的,然后放到开发板根文件系统的/usr/bin目录下
断电重启后wpa_supplicant工具就可以使用了,下面进行wifi配置
WIFI网络配置
将usb wifi的SDK包DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/下的RT2870STA.dat文件通过nfs方式copy到开发板中,并将其放在开发板的/etc/Wireless/RT2870STA/目录下(Wireless和RT2870STA文件夹需要自己创建)
/etc/Wireless/RT2870STA/RT2870STA.dat
创建/etc/wpa_supplicant.conf文件,其内容如下:
ctrl_interface=/var/run/wpa_supplicantnetwork={key_mgmt=WPA-PSKssid="303"psk="66668888" }
说明:
- key_mgmt:加密方式
- ssid:wifi名称
- psk:wifi密码
连接wifi
先确保wifi驱动装载成功以及wifi网络配置ok
开启无线网卡(网卡名正常默认有ra和wlan两种):
ifconfig ra0 up
连接无线网络:
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0
查看连接状态:
wpa_cli -i ra0 status
手动配置IP:
ifconfig ra0 192.168.1.89
配置网关:
route add default gw 192.168.1.1 dev ra0
ping网关:
ping -I 192.168.1.89 192.168.1.1
- -I :指定网卡,192.168.1.89是上面设置的无线网卡IP
ping外网IP:
ping -I 192.168.1.89 8.8.8.8
配置DNS:
- 创建/etc/resolv.conf文件,内容如下:
nameserver 198.168.1.1
说明:
- 198.168.1.1即为网关地址即可
- 创建/etc/resolv.conf文件,内容如下:
ping域名:
ping -I 192.168.1.89 www.baidu.com
- 如果没有设置DNS,则域名是无法ping通的
/etc/network/interfaces
auto lo iface lo inet loopbackauto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1auto ra0 iface ra0 inet static address 192.168.1.89 netmask 255.255.255.0 gateway 192.168.1.1
- 本来IP配置可以放在/etc/network/interfaces中的,但开发板根文件系统没有这个文件,且自己创建后网卡设置依旧不起作用
做个wifi连接脚本来实现上述wifi配网步骤,内容如下:
#!/bin/shifconfig eth0 down ifconfig ra0 up wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 wpa_cli -i ra0 status ifconfig ra0 192.168.1.89 route add default gw 192.168.1.1 dev ra0
- 实测发现如果不关闭有线eth0的话无线ra0容易出问题
使用DHCP方式自动获取IP和DNS:
#!/bin/shifconfig eth0 down ifconfig ra0 up wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 udhcpc -i ra0
出现问题:无法ping通网关,使用ifconfig命令发现ra0的IP并没有被设置
解决问题:将busybox源码目录下的/examples/udhcp/simple.script文件通过nfs方式传输到开发板/usr/share/udhcpc/目录下,并重命名为default.script,注意可执行权限
一定要先执行指令:wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 连接wifi成功后再执行命令:udhcpc -i ra0
纯wifi无线调试环境搭建
ubuntu、windows、开发板三者都做STA,并连接同一AP(就是连上同一个wifi)
确保上述wifi配置环境成功部署到开发板中,在/etc/profile文件中添加wifi配网命令[添加在mount挂在前面]
ifconfig eth0 down ifconfig ra0 up wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 udhcpc -i ra0
点击虚拟机“编辑”->“虚拟网络编辑器”,选择“桥接模式”,桥接至windows电脑的无线无线网卡上
确保ubuntu中ip跟开发板mount挂载的主机IP一致
重启开发板,成功挂载ubuntu的nfs
wifi sta模式ortp传输实验
参考之前的rtp传输实验,修改sample_comm_venc.c中的LOCAL_HOST_IP,将其改为windows连接的wifi的ip
重新编译,生成sample_venc程序,放到nfs目录下
打开VLC播放器,点击“媒体”->“打开文件”,选择“demo.sdp”[将demo.sdp中的IP改为windows连接的wifi的ip]
在开发板中执行该程序:./sample_venc 0
USB WIFI AP模式驱动移植
参考“USB WIFI STA模式驱动移植”,AP模式不需要wpa_supplicant工具移植
/etc/Wireless/RT2870AP/RT2870AP.dat中需要的改动处:SSID、AuthMode、EncrypType、WPASK
说明
SSID:wifi名称,例:SSID=testap AuthMode:AP认证模式,例:AuthMode=WPA2PSK EncrypType:加密方式,例:EncrypType=TKIP;AES WPAPSK:密码,例:WPAPSK=12345678
修sample_comm_venc.c,可通过读取IP_CONFIG文件获取远端IP,解决电脑重启后自动分配的IP改变而造成开发板视频码流无法传输到PC端VLC播放器的问题
新增rtsp传输h.264码流代码,更多rtsp学习可参考个人Module仓库的rtsperver分支[https://gitee.com/source-c/Module/tree/rtspServer/]
新增OSD叠加显示示例代码【sample_osd】,这块主要是熟悉海思API
华为海思HI3518E方案视频编解码传输相关推荐
- php海思hi3531d,海思hi3531DV200 h.265编解码AI处理器
主要特点 处理器内核 ARM Cortex A53 四核@1.15GHz − 32KB L1 I-Cache, 32KB L1 D-Cache − 512KB L2 Cache − 支持NEON/ ...
- 7 海思Hi3518E的视频处理子系统(VPSS)
1 概述 VPSS(Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪.去隔行等,然后再对各通道分别进行缩放.锐化等处理,最后输出多种不同分辨率的图像. VPS ...
- 4 海思Hi3518E实例代码分析
海思媒体(mmp)处理平台架构 海思媒体处理平台的主要内部处理流程如图 1-2 所示,主要分为视频输入(VI).视频处理(VPSS).视频编码(VENC).视频解码(VDEC).视频输出(VO).视频 ...
- 1.1 海思3518E视频编解码的一些概念
目录 1.1.1 前言 1.1.2 视频编解码的基本概念了解 1.1.1 前言 这是我第一次写博客,我写博客的目的是为了记录我的学习笔记,同时也是想把我的学习记录分享出来,供参考学习.这个学习笔记是关 ...
- 海思HiMPP视频编解码开发文档
前言: 海思提供的媒体处理软件平台(Media Process Platform,简称MPP),可支持应用软件快速开发.该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供MPI(MP ...
- 基于 UltraScale FPGA+华为海思 ARM 的高性能综合视频图像处理板 / FPGA+ARM
PCIE703 是一款基于 PCIE 总线架构的高性能综合视频图像处理平台,该平台采用 Xilinx 的高性能 Kintex UltraScale系列 FPGA 加上华为海思的高性能视频处理器来实现. ...
- [PCIE703]FPGA实时处理器-XCKU060+ARM(华为海思视频处理器-HI3531DV200)高性能综合视频图像处理平台设计资料及原理图分享
板卡概述 PCIE703是自主研制的一款基于PCIE总线架构的高性能综合视频图像处理平台,该平台采用Xilinx的高性能Kintex UltraScale系列FPGA加上华为海思的高性能视频处理器来实 ...
- 视频编解码硬件方案漫谈
视频编解码硬件方案最早是在嵌入式领域中广泛存在,如采用DSP,FPGA,ASIC等,用来弥补嵌入式系统CPU等资源能力不足问题,但随着视频分辨率越来越高(从CIF经历720P,1080P发展到4K,8 ...
- 视频编解码行业及发展方向简述
目录 一.视频行业 1.视频是一个方兴未艾的大产业 2.视频行业潜在商机大.人才缺口大 3.了解华为海思的HI3518E方案 二.海思方案项目用到的硬件平台介绍 1.本专栏文章使用的开发板配置 2.处 ...
最新文章
- 非科班的我如何自学Python在一线城市找到一份15k的offer的?
- js base64编码解码 btoa atob 函数简介
- WindowsTime服务设置
- java中完成md5加密解密_java实现md5加密解密 notNET中加密和解密的实现方法
- ON TOP-N and pagination queries
- ubuntu下用命令行安装Qt
- 第九十五节,移动流体布局和响应式布局总结
- newcode 	Islands 思维
- C语言入门经验:零基础如何学习C语言?
- 什么是REST?以及RESTful的实现
- js或jsp 获取项目路径常用方法
- matlab绘图坐标显示不全的解决方法
- MICCAI 2019 Poster
- html网页如何导入word,怎么把网页导入word
- 2022年全球市场雷达目标模拟器总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 如何制作内网web服务器,内网搭建WEB服务器教程
- LVS linux virtual server 章文嵩
- 微信开发——测试号申请,接口配置,JS接口安全域名,自定义菜单
- SwiftUI 如何解决Generic parameter ‘SelectionValue‘ could not be inferred
- win10下c语言哪个版本号,怎么查看我的电脑用的是win10的哪个版本?win10各版本之间的区别...