1.开发板介绍1.1.概述IoT-Camera是一款由开发RT-Thread操作系统的上海睿赛德电子科技有限公司推出的开源物联网摄像头开发板,采用RT-Thread开源实时操作系统,支持C/C++/lua编程开发,兼容Arduino,可通过Wi-fi将视频数据传输至手机、平板等设备。
IoT-Camera购买地址:
https://item.taobao.com/item.htm?_u=o1m5ek5ce617&id=538501985648
RT-Thread是一款嵌入式实时操作系统,包含实时嵌入式操作系统内核及TCP/IP协议栈、文件系统、无线网络栈、设备抽象层、存储机制、算法、图形库、libc接口、POSIX接口等。RT-Thread源码下载地址:https://github.com/RT-Thread/rt-thread。不熟悉RT-Thread开发的可先先登录官网http://www.rt-thread.org/了解详情。
RT-Thread最新版本的编程手册下载地址:
http://www.rt-thread.org/download/manual/rtthread_manual.zh.pdf
请注意核心板的连接,正对方向看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软件功能持续更新中,请关注官网发布情况
2.开发环境配置IoT-Camera采用camera studio集成开发环境。camera studio是由睿赛德为IoT-Camera开发板专门开发的集成开发环境,基于eclipse定制,当前支持windows 32bit/64bit开发环境,请选择对应版本下载。
2.1.下载下载地址为:http://pan.baidu.com/s/1pLguWt1 密码: 6c33。下载后,请解压至开发主机,特别注意,解压后的目录不能含中文、空格等目录。
下载、解压完成后,请先打开网盘内有一个“camera_studio-env补丁(32位64位都适用)”完成camera studio env补丁
2.2.启动camera studio点击“env.exe”文件启动camera studio,因为camera studio需要做一些环境变量的设置(环境变量就在那个env.xml里面吧)。
注意:不是点击eclipse.exe启动的哦!
camera studio内含整套开发所需要的工具,如交叉编译器、make、python、scons等。
启动后初始界面,没有导入工程
2.3.SDK 源码2.3.1.导入:通过选择”File”->”Import”->”Existing Code as Makefile Project”导入
选择对应的sdk目录,
Languages:默认选择为c/c++
Toolchain:默认选择为none
目前官方对IOT-Camera的sdk在持续更新中,请关注官网发布情况。
2.3.2.编译 点击工具栏的小锤子或CTRL+B编辑SDK
编译完成后,可在Console下查看编译情况。rtthread.bin就是最终bin文件
3.SDK目录结构1)Makefile:eclipse调用make的入口文件,IoT-Camera采用scons完成编译;rtthread源码都采用scons完成build
2)armv6目录:针对FH8620内核的支持,包括栈初始化、上下文切换、MMU配置等
3)rt-thread目录:包括rt-thread内核、文件系统dfs、网络协议栈lwIP、shell命令行、c++支持等。目前采用的是比较新的v2.5.0版本代码
4)drivers目录:FH8620外设驱动,包括gpio、i2c、ssi、dma、sdio等;和rt-thread发行版本的bsp目录功能一致
5)libraries目录:包含系统的启动汇编代码;同时也包括一些底层库(AP6181 wifi驱动库、extlib芯片ISP库等),一般这部分代码不需要做相应的修改
6)platform目录:FH8620板级代码,和rt-thread发行版本的board目录功能一致。
7)applications目录:应用目录,目前有的demo有audio、gpio、pwm、adc、video等,该目录下还包括main主函数
8)packages目录:软件包目录,包括cJSON、ezxml、telnet_server、wget等,该目录下软件包会越来越多
4.SDK运行流程4.1.启动入口1)汇编级入口,异常向量表中的reset也指向这里,启动后程序跳转到这里运行。
2)依次完成各种模式下栈的配置情况。
3)进入C的入口:_rtthread_startup,该函数跳转至rt-thread内核
rtthread_startup函数位于rt-thread->src目录下的components.c文件内
4.2.RT-Thread的C入口rtthread_startup:完成各种板级初始化、RTT_Log显示、用户代码初始化、调度器启动等工作
1)硬件板级初始化函数rt_hw_board_init:主要完成了中断初始化、MMU初始化等工作
a.MMU初始化:通过内存描述数组,完成内存段映射关系
b.heap空间定义
2)用户初始化函数:rt_application_init
在main_thread_entry里面完成:
组件初始化
调用main
所以main函数只是rt-thread里面一个优先级为 RT_THREAD_PRIORITY_MAX / 3的任务;main函数位于applications目录下main.c文件内
到这里,整个Project已经启动完成,用户可在main里面添加自己的代码!
|