linux
姚家湾
做研究和帮助他人是我的热情所在
展开
-
在STM32MP157C 上编译restbed 库
编译restbed 库在STM32MP157C 上编译restbed 库遇到了麻烦,几天没有过。问题出在openssl 上面。经过很长时间的摸索,可能问题出在restbed 目录中的 test 要用到openssl 库,cmake 指定在dependency目录中。后来干脆将test 文件夹删除掉。产生出错时,将cmake.txt 中有关test 的部分(89~97行)删除掉。编译通过了。产生了librestbed.a 文件。测试程序的编译: $CC webServer.cpp -I./i.原创 2020-11-24 20:36:01 · 458 阅读 · 1 评论 -
建立在STM32MP157 openAMP 上的IO-RPC协议
老实说,很久以前就知道corte-A 和cortex-M 的异构处理器芯片是个好东西。但是总是怕怕的,觉得它们开发起来好麻烦。网络上的介绍也说得稀里糊涂。直到最近使用STM32MP157C 才发现,至少STM32MP157 用起来没有想象的难。在做了一些基础实验之后,我还自己设计了一个应用层协议IO-RPC (IO 远程过程调用)。为设计Linux 的嵌入设备做准备。这将加快我们向基于Linux 的应用转移的步伐。相关内容,目前不成熟,分享给大家探讨。remoteprc,rpmsgAPI和open AM原创 2020-11-17 14:38:32 · 4284 阅读 · 10 评论 -
如何去掉STM32MP157C 上linux的LCD 和HDMI 显示,让出更多的控制引脚
STM32MP157 的最大特点是它的异构多处理器结构,它集成了两个Cortex-A7和一个Cortex_M4 处理器,其中cortex-M4 可以用来作为实时控制,或者通信处理器来使用。不过,当我使用米尔的STM32MP157 的开发板才发现,事情并不简单,开发板几乎使用和核心板的所有引脚,留给用户扩展的20pin 插座上引脚不多,肯定是不够用的。看了他们的底板电路图后,发现LCD 占了34个引脚。MIPI也占了14个引脚。这是一笔很大的资源。而且如果控制模块往往不需要LCD/HDMI 显示,而HM原创 2020-10-30 11:48:22 · 1265 阅读 · 0 评论 -
STM32MP157C bootloader,内核的编译
按照下面的博文中提示,学习如何编译STM32MP157 的bootloader 和内核。其中比较困惑的是文件目录有点搞来搞去,也有一点小问题。我将具体过程详细一点记录下来STM32MP157系列编译和烧录自定义的bootloader、linux内核及其设备树安装Yocto SDKYocto SDK 是编译STLinux 的工具包,从ST 官网下载解压缩yocto-sdk 包我在home/yao目录下建立了一个Yocto 目录,将下载的压缩包拷贝到这个目录中,从该目录进入终端方式.原创 2020-10-28 12:54:34 · 1111 阅读 · 0 评论 -
编写STM32MP1857C 中M4 应用程序
今天是学习STM32MP157C的8第三天,研究在STM32CubeIDE 下如何开发M4的应用程序.原创 2020-10-22 14:44:11 · 561 阅读 · 0 评论 -
Mbed modbus TCP slave 和ubuntu modbusTCP client 程序
modbus TCP 协议modbus TCP 协议使用TCP 协议发送和接收modbus 消息。modbus TCP 消息结构如下,在modbus 消息的前面,添加了6个字节的头:Transaction Id Protocol Length Unit Address Message 2 Bytes 2 Bytes 2 Bytes 1 Byte N Bytes Transaction Id :是本次交互的IDprotocol :为0 表示m原创 2020-06-24 21:45:41 · 2206 阅读 · 0 评论 -
Linux下 LuaJit ,lua 的安装和使用
Lua 是一种解释性程序设计语言,也称为脚本语言,在应用程序中实现一些即时编程。可以使用户自己添加一些简单的代码,增加了灵活性。在嵌入式系统中具有广泛的应用。它用于Adobe的Photoshop Lightroom和《魔兽世界》和《愤怒的小鸟》等游戏。实际上,Lua是当前领先的游戏脚本语言。使用Lua,需要如下软件Luajit -Lua 即时解释器lua 一个命令程序编译下载,安装git clone http://luajit.org/git/luajit-2.0.gitcd..原创 2020-06-04 06:50:28 · 6261 阅读 · 0 评论 -
4DIAC 运行时(Forte)连接PIFace Digital 2 模块
Piface 模块Piface 是树莓PI 上的一个通用数字输入输出模块。采用SPI 与树莓派通信。与全志H6 模块的连接编译4DIAC Forte 运行时修改后的程序原创 2020-05-22 11:58:44 · 1068 阅读 · 1 评论 -
linux SPI 与 mbed OS 通信
本实验测试 sysfs 方式的linux SPI 。主板是全志H6 模块构成的设备,从机是nucleo STM32F429 开发板,运行Arm Mbed OS原创 2020-05-21 15:39:54 · 435 阅读 · 0 评论 -
SysFs方式下C语言控制GPIO(RK3399)
在单片机上异常简单的LED 闪灯程序在Linux OS 下居然会异常麻烦,网络上介绍linux 控制GPIO的文章,各种说法都有。而且大都是shell 命令控制,而不是C语言如何控制。 在树莓PI 中,有一个wiringpi 库,而且资料非常清楚。但是其它厂商的东西就凌乱了。我同时使用瑞芯微的RK3399 PC 板和一块全志低成本的H6 板。方式各不相同。终于搞得明白了点,将内容分享给大家。Linux 下的设备驱动模型主要包含:类(class)、总线(bus)、设备(device)、驱动(drive..原创 2020-05-21 08:49:22 · 2643 阅读 · 0 评论 -
libmodbus的编译和使用
libmodbus 是支持Linux,Mac OS X,QNX和win32 的一个modbus库,支持modbus TCP和RTU 两种模式。libmodbus 的官网:https://www.libmodbus.org/当前版本为:v3.1.6编译我在win10 下的wsl 下编译 下载解压 libmodbus 的源码,F:lib modbus-3.1.6文件夹中。进入wsl 的console,输入下述命令完成编译 cd /mnt/f/libmodbus-3.1.6...原创 2020-05-15 10:09:49 · 5163 阅读 · 1 评论 -
MongoDB 容器化
MongoDB Docker 镜像安装docker pull mongo创建本地数据文件夹mkdir /data/mongodb启动MongoDB容器docker run --name mongodb-server0 -v /data/mongodb:/data/db -p 27017:27017 -d imageID --auth-v后面的参数表示把数据文件挂...原创 2019-12-04 19:17:27 · 504 阅读 · 0 评论 -
Node-RED 的工业应用场景
几年前就从树莓派,arduino 等创客教程中看到了Node-RED。只知道它是IBM 公司的一个开源项目-基于数据流(dataflow)的可视化编程工具。网上的许多文章和例子大都是树莓PI,arduino的node-RED/ IoT 例子,这给我造成 Node-RED 是个小玩意的印象。并没有太多地留意和深入地学习。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的...原创 2019-03-18 13:10:35 · 17364 阅读 · 5 评论 -
Mosquittopaho 和Paho MQTT的一些事情
MQTT 协议已经非常普及了。我们在程序中使用Mosquittopaho 作为linux 上的MQTT 代理,而客户端使用Paho MQTT库。用起来非常简单,但是有些细节还是值得记录下来。端口和协议 Mosquittopaho 开放了个端口(1883和9001),端口 1883 使用基于MQTT 的协议,在TCP上接收直接MQTT包。而9001 使用基于MQTT over we...原创 2019-06-27 10:44:37 · 8224 阅读 · 0 评论 -
了解微内核
网络上不断地出现微内核OS的概念。特别是华为的鸿蒙OS 将采用微内核,更激发了对微内核的热情。其实Google Fuchsia OS 也采用了微内核Zircon。收集了一些内容,帮助自己理解什么是微内核。术语微内核(Microkernel)在微内核中,大部分内核都作为单独的进程在特权状态下运行,他们通过消息传递进行通讯。在典型情况下,每个概念模块都有一个进程。因此,假如在设计中有一个系...原创 2019-06-27 12:03:12 · 4439 阅读 · 3 评论 -
linux OS 下的轻量级微内核及其在边缘设备中的应用
现在国内工业App 的概念很热,不过我看到许多号称工业App的东西都只不过是windows 下传统的工业应用程序而已,例如CAD软件,热分析软件,齿轮设计软件等等。甚至将传统的工业进销存软件换个马甲出来蹭热度来了。到底什么是工业App,如果将传统的工业应用软件称为工业App,那就有点牵强,也毫无意义。笔者认为,所谓App,它沿用了移动终端的概念,代表了部署使用非常便捷,客户体验好,能够在各种同类机...原创 2019-07-09 15:59:17 · 783 阅读 · 1 评论 -
BaseService开发- nodeJS 客户端
本文介绍基于nodejs 的App如何访问modular2edge 上的baseservice ,modular2edge 是我们正在开发的基于RK3399 的工业物联网边缘设备。它基于ubuntu OS,我们在其上采用了容器技术,并且在linux上开发了基础服务层baseservice。如果你对modular2Edge,BaseService 不了解,请看本人以往的博文。 为了验证...原创 2019-07-12 11:47:56 · 476 阅读 · 0 评论 -
websocketpp 的使用
用户App 使用websocket 访问BaseService ,因此,编写baseService App 时要选择一个websocket 库。我这里选择了websocketpp库。 应用程序client 定时向baseservice 发送 jsonrpc 格式的digitalWrite。依赖库该库要使用到 boost 的一些库:sudo apt-get install libbo...原创 2019-07-17 15:30:38 · 5152 阅读 · 0 评论 -
restbed 实现http 客户端
多用一个库,多一个坑,用一个库就要用足它的红利,可能的情况下尽量采纳同一个库。前面采用来restbed 来实现websocket 和http server ,今天需要写一个influxdb 的C++客户端。有一次选用restbed 来作为 http客户端。网上建议比较多的是微软的 C++ REST SDK (https://github.com/Microsoft/cpprestsdk),我还...原创 2019-08-08 11:36:42 · 2852 阅读 · 3 评论 -
C++ influxdb 客户端
写一个influxdb C++ 的客户端,influxDB 网站上推荐了influxdb.cxxhttps://github.com/awegrzyn/influxdb-cxx.下载下来运行了一个 benchmark 的代码#include <cstdio>#include <cstdlib>#include <string>...原创 2019-08-14 20:31:47 · 3399 阅读 · 3 评论 -
terminate called after throwing an instance of 'std::runtime_error'的解决方法
在 home/yao/bashrc 文件中加入export LANG=C好了,据说是设置语言环境。见鬼了,搞了半天,以为程序的问题export LC_ALL=CLC_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。...原创 2019-08-23 20:01:51 · 20989 阅读 · 3 评论 -
我的系统居然和鸿蒙有点像
我的一个业余项目(我称为自己的宠物项目(pet projects) 是开发一个物联网边缘设备的App 软件环境。跟着感觉走,做出了一个最小可运行系统,目前在测试中。 最近,华为公司发布了一些关于鸿蒙操作系统的消息。成为了网红OS。我惊人地发现,我的项目和鸿蒙有点像。微内核,高效率prc(华为称为IPC)的消息总线,分布式,跨平台。基本元素都类似,同样面向物联网(我不面向手机) 我...原创 2019-08-11 08:48:23 · 3197 阅读 · 7 评论 -
MQTT vs webSocket协议
边缘服务器采用了容器和微服务架构,其中重要的一个方面就是要选择一个高效率的消息系统,用于微服务之间的消息交换。为什么选择websocket 协议modular-2 edge 设计了自己的消息系统base service ,它采纳了websocket协议。为什么选择websocket? 主要是基于如下考虑:在一个边缘设备中,消息系统需要解决两方面的通信:app 和web 网页之间的...原创 2019-09-10 17:40:03 · 11593 阅读 · 1 评论 -
linux 串口ttyS, ttyACM 还是ttyUSB?
linux 串口的坑真的好多!明明连了几个,/dev下一大堆,而且名字也多种。tty,ttyS,ttyACM,ttyUSB。。。 STM32 的OTG CDC 方式的串口,链接到windows 的WSL 认出来的是ttySxx,在windows 上认出了COM36,那么,在WSL 中为ttyS36,。 不过到了ubuntu 系统中,却认出了ttyACM。ttyACM 是什么东西?网...原创 2019-06-18 16:28:26 · 17413 阅读 · 5 评论 -
Linux串口的中断方式和SIGIO 信号
网络上有一些关于linux 中断方式的文章,但是都只有接收程序,没有发送。我编写中断程序时候遇到一些问题。小结一下大概有如下几点:收发都会产生SIGIO 信号 产生SIGIO 会中断sleep,造成sleep 定时不准。比如 原先将send 放在了主程序的while语句中while(true){send(buf,size)sleep(1);}发现这个时候定时不准。SIGI...原创 2019-06-17 21:25:29 · 8299 阅读 · 3 评论 -
使用restbed库-websocket
http 通常只是一种client/server的通信方式,只能由client 请求时,服务器端才能够向client发送响应数据。这在某些场合是不方便的。比如在嵌入式系统的web服务器中,服务器需要将硬件采集的数据定时发送给客户端的HTML 界面上。这是可以使用websocket 机制。 Websocket 建立浏览器和web服务器之间一个socket 连接。任何一方都可以在任...原创 2019-05-19 11:16:18 · 2091 阅读 · 0 评论 -
OPC UA 的发布/订阅(PUB/SUB)模式
OPC 基金会2018年公布了OPC UA Part14 –关于OPC UA 的发布/订阅模式(简称为Pub/Sub),这是一个具有里程碑意义的事件。现在,我们就来谈谈opc ua的pub/sub的意义和在open62541 开源项目下的具体测试。发布/订阅模式 所谓发布/订阅机制是一种以基于内容的消息传输方式,每个消息都有一个主题(Topic),网络中的客户可以发布和订阅某...原创 2019-04-15 14:45:30 · 23252 阅读 · 11 评论 -
工业边缘设备会长成像手机那样么?
不要小看小型边缘计算设备,目前非常热闹。微软推出了azure sphere OS的设备,arm 公司推出了pelion和Mbed Linux OS,西门子,GE,ABB也有类似的产品,连像Harting,WAGO,Phoenix Contact这些传统接插件公司也相继开发边缘网关,边缘计算设备,其实它们是未来工业物联网,云计算平台的入口。战略地位非常重要,是狠角色的必争之地。...原创 2019-04-22 06:46:53 · 468 阅读 · 0 评论 -
微软的Azure Sphere操作系统(Azure Sphere OS )
微软公司Azure Sphere是物联网设备的安全,高层应用平台,内置通信和安全特性。它导入了新的一类安全,连接,交叉微处理器(MCU),这种处理器集成了实时处理能力和运行操作系统的能力。Azure Sphere的MCU 是微软和联发科(MediaTek)合作开发的MT3620。 MT3620 搭载 Arm Cortex-A7 应用处理器,运行效率高达 ...原创 2019-04-16 16:29:01 · 2466 阅读 · 0 评论 -
初识 Mbed Linux OS
Arm 公司宣布在2019年的春天发布Mbed Linux OS (简称MBL) ,也许英国的春天来的晚些,到目前还没有见到它的影子。不过在Mbed 的官网上释放出了一些文档,可以大概看出Mbed 的真面目。Mbed Linux 是为Arm Cortex-A 处理器设计的一个基于Linux Yocto 项目。能运行多个复杂的应用程序,实现边缘计算。Mbed Linux 提供了一些...原创 2019-04-03 10:44:39 · 1695 阅读 · 0 评论 -
Qt -设计嵌入式设备用户界面的利器
相对于window桌面软件和移动终端炫酷的用户界面而言,小型嵌入式设备的用户界面还停留在石器时代,就好比一个开的是Tesla,另一个是福特机械老爷车。多数设备制造商为了使设备的HMI 好一点的话,一段时间大多数会选择window CE,或者简单粗暴地使用windows+Intel 主板,近年来也有人会选择一个android 的PAD来做 设备的HMI。哪怕这个界面仅仅只是几个按键,参数框和...原创 2019-03-07 13:54:38 · 5470 阅读 · 0 评论 -
谈谈工业App (1)
近一段时间在媒体,网络,论坛和地方政府的各种文件中经常看见“工业App”的字眼,也看到一些名不见经传的三线城市,区县在推广工业App,千企,万企上云,实行各种政府补贴政策这些匪夷所思的新闻。本人虽然自喻为资深软件工程师,还是感觉孤陋寡闻,看不明白所谓“工业App”到是什么?使用英文 “Industry Apps” 谷歌一番,好像也搜不出什么像样的文章。估计“工业App”不是舶来品,而是中国...原创 2019-03-10 22:16:54 · 4450 阅读 · 2 评论 -
ST进入了cortex-A/Linux 阵营
ST 公司于2019年2月20 日宣布推出了运行linux ,android 的STM32 系列产品STM32MP157和STM32MP157C,这个新的产品线类似于freescale 的i.mx 7,是一种异构类芯片,内含一个或者两个cortex-A7 内核和一个Cortex-M4 核。 内涵3D GPU ,支持OpenGL ES 2.0和WXGA (1280x800)...原创 2019-02-25 10:27:25 · 1260 阅读 · 0 评论 -
OpenIL -工业4.0 时代的Linux
NXP 发布了OPENIL ,一个开源的面向智能工厂自动化的Linux发行版本(Open Industrial Linux)。OPENIL 的特性Xenomai-一个linux的实时框架 XML和 NETCONF网络配置实用程序 使用 gPTP的精确实时同步 时间敏感网络的以太网驱动 支持边缘计算服务OPENIL 的硬件平台OpenIL 支持 NXP 平台: - LS...原创 2019-05-10 07:50:05 · 3632 阅读 · 0 评论 -
window 10 下安装ubuntu
为了编写linux 下的嵌入式程序,更多地使用ubuntu。之前不希望在笔记本上使用虚拟机,所以特地买了一个小PC放在家里 ,单独安装了ubuntu。但是对于我这样开发无定所的人而言,毕竟不方便。今天早上起来看微信朋友圈,发现微软居然已经发布windows 10 下的 WSL2 了。感觉WSL 已经比较成熟了,于是斗胆安装了WSL(Windows Subsystem fo...原创 2019-05-08 07:16:36 · 2604 阅读 · 0 评论 -
restbed -C++ restfull 架构的应用
C++ 编写的嵌入式应用程序,需要通过Web 服务器作为UI。用C++ 实现restfull web service 程序。我选择了restbed 架构(https://github.com/corvusoft/restbed)。安装我使用的是windows WSL 形式的ubuntu OS,github 上安装讲的非常简单。git clone --recursive ...原创 2019-05-16 11:56:02 · 8783 阅读 · 3 评论 -
Node.js Docker 远程 API 访问
daemon 是docker的后台守护进程。事实上,Docker守护程序是在主机操作系统上运行的服务。它目前只能在Linux上运行,因为它依赖于许多Linux内核功能,但是有一些方法可以在MacOS和Windows上运行Docker。Docker守护程序本身公开了一个REST API。从这里开始,许多不同的工具可以通过此API与守护进程通信。Docker CLI是一个命令行工具,可让您与D...原创 2019-06-11 16:20:57 · 1875 阅读 · 0 评论 -
嵌入式设备的容器化App
...原创 2019-06-10 10:15:52 · 3786 阅读 · 3 评论 -
linux OS 与Mbed OS相结合(1)-Mbed 库的实现
对于程序员而言,硬件永远是麻烦制造者。而对付硬件的有力武器就是软件抽象。使用C++对象程序设计语言可以将硬件封装成C++对象。让程序员像定义和调用类的方式来访问硬件。这方面做的不错的是arduino,树莓PI和Arm 公司的Mbed OS。 在Mbed OS 中,使用C++类定义了大多数Cortex-M 处理的接口驱动:-DigitalOut-PWMout-Digita...原创 2019-06-02 15:35:22 · 1184 阅读 · 0 评论 -
FANUC 工业机器人编程与联网
FANUC 机械臂和控制器FANUC是领先的四家机器人制造商之一。FANUC 有多种系列化的机械臂可供选择:当前FANUC 机器人的最新控制器为R-30 iB,以前的型号为R-30 iA。机器人编程工具 当IT 界在大谈工业4.0 ,工业物联网的时候,千万不要以为传统的自动控制公司也跟着我们嗨,它们依然非常传统。拿机器人领域来说,不同的厂家使用不同的编程...原创 2019-05-29 15:37:27 · 10130 阅读 · 2 评论