Skip to content

Commit 34c2efa

Browse files
authored
Merge pull request #109 from loogg/mlw
编写industry_io_gateway的设计思想
2 parents 11a96f5 + 5ed7d83 commit 34c2efa

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-0
lines changed

projects/industry_io_gateway/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## 简介
44

55
本例程为工业网关综合DEMO,使用动态插件方式扩充功能。内置一个web服务器能够通过网页显示开发板的基本信息及插件信息。同时,内置ftp插件,能够通过ftp客户端(如FileZilla)进行操作。
6+
如果对本例程想进一步了解可以阅读[设计思想](./docs/设计思想.md)
67

78
## 硬件说明
89

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# INDUSTRY-IO-GATEWAY 设计思想
2+
3+
## 前言
4+
5+
在拿到开发板的时候,看到板上那么多资源就想做个好玩的东西。当时胡思乱想了好久,想做好多功能,再一合计还要为未来的拓展性行方便,头都大了。
6+
7+
这时候正好是在接触Linux应用编程,了解了一点动态模块的知识,发现RT-Thread也有动态模块功能,再一看好家伙 `32M SDRAM`,放手开干。
8+
9+
在写代码前思考了一段时间,最终明确了目标:
10+
11+
1. 除必要的底层代码外,内核代码最精简,极少改动
12+
2. 所有应用代码均可动态实现
13+
3. 动态插件可视化配置
14+
15+
基于以上的目标实现了第一版代码。当然与最终目标还有不少出入,但会在接下来的版本中不断完善。
16+
17+
## 设计与实现
18+
19+
### 思路
20+
21+
#### 调试
22+
23+
调试功能虽说是占整个项目的很小一块,确实极为重要的一块。基于RT-Thread的finsh组件可以很容易的实现这一功能,但在实施过程中却遇到了几个问题:
24+
25+
1. 目前只能单一的输入输出
26+
2. 不能更方便的进行多通道的扩展
27+
28+
在仔细研究了一番设备框架后,理解了select的本质实现,进而衍生出了 `agile_console` 软件包来对调试设备的多通道输入输出进行管理。同时对 `agile_telnet` 作了适配,实现了串口、以太网的同步调试。并且目前已经进一步实现了 `mqtt` 适配,实现了远程调试(未开放插件)。
29+
30+
#### 目录结构
31+
32+
![目录结构](../figures/目录结构.png)
33+
34+
目录结构如图,从图中可以看到 **目标2:所有应用代码均可动态实现****目标3:动态插件可视化配置** 的影子。
35+
36+
### 实现
37+
38+
![流程](../figures/流程.png)
4.3 KB
Loading
232 KB
Loading

0 commit comments

Comments
 (0)