arm7+linux (32位),主频700Mhz
256M内存+256M Flash.
嵌入式linux系统带以太网接口联网, 设备运行时接入互联网.
此嵌入式设备的功能是接收互联网上控制服务端的指令,通过四路串口(波特率115200bps)控制和采集外设的状态和数据:
1.接收控制服务端的指令对外设进行控制(控制服务端与linux客户端, linux与外设(通过串口)之间走的是不同的二进制私有协议)
2.将采集到的数据(外设主动上报)传送到数据服务端(MQTT).
3.在局域网内接收PC调试客户端软件的连接,配置运行时参数,控制外设状态(json).
系统对实时性没有很苛刻的要求.
此设备上应用系统现有的实现是用C++写的.写这个版本的哥们已经提桶跑路了.
在他的C++实现中,共有四个线程:
A线程与控制服务端通信,作为其客户端,客户端与服务端维持长连接;
B线程与MQTT broker通信,是MQTT client
C线程通过四路串口与外设通信;
D线程在指定的端口上监听,接收局域网上PC调试/配置客户端的连接;
控制信息流是: 互联网服务端--->线程A --->线程C--->串口-->外设, 外设的回复信息流刚好相反.
外设主动上报的数据流是: 外设-->串口-->线程C-->线程B-->互联网MQTT broker-->数据服务端
以上说的外设不单是指与物理串口的直接相连的外设, 实际上这四个外设通过无线信号(Lora/BT等)连接了很多个子(下级)外设.绝大部分时候,这四个外设起的作用是下级子外设数据的上下行中转角色.
写C++这哥们,写出来的程序,C/C++的风格都不像,缺少像样的函数封装和复用的概念. 这里面,近2000行的单个函数,就有两个,近500行的函数,不下三四个.全局变量满天飞.
实际测试中,经常冒出一些奇怪的问题,定位和查找很费时间.
想尝试着用go来重新撸一遍,当作go学习练手的机会.
现在有两个疑问:
1)256M的内存,能不能撑住这个应用系统运行起来的内存需求?
2)go对串口进行读写,是否有现成好用的第三方库?还是用cgo?
--
修改:mykeyboard FROM 113.104.214.*
FROM 113.104.214.*