Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
IoT-Camera学习笔记之初识IoT-Camera
发布于 2016-10-24 21:32:29 浏览:15051
订阅该版
**1.开发板介绍** **1.1.概述** IoT-Camera是一款由开发RT-Thread操作系统的上海睿赛德电子科技有限公司推出的开源物联网摄像头开发板,采用RT-Thread开源实时操作系统,支持C/C++/lua编程开发,兼容Arduino,可通过Wi-fi将视频数据传输至手机、平板等设备。 IoT-Camera购买地址:[http://z.elecfans.com/49.html](http://z.elecfans.com/49.html) RT-Thread是一款嵌入式实时操作系统,包含实时嵌入式操作系统内核及TCP/IP协议栈、文件系统、无线网络栈、设备抽象层、存储机制、算法、图形库、libc接口、POSIX接口等。RT-Thread源码下载地址:[https://github.com/RT-Thread/rt-thread](https://github.com/RT-Thread/rt-thread)。 不熟悉RT-Thread开发的可先先登录官网[http://www.rt-thread.org/](http://www.rt-thread.org/)了解详情。 RT-Thread最新版本的编程手册下载地址: [http://www.rt-thread.org/download/manual/rtthread_manual.zh.pdf](http://www.rt-thread.org/download/manual/rtthread_manual.zh.pdf) [attach]0[/attach] 请注意核心板的连接,正对方向看IoT-Camera开发板,天线朝上,TF卡由右边插入; 位于上半部分的是按钮是Reset按钮 **1.2.硬件配置** CPU:采用富瀚微电子的FH8620。ARM1176JS内核,300MHZ主频,集成128Mbits DDR Wi-Fi:采用AP6181模组,支持802.11b/g/n?,支持station或软AP模式 视频:支持H.264 编码和支持 JPEG/MJPEG 编码 音频:内嵌 Audio Codec (单声道输入和输出),支持麦克风输入 硬件接口: 一个 iic 接口 一组 SPI 接口 一个串口 六个 gpio 接口 三路 pwm 接口 一个 micro SD 卡插槽 两路 ADC 输入 LINE IN 与 LINE OUT **1.3.软件功能** RT-Thread基本系统平台,涵盖:RT-Thread内核,SD卡上文件系统,TCP/IP协议栈 TFTP、web server方式更新固件; Wi-Fi Station模式/AP模式(支持WEP、WPA/WPA2等加密方式); 摄像头以720P方式录像成H.264视频并存储到SD卡中; 摄像头以720P方式录像成H.264格式,并通过RTSP TCP或UDP方式通过wifi传输出去; 摄像头以720P方式录像成mjpeg视频流,提供给浏览器查看; 摄像头以720P方式录像存储到SD卡中(H.264格式),并提供一路720P子帧用于mjpeg方式供浏览器浏览 支持POSIX C/C++开发,支持LUA脚本 IoT-Camera软件功能持续更新中,请关注官网发布情况                                                下载附件 [IoT-Camera学习笔记之初识IOT-Camera.pdf](https://oss-club.rt-thread.org/uploads/9652_8d30fc5808c69e52d0538567a796696b.pdf)
查看更多
16
个回答
默认排序
按发布时间排序
燕十三
2016-10-24
这家伙很懒,什么也没写!
**2.开发环境配置** IoT-Camera采用camera studio集成开发环境。camera studio是由睿赛德为IoT-Camera开发板专门开发的集成开发环境,基于eclipse定制,当前支持windows 32bit/64bit开发环境,请选择对应版本下载。 **2.1.下载** 下载地址为:[http://pan.baidu.com/s/1pLguWt1?](http://pan.baidu.com/s/1pLguWt1?)密码: 6c33 下载后,请解压至开发主机,特别注意,解压后的目录不能含中文、空格等目录。 [attach]1[/attach] 下载、解压完成后,请先打开网盘内有一个“camera_studio-env补丁(32位64位都适用)”完成camera studio env补丁 [attach]0[/attach] 2.2.启动camera studio 点击“env.exe”文件启动camera studio,因为camera studio需要做一些环境变量的设置(环境变量就在那个env.xml里面吧)。 注意:不是点击eclipse.exe启动的哦! camera studio内含整套开发所需要的工具,如交叉编译器、make、python、scons等。 [attach]2[/attach] 启动后初始界面,没有导入工程 [attach]3[/attach] **2.3.SDK 源码** **2.3.1.导入** 通过选择”File”->”Import”->”Existing Code as Makefile Project”导入 [attach]4[/attach] 选择对应的sdk目录, ?Languages:默认选择为c/c++ ?Toolchain:默认选择为none [attach]5[/attach] 目前官方对IOT-Camera的sdk在持续更新中,请关注官网发布情况。 [attach]6[/attach] **2.3.2.编译** 点击工具栏的小锤子或CTRL+B编辑SDK [attach]7[/attach] 编译完成后,可在Console下查看编译情况。rtthread.bin就是最终bin文件 [attach]8[/attach]
燕十三
2016-10-24
这家伙很懒,什么也没写!
**3.SDK目录结构** **1)Makefile:**eclipse调用make的入口文件,IoT-Camera采用scons完成编译;rtthread源码都采用scons完成build [attach]1[/attach] **2)armv6目录:**针对FH8620内核的支持,包括栈初始化、上下文切换、MMU配置等 [attach]2[/attach] **3)rt-thread目录:**包括rt-thread内核、文件系统dfs、网络协议栈lwIP、shell命令行、c++支持等。目前采用的是比较新的v2.5.0版本代码 [attach]3[/attach] **4)drivers目录:**FH8620外设驱动,包括gpio、i2c、ssi、dma、sdio等;和rt-thread发行版本的bsp目录功能一致 [attach]4[/attach] **5)libraries目录:**包含系统的启动汇编代码;同时也包括一些底层库(AP6181 wifi驱动库、extlib芯片ISP库等),一般这部分代码不需要做相应的修改 [attach]5[/attach] **6)platform目录:**FH8620板级代码,和rt-thread发行版本的board目录功能一致。 [attach]6[/attach] **7)applications目录:**应用目录,目前有的demo有audio、gpio、pwm、adc、video等,该目录下还包括main主函数 [attach]7[/attach] **8)packages目录:**软件包目录,包括cJSON、ezxml、telnet_server、wget等,该目录下软件包会越来越多 [attach]8[/attach]
燕十三
2016-10-24
这家伙很懒,什么也没写!
**4.SDK运行流程[/size]** **4.1.启动入口[/size]** **1)汇编级入口**,异常向量表中的reset也指向这里,启动后程序跳转到这里运行。 [attachment=-9] **2)依次完成各种模式下栈的配置情况**。 **3)进入C的入口:**_rtthread_startup,该函数跳转至rt-thread内核 [attachment=-8] rtthread_startup函数位于rt-thread->src目录下的components.c文件内 [attachment=-7] **4.2.RT-Thread的C入口rtthread_startup:[/size]** 完成各种板级初始化、RTT_Log显示、用户代码初始化、调度器启动等工作 [attachment=-6] **1)硬件板级初始化函数rt_hw_board_init**[/size]:主要完成了中断初始化、MMU初始化等工作 [attachment=-5] **a.MMU初始化**:通过内存描述数组,完成内存段映射关系 [attachment=-4] **b.heap空间定义** [attachment=-3] **2)用户初始化函数**[/size]:rt_application_init [attachment=-2] 在main_thread_entry里面完成: ?组件初始化 ?调用main [attachment=-1] 所以main函数只是rt-thread里面一个优先级为 RT_THREAD_PRIORITY_MAX / 3的任务;main函数位于applications目录下main.c文件内 [attach]0[/attach] 到这里,整个Project已经启动完成,用户可在main里面添加自己的代码!
燕十三
2016-10-24
这家伙很懒,什么也没写!
**5.bin文件烧写运行[/size]** 刚拿到手的IOT-Camera开发板是没有烧写摄像头固件的,所以我们要先刷机!!! 最新版本的Firmware已经支持3种不同的刷机方式。 **5.1. 更新固件方式1:手工TF卡刷机[/size]** **1) Step1:**将camera studio编译完成后的rtthread.bin复制至TF卡根目录,插入IoT-Camera核心板。 **2) Step2:**将USB插入电脑后,打开串口终端,波特率为115200,本人使用的是SecureCRT。在显示”Hit any key to stop autoboot”倒计时为0前,按任意键进入uboot命令行模式。 [attachment=-1] **3) Step3:**选择启动方式:IoT-Camera可以通过2种不同的启动模式启动 **a) 启动方式1:将rtthread.bin从TF复制至内部flash**[/size] 每次从内部flash启动IoT-Camera,每次更新固件都需要手工进uboot输入命令。(也太麻烦了吧!!!) ? 将TF卡中的rtthread.bin加载到0xA0000000内存地址中 fatload mmc 0 0xA0000000 rtthread.bin ? 将镜像文件烧录至 Flash 中(从 4M 位置,烧录 2M 数据) sf probe 0 sf erase 400000 200000 sf write a0000000 400000 200000 ? 设置 U-Boot 启动参数并保存 set bootcmd 'sf probe 0; sf read a0000000 400000 200000; go a0000000' save ? 重新启动 reset [attach]0[/attach] 可以看到,程序已经正常运行 **b) 启动方式2:从TF卡启动IoT-Camera,uboot自动读取rtthread.bin文件[/size]** ? 在uboot中修改启动参数 set bootcmd fatload mmc 0 0xa0000000 rtthread.bin; go 0xa0000000 ? 保存uboot配置 save ? 重新启动 reset **两种启动方式比较:** 1. 启动方式1适合正式生产的时候使用,在程序调试阶段并不合适。 2. 启动方式2会在启动时读取rtthread.bin增加启动时间,但适合程序调试。 3. 在下面的更新方式中会经常用到,所以推荐使用启动方式2。
燕十三
2016-10-24
这家伙很懒,什么也没写!
**5.2.更新固件方式2:通过wget下载rtthread.bin至TF卡并在TF卡上运行[/size]** 更新固件方法1只适合的IoT-Camera第一次刷机使用或者由于程序出错无法正常启动时使用!如果每次更新程序都需要去通过TF卡在电脑上复制bin文件那是非常麻烦的!那我们来试试方法2吧! **1) Step1格式化分区:[/size]**这个很重要哦!否则rtthread系统访问不了TF卡(step1只需要执行一·就可以了) **a. **固件运行起来后,需要格式化rootfs分区。输入: msh /> mkfs rootfs msh /> reset 后重启 **b. 创建sdcard目录.输入:** msh /> mkdir sdcard msh /> reset 后重启 这样,rtthread系统能够自动装载 flash 上的 rootfs 分区到’/’根目录,而把 TF 卡装载到’/sdcard’目录中。可通过ls命令查看当前目录 [attachment=-7] **2) Step2启动web_server[/size]** c. 如果电脑上没有安装python2.7,可先安装,安装完成后,在windows命令行输入: python c:iot_camerafirmware-20161002websrv.py 启动web_server [attachment=-6] ? 如果不想安装python2.7,camera_studio自带了python2.7,在windows命令行输入: cd c:iot_cameracamera_studio oolsPython27 python.exe c:iot_camerafirmware-20161002websrv.py [attachment=-5] 启动完成后,在浏览器输入http://localhost:8000/查看是否成功运行。 注:以上2种方式启动的web_server的根目录不一样,这个对于我们下面使用wget获取文件位置有很大关系(本人使用的是自己安装python2) 3**) Step3将IoT-Camera连接网络:**[/size] 使用wifi join ssid password命令,ssid和password为需要配置的网络名和密码。 [attachment=-4] 连接成功!并可使用ifconfig查看ip确认是否正确连接 [attachment=-3] **4) Step4使用wget命令下载[/size]** 在电脑端先将rtthread.bin复制至对于web_server根目录下,在msh命令行输入: wget [http://192.168.31.166:8000/rtthread.bin](http://192.168.31.166:8000/rtthread.bin) /sdcard/rtthread.bin 如配置及输入命令正确,wget将开始从web_server下载rtthread.bin文件 [attachment=-2] 下载完成!!!重启iot-camera就可运行新程序。 [attachment=-1] 可修改Makefile文件,每次编译完成后自动将rtthread.bin复制至web_server根目录(目录请自行修改) [attach]0[/attach]
燕十三
2016-10-24
这家伙很懒,什么也没写!
**5.3.更新固件方式3:通过rboot启动并下载rtthread.bin至TF卡并在TF卡上[/size]** 更新固件方式2在程序正常运行后,可通过wget获取rtthread.bin至TF卡完成更新。但如果用户修改程序后无法正常运行wget呢?只能用方式1了吧???当然还有更便捷的方法,通过rboot启动IoT-Camera。IoT-Camera启动流程: [attachment=-2] 让我们来试试用rboot启动系统,更新系统吧! **1) Step1:**将rboot.bin rboot.sh init.sh rtthread.bin这4个文件复制至TF卡根目录。文件下载地址为:网盘http://pan.baidu.com/s/1pLguWt1的prebuilt_demo目录下(密码:6c33) **2) Step2:**按照前章描述启动IoT-Camera并进入uboot命令行,输入如下命令: ? 设置执行地址 setenv bootcmd fatload mmc 0 0xa0200000 rboot.bin; go 0xa0200000 ? 设置 uboot 的提示计数等待为 1 setenv bootdelay 1 ? 保存设置 save ? 重启 reset 这时候就可以看到rboot已经正常工作了 [attachment=-1] rboot.sh脚本是rboot启动提示计数器减到0后自动运行的脚本文件。在rboot.sh中可以指定下一个启动的rt_thread固件位于哪里。如: ? 加载TF卡根目录下的rtthread.bin boot /rtthread.bin ? 加载web_server服务器上的固件 boot [http://192.168.31.166:8000/rtthread.bin](http://192.168.31.166:8000/rtthread.bin) 为了让rboot能上网,需要先在rboot下先进行wifi配置;输入:wifi cfg ssid passwd。完成wifi配置后,rboot会在提示计数器时试图关联到本地wifi网络中,以便执行rboot.sh脚本时,能尽快下载到更新需要的固件 本人使用的是加载TF卡根目录下rtthread.bin这种方式,如需要更新程序直接进rboot命令行输入:boot [http://192.168.31.166:8000/rtthread.bin](http://192.168.31.166:8000/rtthread.bin);这样可提高iot-camera加载启动速度 [attach]0[/attach] 下载完成后,rboot会自动
燕十三
2016-10-24
这家伙很懒,什么也没写!
**6.视频测试[/size]** 在iot-camera正常启动rt-thread系统后,可以使用help命令,或tab键获得当前rt-thread支持的命令行。 [attachment=-4] 具体该指令如何使用,可输入该指令: [attachment=-3] 1. 将iot-camera连入wifi。联网操作请参照前述操作。 2. 在msh命令行中输入 mjpeg start 启动mjpeg_server,默认端口为80 [attachment=-2] 3. 启动成功后,在浏览器中输入当前iot-camera的IP地址,就可看到视频流。 [attachment=-1] 并可在msh中断上看到client连接状态 [attach]0[/attach] 注: 在 PC 上请使用 Chrome 或 firefox 浏览器来打开视频, IE 不支持这种方式
燕十三
2016-10-24
这家伙很懒,什么也没写!
IoT-Camera学习笔记之初识IOT-Camera[attach]2704[/attach]
bernard
2016-10-24
这家伙很懒,什么也没写!
太赞了!这么多图!这个也是目前最全的笔记了
lijinqiu
2016-10-25
这家伙很懒,什么也没写!
谢谢楼主分享,希望楼主能坚持更新下去!!
撰写答案
登录
注册新账号
关注者
0
被浏览
15.1k
关于作者
燕十三
这家伙很懒,什么也没写!
提问
4
回答
15
被采纳
0
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
YZRD
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部