Hi3519AV100 sdk 介绍
0. 文档目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/ReleaseDoc/zh$ tree -L 4 . ├── 00.hardware # 硬件相关文档 ├── 01.software # 软件相关文档 │ ├── board │ │ ├── Hi3519AV100 SDK 安装及升级使用说明.pdf # sdk 安装,编译,烧录说明。本文后面的内容主要参考此文档。 │ │ ├── Hi3519AV100与Hi3559AV100 开发包差异说明.pdf │ │ ├── MPP │ │ │ ├── HDMI 开发参考.pdf │ │ │ ├── HiMPP V4.0 媒体处理软件 FAQ.pdf │ │ │ ├── HiMPP V4.0 媒体处理软件开发参考.pdf # camera 功能开发参考文档。进行 camera 应用开发时主要参考此文档。 │ │ ├── OSDRV │ │ │ ├── Hi3519AV100╱Hi3556AV100 U-boot 移植应用开发指南.pdf │ │ │ ├── Hi3519AV100╱Hi3556AV100 开发环境用户指南.pdf │ │ │ ├── UBI 文件系统使用指南.pdf │ │ │ ├── 外围设备驱动 操作指南.doc │ │ │ └── 裸烧及非裸烧升级 使用手册.pdf │ │ ├── PQ │ │ └── SVP │ ├── Hi3519AV100R001 Open Source Software Notice.doc │ ├── HiMPP SDK 二次开发网络安全注意事项.pdf │ ├── pc ├── 02.only for reference |
1. sdk 目录结构
我们拿到的 sdk 有以下文件:
1 2 3 4 5 6 7 8 9 10 11 12 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519$ ll -rwxr-x--- 1 qiushao geoclue 1870000000 Apr 3 08:54 arm-himix200-linux.part1.rar* -rwxr-x--- 1 qiushao geoclue 1861766810 Apr 3 08:54 arm-himix200-linux.part2.rar* -rwxr-x--- 1 qiushao geoclue 1519247343 Apr 3 08:55 Hi3519AV100R001C02SPC020.rar* -rwxr-x--- 1 qiushao geoclue 12771415 Apr 3 08:56 HiDPU_PC_V2.0.0.0.tgz* -rwxr-x--- 1 qiushao geoclue 22645270 Apr 3 08:56 HiIVE_PC_V2.1.0.8_64bit_sec.tgz* -rwxr-x--- 1 qiushao geoclue 1710000000 Apr 3 08:55 HiSVP_PC_V1.2.2.0.part1.rar* -rwxr-x--- 1 qiushao geoclue 1710000000 Apr 3 08:55 HiSVP_PC_V1.2.2.0.part2.rar* -rwxr-x--- 1 qiushao geoclue 1710000000 Apr 3 08:54 HiSVP_PC_V1.2.2.0.part3.rar* -rwxr-x--- 1 qiushao geoclue 1681662082 Apr 3 08:56 HiSVP_PC_V1.2.2.0.part4.rar* -rwxr-x--- 1 qiushao geoclue 15852 Apr 3 08:55 linux-4.9.y.rar* qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519$ |
我们目前用到的只有前面三个文件。其中 arm-himix200-linux 是编译工具链。 Hi3519AV100R001C02SPC020 是 sdk 及一些工具。
Hi3519AV100R001C02SPC020.rar 解压后的目录结构如下:
1 2 3 4 5 6 7 8 9 10 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/Hi3519AV100R001C02SPC020$ tree . ├── 00.hardware # 硬件相关设计文档 ├── 01.software # 软件相关,包括 sdk 代码和烧录工具,调试工具等 │ ├── board │ │ └── Hi3519AV100_SDK_V2.0.2.0.tgz │ └── pc │ └── HiTool │ └── HiTool-BVT-5.2.7.zip └── 02.only for reference # 其他参考文档,包括 sensor 规则书,uboot 移植相关的硬件信息表等 |
其中 Hi3519AV100_SDK_V2.0.2.0.tgz 是最重要的 sdk 代码包。我们把它拿出来解压。目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/Hi3519AV100_SDK_V2.0.2.0$ tree . ├── package │ ├── drv.tgz │ ├── mpp_smp_linux.tgz │ ├── osal.tgz │ └── osdrv.tgz ├── scripts │ └── common.sh ├── sdk.cleanup ├── sdk.unpack └── smp_image_glibc├── rootfs_hi3519av100_128k.jffs2├── rootfs_hi3519av100_256k.jffs2├── rootfs_hi3519av100_2k_24bit.yaffs2├── rootfs_hi3519av100_2k_4bit.yaffs2├── rootfs_hi3519av100_32M.ext4├── rootfs_hi3519av100_64k.jffs2├── u-boot-hi3519av100.bin└── uImage_hi3519av100_smp |
代码压缩文件都放在 package 目录。我们需要执行 sdk.unpack 脚本来解压代码:
1 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/Hi3519AV100_SDK_V2.0.2.0$ ./sdk.unpack |
解压代码后目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/Hi3519AV100_SDK_V2.0.2.0$ tree -L 4 . ├── osdrv # bsp 相关代码, 主要包含 uboot, kernel, rootfs │ ├── components │ │ ├── ipcm │ │ └── pcie_mcc │ ├── Makefile │ ├── opensource │ │ ├── busybox # busybox 源码 │ │ ├── kernel # kernel 源码, │ │ └── uboot │ ├── pub # 编译出来的镜像放在这个目录 │ ├── rootfs_scripts │ └── tools # 编译镜像需要的一些工具 ├── package # 压缩的 sdk ├── scripts # sdk 解压相关脚本 ├── sdk.cleanup ├── sdk.unpack ├── smp │ ├── a53_linux │ │ ├── drv │ │ │ ├── extdrv # 外设驱动 │ │ │ └── interdrv # 内部芯片驱动 │ │ ├── mpp # 媒体处理相关的驱动,库,头文件以及 sample等。应用层的开发主要就是使用这些库来进行开发了。 │ │ │ ├── cfg.mak │ │ │ ├── component │ │ │ ├── include # mpi 头文件 │ │ │ ├── init # 媒体模块驱动初始化 │ │ │ ├── ko # 预编译好的驱动文件及加载脚本 │ │ │ ├── lib # 预编译好的 mpi 静态库和动态库 │ │ │ ├── Makefile.linux.param │ │ │ ├── Makefile.param │ │ │ ├── obj # 预编译好的驱动 .o 文件 │ │ │ ├── sample # mpi 接口使用样例,供开发参考。 │ │ │ └── tools # 调试工具 │ │ └── osal # 操作系统抽象层(Linux, Liteos) │ │ ├── include │ │ └── linux │ └── dsp_liteos └── smp_image_glibc # 预编译好的系统镜像: uboot, kernel, rootfs |
2. 编译工具安装
2.1 依赖安装
先安装以下这些工具,不然编译会出现各种莫名其妙的错误:
1 |
sudo apt-get install gperf bison flex libuuid1 u-boot-tools zlib1g-dev build-essential ncurses-dev libacl1-dev liblzo2-dev uuid-dev zlib1g-dev liblzo2-dev uuid-dev pkg-config texinfo |
2.2 编译工具链安装
把 arm-himix200-linux.rar 解压后,得到 arm-himix200-linux.tgz。再解压一次得到 arm-himix200-linux 目录,结构如下:
1 2 3 4 5 6 7 8 9 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/arm-himix200-linux$ tree . ├── arm-himix200-linux.install ├── arm-himix200-linux.tar.bz2 ├── gdb_build.sh ├── gdb_readme_cn.txt ├── gdb_readme_en.txt ├── readme.txt └── runtime_glibc.tgz |
按文档的操作,是需要 sudo 执行 arm-himix200-linux.install 进行安装。其实只要把工具链解压,并设置一下 PATH 环境变量就行了:
1 2 3 4 5 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/arm-himix200-linux$ tar xvf arm-himix200-linux.tar.bz2 qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/arm-himix200-linux$ tar xvf runtime_glibc.tgz -C arm-himix200-linux/ qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/arm-himix200-linux/arm-himix200-linux/bin$ cd qiushao@qiushao-pc:~$ echo 'PATH=/media/qiushao/source-code/Hi3519/arm-himix200-linux/arm-himix200-linux/bin:$PATH' >> ~/.bashrc qiushao@qiushao-pc:~$ source ~/.bashrc |
3. 编译烧录 uboot, kernel, rootfs
编译方法主要参考 Hi3519AV100_SDK/osdrv/readme_cn.txt 说明文件。
3.1 下载 kernel
由于 GPL 协议的问题,海思并没有把 kernel 的代码一起发布。需要我们自己下载 kernel 源码:
1 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519/Hi3519AV100_SDK/osdrv/opensource/kernel$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.9.37.tar.gz |
3.2 编译系统镜像
在 osdrv 目录下执行 make all 就行
1 2 3 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/osdrv$ make all ... ---------finish osdrv work |
出现 finish osdrv work 提示,说明已经编译完成了。
编译生成的镜像放在 osdrv/pub/smp_image_glibc 目录下:
1 2 3 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/osdrv/pub/smp_image_glibc$ ls rootfs_hi3519av100_128k.jffs2 rootfs_hi3519av100_2k_24bit.yaffs2 rootfs_hi3519av100_32M.ext4 u-boot-hi3519av100.bin rootfs_hi3519av100_256k.jffs2 rootfs_hi3519av100_2k_4bit.yaffs2 rootfs_hi3519av100_64k.jffs2 uImage_hi3519av100_smp |
3.3 烧录系统
SPI Nand Flash 的地址空间安排如下:
1 2 3 |
| 1M | 4M | 32M | |----------------------|---------------------|---------------------| | uboot | kernel | rootfs | |
3.3.1 hitool 烧录
如果板子是空板的话,需要使用 hitool 进行烧录。请参考 HiBurn工具使用指南.pdf
3.3.2 tftp 烧录
如果板子上有 uboot 的话,且板子有网口的话,则可以使用 tftp 来烧录。因为 hitool 没有提供 linux 版本,所以我一般都是使用 tftp 来烧录了。
- tftp 配置
上一篇文章我们已经介绍过 tftp 服务环境的搭建了。先修改 tftp 的目录为编译生成 images 的目录:1 2 3 4 5 6
# /etc/default/tftpd-hpaTFTP_USERNAME="tftp" TFTP_DIRECTORY="/media/qiushao/source-code/Hi3519AV100_SDK/osdrv/pub/smp_image_glibc" TFTP_ADDRESS=":69" TFTP_OPTIONS="-l -c -s"
然后重启 tftp 服务。
1
qiushao@qiushao-pc:/etc/default$ sudo service tftpd-hpa restart
- tftp 配置
- pc 网络信息查看
ubuntu 下查看 pc 的 ip, 网关等信息的方法1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
qiushao@qiushao-pc:~$ ifconfig wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.3.29 netmask 255.255.255.0 broadcast 192.168.3.255inet6 fe80::f7d3:b73c:461a:af45 prefixlen 64 scopeid 0x20<link>inet6 240e:fe:3839:339:c717:1207:24ef:fd76 prefixlen 64 scopeid 0x0<global>inet6 240e:fe:3839:300:7c94:2acf:4818:8 prefixlen 128 scopeid 0x0<global>inet6 240e:fe:3839:339:1002:ba0c:2ed:5ffa prefixlen 64 scopeid 0x0<global>ether 40:74:e0:b3:f2:63 txqueuelen 1000 (Ethernet)RX packets 36413 bytes 33826854 (33.8 MB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 16292 bytes 2617305 (2.6 MB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0qiushao@qiushao-pc:~$ qiushao@qiushao-pc:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.3.1 0.0.0.0 UG 600 0 0 wlp4s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 virbr0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.3.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp4s0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 qiushao@qiushao-pc:~$
根据以上信息得到 pc 的网络信息如下:
ip: 192.168.3.29
netmask: 255.255.255.0
gateway: 192.168.3.1
mac: 40:74:e0:b3:f2:63
- pc 网络信息查看
- 板子网络信息配置
板子需要接入和 pc 同一个局域网。板子上电后, 敲任意键进入 u-boot。设置 serverip(即 tftp 服务器的 ip), ipaddr(板子 ip)和 ethaddr(板子的 MAC 地址)。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
hisilicon # setenv serverip 192.168.3.29 hisilicon # setenv ipaddr 192.168.3.30 # 板子的 ip,参考 serverip, 修改最后一位即可。 hisilicon # setenv netmask 255.255.255.0 hisilicon # setenv gatewayip 192.168.3.1 hisilicon # setenv ethaddr 40:74:e0:b3:f2:64 # 参考 pc 的 mac, 修改最后一位即可。 hisilicon # saveenv Saving Environment to NAND... Erasing NAND... Erasing at 0xa0000 -- 100% complete. Writing to NAND... OK hisilicon # ping 192.168.3.29 # 确认网络设置正常。 ETH0: PHY(phyaddr=1, rgmii) link UP: DUPLEX=FULL : SPEED=1000M MAC: 54-E1-AD-0A-A1-F8 Using gmac0 device host 192.168.3.29 is alive hisilicon #
- 板子网络信息配置
- 烧录分区
- 烧写 u-boot
1 2 3
mw.b 42000000 ff 80000 tftp 0x42000000 u-boot-hi3519av100.bin nand erase 0 80000;nand write 42000000 0 80000
- 烧写内核
1 2 3
mw.b 42000000 ff 400000 tftp 42000000 uImage_hi3519av100_smp nand erase 100000 400000;nand write 42000000 100000 400000
- 烧写根文件系统
1 2 3
mw.b 42000000 ff 2000000 tftp 42000000 rootfs_hi3519av100_2k_4bit.yaffs2 nand erase 500000 2000000;nand write.yaffs 42000000 500000 0xafeb00 (0xafeb00 为实际文件大小)
- 设置启动参数
1 2 3
setenv bootargs 'mem=256M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),32M(rootfs)' setenv bootcmd 'nand read 0x42000000 100000 400000; bootm 0x42000000' saveenv
- 重启系统
1
reset
- 烧写 u-boot
- 烧录分区
4. 板子网络环境配置
经过上面的步骤,我们的系统是跑起来了,但只是把 kernel 启动了,根文件系统挂载了而已,什么业务都没有运行的。我们需要编写自己的应用在上面运行才可以。
在写代码之前我们还需要配置一下板子的网络环境,以便开发调试。在开发阶段,推荐使用 NFS 作为开发环境,可以省去重新制作和烧写根文件系统的工作。也不需要频繁用 u 盘 copy 文件。
4.1 pc端配置nfs服务
pc 端 nfs 服务的配置之前已经介绍过了,这里面就不再重复。我们把 nfs share 的目录改成 Hi3519AV100_SDK:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
qiushao@qiushao-pc:/etc$ cat exports # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /media/qiushao/source-code/Hi3519AV100_SDK *(rw,sync,no_subtree_check,root_squash) qiushao@qiushao-pc:/etc$ qiushao@qiushao-pc:/etc$ sudo exportfs -a qiushao@qiushao-pc:/etc$ sudo service nfs-kernel-server restart |
4.2 设置板子的 mac,ip 等信息
1 2 3 4 5 6 7 8 9 10 11 12 |
~ # ifconfig eth0 hw ether 40:74:e0:b3:f2:64 ~ # ifconfig eth0 192.168.3.30 netmask 255.255.255.0 IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready ~ # hi_gmac_v200 40e0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready~ # route add default gw 192.168.3.1 ~ # ping 192.168.3.29 PING 192.168.3.29 (192.168.3.29): 56 data bytes 64 bytes from 192.168.3.29: seq=0 ttl=64 time=43.142 ms 64 bytes from 192.168.3.29: seq=1 ttl=64 time=62.610 ms 64 bytes from 192.168.3.29: seq=2 ttl=64 time=76.662 ms |
4.3 板子上挂载 nfs 文件系统
1 2 3 4 5 |
~ # mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 192.168.3.29:/media/qiushao/source-code/Hi3519AV100_SDK /mnt ~ # ls /mnt osdrv scripts sdk.unpack smp_image_glibc package sdk.cleanup smp ~ # |
5. 编译运行 sample
5.1 编译 sample
海思 sdk 里面带了一些 sample:
1 2 3 4 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/smp/a53_linux/mpp/sample$ ls audio awb_online_calibration dis fisheye lsc_online_cali Makefile.param region smp_linux.mak svp traffic_capture vdec vgs avs common dpu hifb Makefile pciv scene_auto snap tde uvc_app venc vio qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/smp/a53_linux/mpp/sample$ |
我们先试着在上面跑个简单的 vio sample 看看。vio sample 的功能是从摄像头输出,然后输出到 hdmi。
编译的方法很简单,进入 sample/vio 目录,直接 make 就行。编译成功的话,会在 vio 目录生成一个 sample_vio_main 文件:
1 2 3 4 5 6 7 |
qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/smp/a53_linux/mpp/sample$ cd vio qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/smp/a53_linux/mpp/sample/vio$ ls Makefile res sample_vio.h sample_vio_main.c smp qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/smp/a53_linux/mpp/sample/vio$ make ... qiushao@qiushao-pc:/media/qiushao/source-code/Hi3519AV100_SDK/smp/a53_linux/mpp/sample/vio$ ls Makefile res sample_vio.h sample_vio_main sample_vio_main.c sample_vio_main.o smp |
5.2 加载设备驱动
现在我们又回到板子上进行操作。
在运行 sample 之前我们需要先加载 hisi 的驱动
1 2 3 4 5 6 7 8 9 10 |
/ # cd /mnt/smp/a53_linux/mpp/ko /mnt/smp/a53_linux/mpp/ko # ./load3519av100 -i -sensor0 imx334 mmz_start: 0x32000000, mmz_size: 1760M sys_config: loading out-of-tree module taints kernel. ==========sensr0: imx334========== ==========sensr1: imx334========== ==========sensr2: imx334========== ==========sensr3: imx334========== ==========sensr4: imx334========== Module himedia: init ok |
5.3 运行 sample
驱动加载成功之后,就可以开始运行 sample 啦
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/mnt/smp/a53_linux/mpp # cd sample/vio/ /mnt/smp/a53_linux/mpp/sample/vio # ./sample_vio_main Usage : ./sample_vio_main <index> <intf> index:0)VI(Online) - VPSS(Online) - VO.1)VI(Offline)- VPSS(Offline) - VO. LDC+DIS+SPREAD.2)VI(Offline)- VPSS(Online) - VO. Double pipe.3)VI(Online)- VPSS(Offline) - VO. Double chn.4)Resolute Ratio Switch.5)GDC - VPSS LowDelay.6)Double WDR Pipe.7)FPN Calibrate & Correction.8)WDR Switch.9)90/180/270 Rotate.10)Mipi Demux Yuv.11)UserPic. intf:0) vo HDMI output, default.1) vo BT1120 output. /mnt/smp/a53_linux/mpp/sample/vio # ./sample_vio_main 0 [SAMPLE_COMM_VI_SetMipiAttr]-1408: ============= MipiDev 0, SetMipiAttr enWDRMode: 0 linear mode ===Imx334 8M30fps 12bit LINE Init OK!=== [SAMPLE_COMM_ISP_Thread]-187: ISP Dev 0 running ! [SAMPLE_COMM_VO_StartChn]-544: u32Width:1920, u32Height:1080, u32Square:1 ---------------press Enter key to exit!--------------- |
至此,系统就已经运行起来了, sample 也运行起来了。后面我们再来逐步学习 camera 系统相关的开发知识。
Hi3519AV100 sdk 介绍相关推荐
- 系统SDK介绍-02
系统SDK介绍 打开相册选择图片 打开相册选择视频 打开相机拍摄图片 打开相机拍摄视频 配置权限: 在info.plist文件中添加需要的权限 相机权限:Privacy - Camera Usage ...
- iOS SDK 介绍及导入
iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SDK_Core: 为核心的消息同步协议实现,完成与服务器之间的信息交换. SDK: 是基 ...
- yocto Extensible SDK介绍
yocto Extensible SDK介绍 使用yocto Extensible SDK 1.1 为什么使用yocto Extensible SDK及其包含了什么 1.2 安装 Extensible ...
- ST17H66 低功耗蓝牙SOC开发(1)—— SDK介绍
目录 1.资料获取 2.开发环境 3.ST17H66开发SDK获取 4.SDK介绍 4.1 components 4.2 example 4.3 lib 4.4 misc 1.资料获取 伦茨17Hxx ...
- 叠幻AR SDK介绍
SDK介绍 叠幻AR SDK是北京叠幻三维科技有限公司拥有完全自主知识产权的增强现实AR核心算法软件套件.叠幻AR SDK在浏览器端(Web)和小程序端通过极致优化增强现实AR的核心算法,为企业客户提 ...
- 开发自己的DJI四旋翼无人机(A3飞控Onboard SDK和Mobile SDK介绍)
大疆作为无人机行业的佼佼者,其应用范围从户外旅行.拍照到影视拍摄,以及工业运用都有着极高的地位.那么,我们如何仅仅使用大疆的飞控来开发出我们自己的无人机呢? 首先,你需要如下的东西: 以及相应的机架, ...
- NRF52832官方SDK介绍
SDK(Software Development Kit)是指软件开发包,一般是由官方提供,主要用来介绍开发流程,提供常用的例程代码等等.可以降低开发者使用的门槛,提高开发效率,所以在开发者在进行具体 ...
- 手游海外聚合SDK介绍
手游海外聚合SDK[免费] 手游海外聚合SDK 功能介绍 产品特点 客服系统 数据分析 兼容测试 手游海外聚合SDK TopSDK为游戏客户提供出海所必备的技术产品解决方案.包含统一的账号体系.当地使 ...
- 基于DLP4500的结构光单目相机3D扫描SDK介绍(附源码)(1)
智能机器人性能的一个关键组成部分就是机器视觉(MV)技术,这是计算机与高速摄像头的完美结合.通过结合这两种技术,就可以执行复杂的检查任务及数字图像采集和分析.这些数据可以用来控制机器人手臂.对物体进行 ...
- 微软移动 Nokia Lumia SensorCore SDK 介绍及上手体验
早在今年的BUILD大会上,诺基亚就宣布了SensorCore以及它的部分演示.今天,它终于面世了,大家可以去Building Apps for Windows 上查看具体介绍,或者也可以去Nokia ...
最新文章
- vb编程入门_【高能】用VB开发的彩票选号软件
- 多波次导弹发射中的规划问题(二) 问题一解答
- leetcode算法题--最长上升子序列
- shiro的QuickStart
- 喜报 | 大地影院集团签约神策数据,影院 + 数据化高光时刻开启
- PHP算法导出Excel实现字段联动
- Java中的安全加密
- 1103: 平均学分绩点(函数专题)
- linux上pyenv卸载,在Ubuntu 18.04系统下安装pyenv的方法
- 用大数据看程序员,让你见到不为人知的一面!
- eslint的安装与使用
- windows下执行testng用例
- mongorepository查询条件_Java操作MongoDB采用MongoRepository仓库进行条件查询 | 学步园...
- 第二阶段小组冲刺第三天总结
- Unity WebGL自带VideoPlayer播放视频
- 微软Windows字体被诉侵权?我们来聊聊有关网站侵权被诉的那些事。
- PIKA trouble02 -- (error) ERR Syntax error, try CLIENT (LIST [order by [addr|idle]| KILL ip:port)
- android窗口变化事件,android ViewPager滑动事件讲解
- AS3动画效果常用公式
- 一位腾讯产品的微信公众号运营手册