Skip to content

Commit ee3cea7

Browse files
committed
编写industry_io_gateway的设计思想
1 parent a36e77d commit ee3cea7

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed
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)