embedded
文章平均质量分 62
10km
这个作者很懒,什么都没留下…
展开
-
conan入门(二十六):使用make编译erpc/erpcgen(makefile)
conan 使用make编译makefileconan是个包管理工具,不仅仅支持cmake编译,还支持很多常用的构建工具如configure/make,msbuild,VisualStudo,meson,本文以NXP的Embedded RPC为例说明conan中如何使用make来构建项目。NXP的eRPC (Embedded RPC) 是用于多芯片嵌入式系统和异构多核 SoC 的开源远程过程调用 (RPC) 框架。目前只支持make构建,我的一个项目中用到了它,因为访问github比较慢,我fork了一原创 2022-04-08 10:50:03 · 3108 阅读 · 0 评论 -
arm-xm-linux交叉编译openssl
编译环境Ubuntu 16.04 x86_64arm-xm-linux.tar.gz下载openssl源码wget https://www.openssl.org/source/openssl-1.1.0d.tar.gz解压源码tar xvf openssl-1.1.0d.tar.gz执行Configure脚本./Configure linux-generic32 \ no-shared \ no-asm \ no-async \ --prefix=/ilock/dist/xm原创 2022-03-04 16:06:47 · 350 阅读 · 0 评论 -
cmake:基于MDK(Keil)的Nationstech.N32G45x平台交叉编译工具链定义
Keil MDK是非常常用的单片机开发集成环境,Keil公司2005年由ARM公司收购,现在是ARM主要的嵌入系统开发平台(ARM的另一个开发环境ds-5早在九年前就停止更新了)。Keil虽然是个集成开发环境,但Keil本身其实是由μVision IDE和arm编译器构成。cmake虽然目前不支持生成μVision的工程文件,但cmake完全可以使用MDK中提供的arm编译器来实现独立于μVision的交叉编译(说到底μVision只是一个为开发者提供易用的GUI界面,真正干活的还是编译器)。cmake原创 2022-02-06 15:36:07 · 2172 阅读 · 0 评论 -
cmake/ASR1603:交叉编译工具链定义
在ASR1603 4G模块平台上用cmake交叉编译要求安装DS-5编译器(DS500-BN-00022-r5p0-26rel0.zip)及ASD1603 SDK(asr1603_opencpu_sdk-2022-01-13.zip)(参见ASR1603相关的技术手册)。并如下设置环境变量:setenv.bat@rem ------------------------------------------------------------@rem (C) Copyright [2006-2008]原创 2022-01-26 13:31:39 · 2117 阅读 · 0 评论 -
君正X2000交叉编译openssl
编译环境Ubuntu 16.04 x86_64ingenic X2000 编译工具链从君正官网下载 : http://www.ingenic.com.cn/?product/id/34/lm/3.html下载openssl源码wget https://www.openssl.org/source/openssl-1.1.0d.tar.gz解压源码tar xvf openssl-1.1.0d.tar.gz执行Configure脚本./Configure linux-generic32原创 2022-01-12 10:48:12 · 1069 阅读 · 0 评论 -
make/cmake:海思himix200交叉编译zlib
介绍基于cmake和configure使用海思himix200交叉编译器交叉编译zlib的过程原创 2021-12-29 11:27:37 · 1261 阅读 · 0 评论 -
海思 himix200交叉编译openssl
使用海思himix200平台的编译工具链交叉编译openssl的过程原创 2021-12-28 12:46:37 · 1146 阅读 · 0 评论 -
C:基于GNU regex(regex.h)regexec实现正则表达式多次匹配
GNU regex是GNU提供的跨平台的POSIX 正则表达式库(C语言)。不算GNU提供的扩展函数,POSIX标准的regex库总共就4个函数regcomp,regerror,regexec,regfree.我们知道 regexec 不能通过一次调用找到字符串中所有满足匹配条件的字符串位置,所以需要通过步进偏移的方式循环执行regexec才能把字符串中所有满足条件的匹配找出来, 每一次匹配的起始偏移是上一次匹配到的字符串结束偏移。在上一篇博客《C: GNU regex library (regex.原创 2021-11-15 16:44:39 · 2255 阅读 · 0 评论 -
C语言:跨平台环境下使用snprintf,vsnprintf系列函数要注意返回值的问题
标准C语言函数snprintf,vsnprintf系列函数可以向指定的缓冲区输出格式化打印的字符串。如果指定的缓存区足够大,那么调用正常,返回值就是写入缓存区的字节长度(不含结尾'\0')那么缓存区不够大的情况呢?本文要说的是这系列函数的在缓存区长度不足以输出所有内容时的返回值在不同一编译器提供的实现表现是不同的。我们用如下一段简单的测试代码来验证其返回值表现。#include <stdio.h>#include <errno.h>#include <string原创 2021-11-08 17:24:27 · 2106 阅读 · 0 评论 -
eRPC:通过实现双向请求的串行通讯传输(dual serial transport)支持client/server混合运行
Dual serial transport概述eRPC 的默认的设计模型是简单的主从模式,也就是设备A上运行服务,另一个设备B主动发起请求调用A的服务,但在实际的应用中,我们需要双向的请求,也就是说设备A,设备B互为主从,两台设备上都会运行服务供对方调用。在这种模式下,原有的串行通讯传输(SerialTransport)实现就不能满足要求,因为设备接收到的数据无法知道是给server的请求(Requst),还是给client的响应(Response)。如果要实现上述的双向请求并不复杂,只要修改串行通讯原创 2020-11-16 18:30:03 · 1579 阅读 · 0 评论 -
eRPC:修改erpcgen代码生成模板增加#if#endif宏定义,解决多个eRPC服务共用时类型重复定义问题
最近在用eRPC(https://github.com/EmbeddedRPC/erpc)实现通信时,发现一个问题,当有两个以上eRPC服务共用时会存在类型重定义问题,比如binary_t会在每个eRPC服务的头文件中定义一次。解决这个问题只能修改erpcgen的模板,还好,eRPC模板代码结构比较清晰,很快就找到生成eRPC服务接口头文件的位置(${ERPC_ROOT}/erpcgen/src/templates/c_common_header.template)只要添加类似如下的宏定义就可以解决问原创 2020-10-24 17:40:31 · 635 阅读 · 0 评论 -
erpc(EmbeddedRPC)入门笔记
RPC最近在忙一个IOT设备的项目,想设计一个通信系统通过串口控制设备(freertos)的运行。按照传统的设计思路,先要定义一套串口通信协议,在这套协议中传输层协议、应用层协议一个都不能少。每一层协议都要自己实现。数据编码/解码,数据校验,容错,这些非常基础的东西都要自己实现。等这些协议都实现了,才是能开始设计真正的业务逻辑。和同事商议后,一致认为要是照这么干,黄花菜都凉了。我们的生命不能...原创 2020-04-18 11:53:26 · 6723 阅读 · 0 评论 -
XBurst基于MXU指令对YUYV转RGB2的优化
YUV转RGB的公式是固定的,YUV转RGB的代码网上也可以找到很多,不过真的要将这些标准代码用在实际的项目中就会发现, 性能还是不够好。最近在君正的X1000 CPU上实现YUYV转RGB24时,为了不使用浮点计算,使用了下面的整数优化公式 B = y + ((443 * (u - 128)) >> 8); G = y - ((179 * (v - 128) + 86 * (...原创 2018-11-04 21:37:22 · 870 阅读 · 3 评论 -
minigui:mGNCS简介塈设置控件(widget)enable/disable
mGNCS在 miniStudio 的开发中,为实现可视化图形界面的设计,飞漫软件在 MiniGUI 现有接口基础上,开发了一套新的控件集。miniStudio 引入的新控件集是在原 MiniGUI 控件集基础上发展而来的,为与 MiniGUI 固有控件集(Intrinsic Control Set)区别,称为“新控件集(New Control Set,简称 mGNCS)”。 基于miniS...原创 2018-06-19 13:45:14 · 1408 阅读 · 0 评论 -
minigui/mgncs:使用哈希表(HashTable)实现窗口局部变量(Widget Local)机制
需求说明在程序程序UI界面设计的时候,经常会遇到这样的情形,需要一个临时变量来保存一个值,这个值还会被窗口的其他消息响应函数用到,窗口销毁这个变量也就没有用了,也就是说这个变量只在窗口生命周期存在,类比线程局部变量(Thread Local)的概念,我们可以把它叫做窗口局部变量(Widget Local)。 然而不论是Windows上的MFC控件库,还是QT,还是现在我们项目中使用的Mini...原创 2018-08-14 14:46:46 · 490 阅读 · 0 评论 -
minigui/mgncs:利用LoadBitmapFromMem函数对摄像头MJPEG格式图像解码
可能与虚拟机有关,在virtualbox虚拟机环境下,即使VIDIOC_S_FMT设置了pixelformat为RGB或YUV,通过v4l2视频驱动框架读取摄像头帧图像的格式总是MJPG。 MJPG是什么格式?以下说明摘自百度百科: MJPEG全名为 “Motion Joint Photographic Experts Group”,是一种视频编码格式,中文名称翻译为“技术即运动静止图像...原创 2018-08-29 00:35:09 · 1811 阅读 · 2 评论 -
minigui/mgncs:自定义渲染器(renderer)实现透明背景按钮(transparent button)
一般来说,对于mStatic,mImage这样的控件,只要设置了透明属性(transparent=true),就可以实现背景透明,但对于mButton按钮却不行,即使设置了透明属性,也不能实现透明背景。miniStudio中对按钮设置透明属性示例: 这是为什么呢?通过跟踪minigui/mgncs的代码发现了原因: 以下是libmgncs-1.2.0/src/renderer/flat...原创 2018-08-30 14:47:36 · 2002 阅读 · 12 评论 -
minigui:静态编译连接mgncs库时遇到的xml2的问题
最近做一个基于minigui/mgncs的项目,在开发阶段因为是在ubuntu下基于minigui的模拟器开发,所以编译时都是标准的动态库连接。没啥问题,很顺序。现在项目功能开发告一段落,要向嵌入式平台移植了,就要把编译改为全静态连接(--static)。问题就来了。编译正常,连接时报了如下一大堆错误:/usr/lib/x86_64-linux-gnu/libxml2.a(nanohttp....原创 2018-10-14 15:33:09 · 1526 阅读 · 0 评论 -
minigui:mips平台交叉编译报错error: include location "/usr/include/" is unsafe for cross-compilation
今天在对minigui做交叉编译,下面是编译的部分脚本./configure \ --host=$host \ --with-runmode=ths \ --prefix=$_prefix \ || exit -1make -j8 || exit -1如果不做交叉编译,host指定为当前机器的架构(x86_64-linux-gnu)则编译正常如果设置为mips-linux-gn...原创 2018-10-15 15:17:32 · 5021 阅读 · 2 评论 -
minigui:mgplus交叉编译警告 include location "/usr/include/freetype2" is unsafe for cross-compilation
今天在交叉编译mingui的mgplus组件库时输出了一个警告:mips-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -D__MGPLUS_LIB__ -I.. -I../agg -I../../include -I../agg/font_freetype -ffunction-sections -fdata-sections -I/home/gyd/...原创 2018-10-16 15:08:02 · 2989 阅读 · 0 评论 -
minigui 3.2.0:通过环境变量修改minigui的运行参数
在运行环境中可以通过设置环境变量来改变MiniGUI的一些运行参数。这为应用程序部署提供了很大的便利性。但在使用3.2.0版本时,发现这些参数名全部都无效,查看MiniGUI 3.2.0的源码,才知道升级后为了环境变量命名规范化考虑,这些环境变量名全部都改名了:转为大写,并加了`MG_`前缀。原创 2018-10-27 00:54:53 · 1308 阅读 · 13 评论 -
minigui 3.2.0:直接访问framebuffer的方法及示例
在做嵌入式应用程序开发时,有的场景下因为要追求图像显示效率,需要直接访问framebuffer,比如更流畅的视频显示。基于minigui框架的应用程序该如何访问framebuffer呢?最近就在为这个事儿头疼, 之前在设计时,视频输出是将一帧图像解码为BITMAP后作为窗口的背景画到屏幕上,这在PC模拟器上跑没啥问题,等到直接上开发板跑的时候,问题就来了----太慢。毕竟通过minigui这个框...原创 2018-10-30 23:19:09 · 2675 阅读 · 2 评论 -
解决编译mips gcc 5.2.0版本时报错:mpfr/mpfr-longlong.h:1016:3: error: impossible constraint in 'asm'
因为厂商提供mips交叉编译器不太满足要求,今天在ubuntu 16.04下尝试编译mips交叉编译器(gcc 5.2.0),在编译到mpfr时报了个错:/bin/bash ./libtool --tag=CC --mode=compile mips-linux-gnu-gcc -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DTIME_WITH_SYS_TI...原创 2018-06-10 11:03:46 · 4204 阅读 · 3 评论