我正在用go给ARM板子写程序
go的虚拟内存占用很吓人,上来就2个G
但是真实内存占用才20多MB,所以应该是ok的。
【 在 mykeyboard (scheme) 的大作中提到: 】
: 标 题: go适用于小内存的嵌入式linux系统吗?
: 发信站: 水木社区 (Sun Sep 5 22:51:07 2021), 站内
:
: 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 于 Sep 5 23:52:00 2021 修改本文·[FROM: 113.104.214.*]
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 113.104.214.*]
--
修改:mykeyboard FROM 113.104.214.*
FROM 115.171.62.*