鸣涧 发表于 2022-6-22 19:28:49

玩转 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 网关” 。

鸣涧 发表于 2022-6-23 00:26:38

新唐NUC980 基于RT-Thread快速开发视频:
https://www.bilibili.com/video/BV1cu411R7uX
NUC980支持RT-Thread应用于串口服务器的方案及优势视频 https://www.bilibili.com/video/BV1CU4y1Z7uy

页: [1]
查看完整版本: 玩转 ART-Pi Smart -- webserver 网关