玩转 ART-Pi Smart -- webserver 网关
玩转 ART-Pi Smart -- webserver 网关webserver 网关简介
在 ART-Pi Smart SDK 里面提供了一个 gnu-app 示例:webserver 网关,并作为 ART-Pi Smart 的出厂 Demo。即移植 GNU 软件代码(uhttpd、sqlite)交叉编译成目标系统平台可以运行的库或二进制文件,作为 rt-smart 的一个用户 APP,并在 ART-Pi Smart 开发板上运行。用户也可以根据 文档下面的章节 “用户 APP(gnu-apps): webserver 网关开发环境搭建” 自行尝试编译此 gnu-app 示例中所有的固件。
快速体验 webserver 网关1. 通过将 USB-TypeC 连接到电脑 USB 给开发板供电,ART-Pi Smart 开发板会通过 u-boot 自动加载 emmc 中的 rt-smart 内核固件文件(/kernel/rtthread.bin)到内存去运行。同时也会自动运行 webserver 用户 APP。
2. 通过路由器和网线(或者通过板载的 rw007 wi-fi 模块),将开发板和测试电脑连接在同一个局域网内。
3.rt-smart 内核跑起来后,打开串口调试助手,通过下面命令先查看一下开发板的 IP 地址。# 获取开发板 IP 地址
msh />ifconfig
network interface device: e1 (Default)
MTU: 1500
MAC: a8 5e 45 91 92 93
FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP
ip address: 192.168.10.168
gw address: 192.168.10.1
net mask: 255.255.255.0
ipv6 link-local: FE80::AA5E:45FF:FE91:9293 VALID
ipv6 address: 0.0.0.0 INVALID
ipv6 address: 0.0.0.0 INVALID
dns server #0: 192.168.10.1
dns server #1: 0.0.0.0
4.打开浏览器,输入开发板的 IP 地址,显示 webserver 登录界面。 5.在浏览器上,输入默认的帐号:admin 和密码:admin 即可登录到 Webserver 网关主页面。 6.点击网页右边的菜单,分别可以进行不同的操作:用户管理、LED 配置、系统配置、系统日志等。
[*]首页展示:
[*]CPU、内存、空间的使用情况,默认 5s 刷新一次,可以设置
[*]表格形式展示系统版本、编译日期、gcc 编译器版本以及网络信息等
[*]支持系统时间显示,每隔一定时间与系统同步一次,间隔可设置
[*]支持网络状态监测,与 CPU、内存等的刷新频率一致
[*]用户管理:
[*]表格形式展示系统所有用户
[*]支持修改密码
[*]支持删除用户
[*]支持增加用户
[*]LED控制:
[*]支持对 LED 进行开关操作
[*]支持对 LED 状态实时显示,刷新频率可设置
[*]系统日志:
[*]表格形式展示日志内容,用户的所有行为都会记录到日志中
[*]支持删除日志
[*]系统设置:
[*]设置首页的系统信息刷新频率
[*]设置 LED 状态刷新频率
[*]设置时间同步间隔频率
webserver 网关开发环境搭建webserver 网关示例中的用户 APP 源码不是采用 scons 编译方式,而是采用 make 编译方式。故仅适用于 Linux 开发环境。需要了解 Makefile 的基本语法及编译过程。环境准备(基于 Linux 环境)安装一些必要的软件环境:$ sudo apt update
$ sudo apt install git bzip2 wget patch
$ sudo apt install gcc
$ sudo apt install scons
$ sudo apt install make
$ sudo apt install libncurses-dev
$ sudo apt install libpng-dev
$ sudo apt install libncurses5
设置环境变量
# 进入到 rt-smart 目录
$ cd rt-smart
# 设置对应的环境变量(rt-smart 工具链、编译器等)
$ source smart-env.sh
编译 gnu-apps libs 依赖库编译之前,确保 rt-smart/userapps/root/bin/ 目录存在。如果不存在,需要自己新建一下目录。或者在 rt-smart/userapps/ 目录下,打开终端先执行一下 scons 命令就会自己编译 rt-smart/userapps/apps 里面的用户 APP 的同时,会自动生成所需要的目录 rt-smart/userapps/root/bin/ 。⚠️如果在 Linux 下打开新的终端,记得重新设置一遍环境变量(rt-smart 工具链、编译器等)# 进入到 rt-smart/userapps/gnu-apps 目录
$ cd rt-smart/userapps/gnu-apps
# 编译 gnu-apps 的库 libs
$ ./build.sh libs
# 编译成功后:
# 1)在 rt-smart/userapps/sdk/include 目录下会安装相应的头文件
# 2)在 rt-smart/userapps/sdk/lib 目录下会生成编译好的 *.a 库文件
# 3)会显示下面的 Log
========= Copy lib and headers =========
========= Freetype building finished. =========
编译用户 APP:uhttpd
# 进入到 rt-smart/userapps/gnu-apps/uhttpd 目录
$ cd uhttpd
# 编译 用户 APP:uhttpd
./build_uhttpd.sh
# 编译成功:
# 1)在 rt-smart/userapps/root/bin 下会生成相应 elf 固件文件:uhttpd.elf
# 2)会显示下面的 Log
========= Copy uhttpd to root/bin =========
========= uHttpd building finished. =========
编译用户 APP:sqlite
# 进入到 rt-smart/userapps/gnu-apps/sqlite目录
$ cd sqlite
# 编译 用户 APP:sqlite
./build_sqlite.sh
# 编译成功:
# 1)在 rt-smart/userapps/root/ 目录下面,会新增加一个 var 文件夹
# 2)在 rt-smart/userapps/root/bin 下会生成相应 elf 固件文件
# 3)会显示下面的 Log
========= Copy sqlite3.elf and sqlite_test.elf to root/bin =========
========= Sqlite building finished. =========
拷贝 web 网页文件
# 进入到 rt-smart/userapps/gnu-apps/art-pi-demo-web 目录
$ cd art-pi-demo-web
# 执行下面脚本,会将dist下所有内容(网页文件)拷贝到 rt-smart/userapps/root/var/dist 下
./build_web.sh
到此为止,webserver 网关所需要的所有固件和网页文件都准备好了。将 rt-smart/userapps/ 目录下面的 root 文件夹拷贝到 SD 卡,然后启动 ART-Pi Smart 开发板,确保 SD 卡挂载到 rt-smart 文件系统的 /sd 目录下,启动 uhttpd 服务,就可以把 webserver 网关跑起来。ART-Pi Smart 上运行 webserver 网关
1.由于 ART-Pi smart 出厂已经自动运行了 emmc 里面的 webserver (uhttpd.elf 用户 APP)。故如果要用 SD 卡里面的固件和网页文件来运行 webserver, 需要先 Kill 掉 webserver(基于uhttpd)进程(开机时从 emmc 自动运行的用户 APP),然后重新运行此 webserver。# 通过 list_process 命令列出当前正在运行的所有进程,可以看 uhttpd 对应的 PID 为 1
msh />list_process
PIDCMD thread pristatus sp stack size max used left tickerror
---- -------- -------- ---------- ---------- -------------------------- ---
kernel tshell 20running 0x000001e4 0x00001000 54% 0x00000006 -09
kernel sd_mount30suspend 0x000000e0 0x00000800 27% 0x0000000f 000
kernel sys_work23suspend 0x00000098 0x00001000 34% 0x0000000a -09
kernel link_d1 30suspend 0x000000e0 0x00001000 13% 0x00000002 000
kernel mmcsd_de22suspend 0x000000f8 0x00001000 20% 0x0000000d -09
kernel tcpip 10suspend 0x00000144 0x00002000 15% 0x00000013 -09
kernel etx 12suspend 0x000000f0 0x00002000 04% 0x0000000a -09
kernel erx 12suspend 0x000000f8 0x00002000 10% 0x0000000f -09
kernel tidle0 31ready 0x00000078 0x00002000 11% 0x0000000f -09
kernel timer 4suspend 0x000000d0 0x00001000 07% 0x00000004 000
1 uhttpd.e uhttpd.e25suspend 0x00000190 0x00004000 07% 0x000000c7 -09
# 通过 kill 命令, 删除 uhttpd 进程,其中 1 为 uhttpd 进程对应的 PID 号
msh /> kill 1 -s 9
# 重新运行此 webserver (基于 uhttpd)
msh />/sd/root/bin/uhttpd.elf -f -p 80 -h /sd/root/var/dist &
2.Webserver 运行起来后的其他操作,请参考上面已经介绍过的章节 “快速体验 webserver 网关” 。 新唐NUC980 基于RT-Thread快速开发视频:
https://www.bilibili.com/video/BV1cu411R7uX
NUC980支持RT-Thread应用于串口服务器的方案及优势视频 https://www.bilibili.com/video/BV1CU4y1Z7uy
页:
[1]