嵌入式linux之go语言开发实战
使用go语言来开发嵌入式linux应用。
让开发更高效,运行更稳定,功能更强大。
探索能否带来开发工作效率的提升,产品质量稳定性方面的提升,产品功能上的增强
特立独行的猫a
csdn技术男猫哥,高级嵌入式软件工程师、c++软件工程师、全栈工程师。专注分享c++、QT、嵌入式linux、Android、HarmonyOS、前端小程序、AIoT(物联网+人工智能)、单片机、通信技术、开发工具等相关内容。
展开
-
Golang减小体积包的方法和c语言调用go封装的动态库步骤
嫌go编译后的动态库或静态库供c代码或嵌入式终端使用,体积太大?upx工具解决这一问题。1.go build添加 -ldflags="-w -s" 会去除 DWARF调试信息、符号信息```go build -ldflags="-w -s" ota_main.go``````go build -buildmode=c-shared -o test.so```-buildmode=c-shared requires exactly one main package注意:生成C可调用.原创 2020-06-12 19:00:23 · 4294 阅读 · 0 评论 -
嵌入式linux之go语言开发(十二)参数配置文件存储模块开发
参数配置和存储是经常用到的功能。比如常用的可以用json文件,XML文件,或INI文件,YAML文件,properties文件等存储配置信息。但是,这些都不够简单。我想要的简单有多简单呢?整个互联网上没有比这更简单好用的。例如,我想保存个IP地址和端口参数。理想是这样的:syscfg.ip = "218.28.133.181"syscfg.port = 22288sys...原创 2020-03-09 18:27:54 · 2175 阅读 · 0 评论 -
嵌入式linux之go语言开发(十一)让web服务器跑在终端上,通过网页配置终端参数
以集中器设备为例,有人知道吧。这玩意儿没界面,但是还一大堆参数需要配置。那怎么搞?做个上位机工具,做界面,再做个串口协议一个个的搞吗?太繁琐了,不但得制定协议,还得造工具配合调试,发布时还得配套给用户提供工具安装和使用。如果有一web界面,可以通过网页访问它,通过电脑在web网页中对终端参数进行配置岂不是很爽?只要能访问到集中器设备的IP地址即可。那么要在嵌入式linux上用c...原创 2020-03-09 17:53:02 · 3862 阅读 · 18 评论 -
嵌入式linux之go语言开发(十)
之前使用go语言,业余时间,两天就做出来了一版简易车载pos应用。可以支持银行卡双免https通信方式刷卡消费,二维码扫码消费。有界面显示,语音播放,串口通信。如果只是支持联机业务且不存储,不查询记录等功能,完全是一联机pos了。只完成了cpu卡驱动封装,支持cpu卡,不支持psam卡,也不支持M1卡,也没存储记录。之前也一直没再继续更新。但是这离最终的目标还远。最近想再坚持坚持,继续完善...原创 2019-12-04 18:37:41 · 3138 阅读 · 0 评论 -
嵌入式linux之go语言开发(八)存储模块的封装(二)
接着上一篇的继续,使用go实现一个适用于嵌入式上的存储模块。简单易用,使用简单方便。由于在终端上,不需要执行复杂的sql查询,多表级联查询等。就是用来存储记录的,因此设计为存储到表里的都为二进制的字节流。还有一个原因是终端上记录字段变动频繁,不适合动不动就更改数据库的表结构吧。如果想要方便记录的解析,可以结合protobuf把数据序列化为字节流存储进去。以下为按照这个思路的实现的存...原创 2019-08-15 18:33:55 · 3892 阅读 · 0 评论 -
嵌入式linux之go语言开发(八)存储模块的封装(一)
在嵌入式终端设备上,免不了要存储记录、上传记录、查看记录等操作。我称之为储存模块。怎样的操作接口,最好用?最方便?首先想到的是使用嵌入式数据库sqllite,没错,选他作为存储媒介,用go调用也是很方便的。但是,这还远远不够。原生的sql操作,若不做个封装,将会是很难用。另外,已经有很多ORM框架,即对象关系映射,将面向对象语言程序中的对象自动持久化到关系数据库中,就满足要求了吗?...原创 2019-08-09 18:38:03 · 868 阅读 · 1 评论 -
嵌入式linux之go语言开发(七)protobuf的使用
之前写过一篇博文:《如果终端采用protobuf与采集前置通信,能带来哪些变革?https://blog.csdn.net/yyz_1987/article/details/81147454》,介绍了使用protobuf作为序列化通信格式的诸多好处。那么接下来在嵌入式linux之go语言开发实战中,也尝试用protobuf作为序列化和通信的协议格式。之前想做个protobuf序列化的反向解...原创 2019-08-08 19:43:36 · 1559 阅读 · 0 评论 -
嵌入式linux之go语言开发(六)几行代码实现终端的远程日志诊断
日志是应用的镜子,可以发现应用中的问题,重要性不言而喻。以往设备有问题了,是如何诊断的?我们是现场人员到现场,又是配合抓包,又是配合提供机器日志,效率极其低下。如今都物联网时代了,能让数据跑路的还让人去跑路,不合适吧。日志应能实现手工触发上送,或应用中出现严重问题时主动上送,或者远程控制其是否上送。试想,如果能让问题出现在被客户发现之前,提前被开发人员获知,主动的解决问题,那么无疑...原创 2019-08-06 17:15:55 · 4751 阅读 · 0 评论 -
嵌入式linux之go语言开发(五)阶段性小结
经一段时间的实战,使用go开发嵌入式linux完全没问题。使用高级语言开发嵌入式,是一种享受!( 注:是嵌入式linux,而非内存和空间都很吃紧的嵌入式其他系统。)速度,稳定性及开发效率都是最高的。运行速度和稳定性不亚于传统c语言写的应用,但是开发效率绝对高出几个量级。举个例子,假如你的c应用里需要调用https的后台接口,协议格式是 xml 或者 json ,你会怎么做?用 ...原创 2019-02-19 16:06:41 · 12745 阅读 · 1 评论 -
嵌入式 linux 应用 go 语言开发(开篇,缘起)
go语言被称作互联网时代的c语言,用来开发嵌入式linux是一种享受。希望能否带来开发工作效率的提升,产品质量稳定性方面的提升,产品功能上的增强。物联网时代,就是要有所“变革”。而我理解的“变革”一词,有两层含义,“改变”和“革命”。一是要有所改变,不能守旧。守旧就是退步,就会逐渐跟不让步伐。二是要敢于改变,敢于坚持,敢于尝试新事物,排除非议,即敢于“革命”。选用go语言开发嵌入式li...原创 2019-01-24 21:06:52 · 6178 阅读 · 1 评论 -
嵌入式linux之go语言开发(四)go语言8583协议报文解析
原来的pos用c语言开发的,与银联后台通信走的是8583协议。那么用go来做,得实现个go语言8583协议报文解析且若想在电脑上跑交易,做个工具。用c语音处理起来不方便。用go还可以在电脑上跑交易。于是用go语言做一个8583解析,方便使用https://github.com/yangyongzhen/go8583/package up8583import ( "erro...原创 2019-01-11 19:20:42 · 4916 阅读 · 0 评论 -
嵌入式linux之go语言开发(三)卡库的封装
卡库的封装和调用,这是一个重头戏,完成了它,则就完整了所有的封装。至于网络通信,记录存储等,则可以使用go本身的模块去做。后续做一版完整的go语言版B503应用。截至目前,非接触式卡库的封装接近尾声,这部分花了不少精力。package drivers/*#cgo CFLAGS: -Iinclude#cgo LDFLAGS: -Llib -lpicc#include &l...原创 2019-01-28 18:05:44 · 1838 阅读 · 0 评论 -
嵌入式linux之go语言开发(二)c动态库驱动调用
c的代码及动态库调用:最终需要完成的封装有:串口驱动,扫码模块,语音播放库,UI显示库,卡库...一、串口及扫码模块驱动:linux上的串口驱动,这个较简单,有标准的模块可用。操作的是标准的设备文件。如:ttys0等。在B503机器上,串口和二维码扫码模块。都用到了标准的linux串口。只不过二维码模块的供电需要先开启IO口这个已经验证,串口和二维码的串口都是ok了。可以使用。...原创 2019-01-23 17:09:42 · 1852 阅读 · 0 评论 -
嵌入式linux之go语言开发(一)环境搭建
go语音被称作互联网时代的"c" 。简单和高效率,用在嵌入式上也是非常合适的。应该做一个大胆的尝试......意义何在? 现在的设备都在朝着物联网,智能化方面发展,已不是传统的单片机控制就能完成的简单的功能,普遍带有更高级的操作系统,比如linux和Android.而Android上开发可以使用高级语言java,或者如reaect native的html5混合开发。但是嵌入式lin...原创 2019-01-23 16:14:21 · 7668 阅读 · 4 评论 -
嵌入式linux之go语言开发(九)关于嵌入式GUI
go语言没有官方的GUI。其实怎么说呢,这一块儿的需求也不怎么迫切。毕竟每个语言都有自己擅长的领域。在电脑上开发界面还是C#或QT或java的swing来的快。没必要非用go吧,更多的是在电脑上基于web的BS架构的模式。在嵌入式上呢?笔者考察了好多GUI,目前没有发现太满意的。如QT,LittlevGL,Guilite,awtk,Nuklear等。这些GUI怎么说呢?要么太庞...原创 2019-09-29 18:25:56 · 2741 阅读 · 5 评论