谷动谷力

 找回密码
 立即注册
查看: 3408|回复: 1
打印 上一主题 下一主题
收起左侧

玩转 ART-Pi Smart -- webserver 网关

[复制链接]
跳转到指定楼层
楼主
发表于 2022-6-22 19:28:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
玩转 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 地址。
  1. # 获取开发板 IP 地址
  2. msh />ifconfig

  3. network interface device: e1 (Default)
  4. MTU: 1500
  5. MAC: a8 5e 45 91 92 93
  6. FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP
  7. ip address: 192.168.10.168
  8. gw address: 192.168.10.1
  9. net mask  : 255.255.255.0
  10. ipv6 link-local: FE80::AA5E:45FF:FE91:9293 VALID
  11. ipv6[1] address: 0.0.0.0 INVALID
  12. ipv6[2] address: 0.0.0.0 INVALID
  13. dns server #0: 192.168.10.1
  14. 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 环境)
安装一些必要的软件环境:
  1. $ sudo apt update
  2. $ sudo apt install git bzip2 wget patch
  3. $ sudo apt install gcc
  4. $ sudo apt install scons
  5. $ sudo apt install make
  6. $ sudo apt install libncurses-dev
  7. $ sudo apt install libpng-dev
  8. $ sudo apt install libncurses5
复制代码


设置环境变量
  1. # 进入到 rt-smart 目录
  2. $ cd rt-smart

  3. # 设置对应的环境变量(rt-smart 工具链、编译器等)
  4. $ 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 工具链、编译器等)
  1. # 进入到 rt-smart/userapps/gnu-apps 目录
  2. $ cd rt-smart/userapps/gnu-apps

  3. # 编译 gnu-apps 的库 libs
  4. $ ./build.sh libs

  5. # 编译成功后:
  6. # 1)在 rt-smart/userapps/sdk/include 目录下会安装相应的头文件
  7. # 2)在 rt-smart/userapps/sdk/lib 目录下会生成编译好的 *.a 库文件
  8. # 3)会显示下面的 Log
  9. ========= Copy lib and headers =========
  10. ========= Freetype building finished. =========
复制代码



编译用户 APP:uhttpd

  1. # 进入到 rt-smart/userapps/gnu-apps/uhttpd 目录
  2. $ cd uhttpd

  3. # 编译 用户 APP:uhttpd
  4. ./build_uhttpd.sh

  5. # 编译成功:
  6. # 1)在 rt-smart/userapps/root/bin 下会生成相应 elf 固件文件:uhttpd.elf
  7. # 2)会显示下面的 Log
  8. ========= Copy uhttpd to root/bin =========
  9. ========= uHttpd building finished. =========
复制代码



编译用户 APP:sqlite
  1. # 进入到 rt-smart/userapps/gnu-apps/sqlite  目录
  2. $ cd sqlite

  3. # 编译 用户 APP:sqlite
  4. ./build_sqlite.sh

  5. # 编译成功:
  6. # 1)在 rt-smart/userapps/root/ 目录下面,会新增加一个 var 文件夹
  7. # 2)在 rt-smart/userapps/root/bin 下会生成相应 elf 固件文件
  8. # 3)会显示下面的 Log
  9. ========= Copy sqlite3.elf and sqlite_test.elf to root/bin =========
  10. ========= Sqlite building finished. =========
复制代码


拷贝 web 网页文件

  1. # 进入到 rt-smart/userapps/gnu-apps/art-pi-demo-web 目录
  2. $ cd art-pi-demo-web

  3. # 执行下面脚本,会将dist下所有内容(网页文件)拷贝到 rt-smart/userapps/root/var/dist 下
  4. ./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。
  1. # 通过 list_process 命令列出当前正在运行的所有进程,可以看 uhttpd 对应的 PID 为 1
  2. msh />list_process
  3. PID  CMD      thread   pri  status      sp     stack size max used left tick  error
  4. ---- -------- -------- ---  ------- ---------- ----------  ------  ---------- ---
  5.      kernel   tshell    20  running 0x000001e4 0x00001000    54%   0x00000006 -09
  6.      kernel   sd_mount  30  suspend 0x000000e0 0x00000800    27%   0x0000000f 000
  7.      kernel   sys_work  23  suspend 0x00000098 0x00001000    34%   0x0000000a -09
  8.      kernel   link_d1   30  suspend 0x000000e0 0x00001000    13%   0x00000002 000
  9.      kernel   mmcsd_de  22  suspend 0x000000f8 0x00001000    20%   0x0000000d -09
  10.      kernel   tcpip     10  suspend 0x00000144 0x00002000    15%   0x00000013 -09
  11.      kernel   etx       12  suspend 0x000000f0 0x00002000    04%   0x0000000a -09
  12.      kernel   erx       12  suspend 0x000000f8 0x00002000    10%   0x0000000f -09
  13.      kernel   tidle0    31  ready   0x00000078 0x00002000    11%   0x0000000f -09
  14.      kernel   timer      4  suspend 0x000000d0 0x00001000    07%   0x00000004 000
  15.   1 uhttpd.e uhttpd.e  25  suspend 0x00000190 0x00004000    07%   0x000000c7 -09
  16.   
  17. # 通过 kill 命令, 删除 uhttpd 进程,其中 1 为 uhttpd 进程对应的 PID 号
  18. msh /> kill 1 -s 9

  19. # 重新运行此 webserver (基于 uhttpd)
  20. msh />/sd/root/bin/uhttpd.elf -f -p 80 -h /sd/root/var/dist &
复制代码

2.Webserver 运行起来后的其他操作,请参考上面已经介绍过的章节 “快速体验 webserver 网关” 。
+10
回复

使用道具 举报

沙发
 楼主| 发表于 2022-6-23 00:26:38 | 只看该作者
新唐NUC980 基于RT-Thread快速开发视频:
https://www.bilibili.com/video/BV1cu411R7uX
NUC980支持RT-Thread应用于串口服务器的方案及优势视频 https://www.bilibili.com/video/BV1CU4y1Z7uy

+10
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-27 22:47 , Processed in 0.088879 second(s), 41 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表