- 主题:go适用于小内存的嵌入式linux系统吗?
NXP
【 在 qinwenren 的大作中提到: 】
: ARM7能跑700Mhz了?谁家的U?
--
FROM 61.141.255.*
为什么不用c重新写一下呢?
看起来不是很复杂啊
【 在 mykeyboard 的大作中提到: 】
: 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?
: --
发自「今日水木 on 鸿蒙」
--
FROM 73.93.166.*
没实际用过,只是在我的树莓派上玩了一下,感觉限制不少,有坑。。
【 在 littleSram (littleSram) 的大作中提到: 】
: tinygo,实际项目有人用过吗?
--
FROM 121.69.4.*
遇到了啥问题啊?
【 在 fork (pty.fork()) 的大作中提到: 】
: 没实际用过,只是在我的树莓派上玩了一下,感觉限制不少,有坑。。
--
FROM 103.107.216.*
这个就是glibc,而且版本还不算太老。
恭喜你不用趟太多的坑。
【 在 mykeyboard (scheme) 的大作中提到: 】
: 找到libc库文件了。在/lib目录下:
: 目标板上的输出, file libc-2.23.so
: libc-2.23.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, stripped
: ...................
--
修改:kirbyzhou FROM 36.110.147.*
FROM 36.110.147.*
没有什么实时性要求的话还是可以的吧,要不然STW问题就是最大的风险。
【 在 mykeyboard 的大作中提到: 】
: 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?
: --
发自「今日水木 on Android」
--
FROM 114.221.143.*
go如果不是与其他语言混合开发,没有必须用cgo的场景吧
cgo是坑,尽量不用
【 在 mykeyboard 的大作中提到: 】
: arm7+linux (32位),主频700Mhz
: 256M内存+256M Flash.
: 嵌入式linux系统带以太网接口联网, 设备运行时接入互联网.
: ...................
--
FROM 221.218.139.*
我们现在商用的一个程序跟你这个有点类似
arm7+linux (32位),主频700Mhz 256M内存+256M Flash这样的硬件设备上是稳定运行的
【 在 mykeyboard 的大作中提到: 】
: arm7+linux (32位),主频700Mhz
: 256M内存+256M Flash.
: 嵌入式linux系统带以太网接口联网, 设备运行时接入互联网.
: ...................
--
修改:XiaoCang FROM 223.104.150.*
FROM 223.104.150.*