- 博客(250)
- 资源 (6)
- 收藏
- 关注
原创 Yocto常用术语
Yocto是一套开源、专为嵌入式定制的编译系统,它提供了toolset和开发环境,开发人员可以利用Yocto定制基于Linux的系统。了解这些术语可以加深对Yocto的认识。
2023-01-26 15:12:19
63
原创 车载以太网简介
车载以太网属于局域网,它用来连接汽车内的电子元件(ECU/MCU)。速率:100Mbit ~ 1Gbit 每秒车载以太网满足汽车行业的 低延时、低功耗、高可靠性、实时性、低电磁辐射。
2023-01-25 16:21:23
504
原创 【Linux】Pid Namespace简介及其引发的问题
Pid Namespace简介及其引发的问题这六种命名空间,用来隔离某种资源。通过命名空间,linux可以支持容器的实现。这里只关注PID Namspace。
2023-01-15 19:39:56
450
原创 【Shell】mksh运行分析
shell,壳子,即操作系统的壳子。这层壳子套在操作系统上,为用户提供与操作系统的交互手段。操作系统的交互方式一般有,图形化交互(GUI)和命令行交付(CLI,command-line interface)。Android系统中使用了一款叫mksh的shell程序,用于交互式的命令解释器。
2023-01-08 20:40:53
262
原创 【Wayland】QtWayland启动流程分析
QtWayland启动分析,QtWayland启动入口类是QWaylandCompositor,该类创建了全局Display对象、socket,并且开启了EventLoop。
2023-01-02 16:08:41
416
原创 【Wayland】QtWayland框架分析
QtWayland是Qt官方基于Wayland开发的一款Toolbox,根据其官网介绍基于Qt/QtQuick,使用QtWayland可以写出一套 Compositor(Wayland Compositor)Qt应用可以作为Wayland的Client端运行。下图摘自Qt官网,对于Qt与Wayland关系的介绍。如何运行QtWayland?Qtwayland是基于Qt编译的,可以参考QtWayland官网提供的编译手顺。
2022-11-20 21:12:34
721
原创 Android12启动崩溃 no namespace called
Android使用了基于命名空间的动态连接器,用来解决生态碎片及安全问题(关于这部分的可以自行搜索,下图为android官网给出的命名空间隔离图示)。Android12系统开机启动后,系统卡在开机界面,无法进去home。adb终端查看后,发现zyogte64启动崩溃。这个问题就是zyogte64这个进程在加载apex时,找不到com_android_art这个命名空间。代码定位(art/libnativeloader/native_loader.cpp)
2022-09-25 17:49:12
913
原创 【C++11】promise和future介绍
【C++11】promise和future介绍C++11提供了std::promise和std::future两个模板类,通过这两个模板类可以实现异步存储值并获取值的功能。std::promiseThe class template std::promise provides a facility to store a value or an exception that is later acquired asynchronously via a std::future object crea
2022-05-16 21:54:47
742
1
原创 Cap‘n Protocol简介
Cap’n Protocol简介Cap’n Proto is an insanely fast data interchange format and capability-based RPC system.cap’n protocol由protobuf的主要设计者kentonv主导开发,相当于Proto + RPC。提供序列化/反序列化、方法调用、异步Promise流水行等主要功能。...
2022-04-30 23:58:34
1807
原创 【QT】Qt Application Manager简介
Qt application manager介绍Provider a basis for a multi-application embedded, taking care for application lifecycle managementThe Qt Application Manager is a headless daemon that helps you to create embedded Linux systems with a highly complex UI setup,
2022-04-05 23:01:32
639
原创 【Sqlite3】内存调试
Sqlite3内存调式基本上来说Sliqte3提供的接口,只要正确操作,是不会发生内存泄漏的问题。它有一套严格的内存理论,以及实现机制。这里主要讨论,如何进行内存方面的调式、确认。Sqlite3动态内存查看sqllite3当前持有的动态内存大小(byte)。该接口通过获取SQLITE_STATUS_MEMORY_USED状态值实现。大概原理为,sqlite3在申请或释放动态内存时,会将SQLITE_STATUS_MEMORY_USED对应的状态值做加或减去分配的bytpe的操作。// 接口
2022-02-27 23:39:29
783
原创 【Wayland】Weston多屏显示
Weston多屏显示Weston默认支持多屏显示(比如前屏+后屏)output对象可以理解为逻辑上的一块屏幕,对于DRM,其信息通过drmModeGetResources接口获得。View结构体有两个成员,一个保存output对象的引用来作为primary output,一个用来记录当前View显示的output信息。struct weston_view { /* * The primary output for this view. * Used for picking the
2022-02-06 18:25:54
1710
3
原创 【Wayland】Weston启动流程分析
Weston启动流程分析Weston是Wayland Compositor的实现。其Server端作为独立的进程运行在系统中。MakeFile中编译成果为,“weston”的可执行程序MakeFile.am(weston 2.0.0)bin_PROGRAMS += westonweston_LDFLAGS = -export-dynamicweston_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON \ -DMODULEDIR='"$(moduled
2022-02-05 16:14:05
2110
原创 【Wayland】Wayland简介与定制指导
Wayland与Weston简介由于某些原因。移植并定制一套基于Wayland的Compositor。Wayland与Weston,是两个相辅相成的概念。这里简单总结一下:wayland是一套为“显示”服务的协议,基于C/S结构。它定制了一套标准的接口、基本通信方式。wayland提供了通信方式的实现(socket+epoll),并提供了“接口”的描述语言,以及将这套语言转换为代码的工具(scanner)Weston是基于Wayland协议,并实现了Compositor功能的,一套官方提供的
2022-01-31 13:39:13
3141
原创 【CEGUI】字体加载优化
CEGUI 字体加载优化CEGUI字体加载流程详见【CEGUI】Font资源加载流程CEGUI对于字体加载,例如Freetype类型字体,会通过libfreetype遍历字体文件的所有字形索引,并保持其对应的字符码。void FreeTypeFont::initialiseGlyphMap(){ FT_UInt gindex; // d_fontFace是该字体的FontFace对象,通过字形索引拿到其对应的字符码。 FT_ULong codepoint = FT_Get
2022-01-23 22:05:39
67
原创 【CEGUI】Font资源加载流程
CEGUI Font资源加载流程Font(字体),主要两个类型的字体:位图字体、矢量字体。位图字体:PixmapFont,相当于每个字形(glyph)对应一个图片元素。有时候也称为光栅字体。矢量字体:FreetypeFont,动态字体。每个字形(glyph)由数学矢量组成,支持任意缩放。本文以CEGUI 0.8.7为例子Font加载流程CEGUI种可以通过Scheme文件加载,也可以使用下面的代码显式加载。FontManager::getSingleton().createFromFi
2022-01-16 22:24:41
339
原创 【CEGUI】Log系统
CEGUI Log系统CEGUI 0.8.7Logger模块CEGUI Logger模块,用来记录CEGUI事务日志。CEGUI提供了 Logger模块的接口,用来给开发者适配不同系统平台。如果平台未提供Logger接口,则使用DefaultLogger。以Window平台为例,DefaultLogger,通过ofstream默认输出到CEGUI.log文件中(具体的文件,在初始化DefaultLogger时设定)。Block图自定义Logger模块很方便,只需要两个步骤:继承CE
2022-01-08 10:32:10
79
原创 【CEGUI】资源加载流程
CEGUI资源加载流程主要资源类型Schemescheme资源(包括图像集、字体资源、窗口外观信息、类型映射)等。可以通过“.scheme“”将CEGUI系统所需要的全部资源一次加载。例:TaharezLook.scheme<?xml version="1.0" ?> <GUIScheme version="5" name="TaharezLook"> <Imageset filename="TaharezLook.imagese
2022-01-08 10:13:46
1453
原创 【CEGUI】 Window环境编译
CEGUI编译平台:WindowCEGUI版本:0.8.7前提:Visual Studio任意版本(本文为2013)CEGUI源码下载登录CEGUI官网网站:http://cegui.org.uk/download下载CEGUI0.8.7源码+ 0.8.X Dependencies下载完成后,解压(例:这里我解压到了D:/Myproject/Coding/CEGUI)cegui-0.8.7是cegui的源码。cegui-dependencies-0.8.x 是cegui 0.8
2022-01-03 20:36:40
724
原创 【CEGUI】概念简介
CEGUI背景Crazy Eddie’s GUI(MIT License),一款开源的GUI(图形用户界面)库。使用C++实现,遵循OOP,其宗旨:games developers who should be spending their time creating great games, not building GUI sub-systems.目前最新版为0.8.7,官网(http://cegui.org.uk/)下文以0.8.7版本进行介绍。架构图ImageCode:图形解
2022-01-02 17:21:25
802
原创 【Wayland】Wayland协议说明
Wayland协议说明Wayland基本概念什么是wayland?它是一种窗口管理协议。简单理解,wayland是一套Display Server与Display Client间通信的协议。Wayland定义了一套标准协议,并规定这套协议中的核心对象(https://wayland.freedesktop.org/docs/html/ch04.html#sect-Protocol-Interfaces)。Weston是什么?‘Wayland只是一套协议,一套规范。Weston是wayland
2021-11-07 21:19:12
1186
原创 Android Init Language(RC文件)介绍
Android Init Language介绍基本概念什么是rc文件?Android Init进程用rc做了什么?相关内容Android RC文件应用Android rc文件语法解析Line-oriented语法组成ActionServicesOption和CommandTriggerimport基本概念什么是rc文件?rc文件,是用Android Init Language编写的特殊文件。用这种语法编写的文件,统一用".rc"后缀。所有rc文件,不会被编译/链接。它是配置文件,不是程序,是一种用于
2020-12-21 14:19:37
1219
原创 【Android】Android源码及系统目录结构分析
Android源码及系统目录结构分析Android源码(Android10)目录说明/artAnroid RunTime(Android运行环境)/bionicbionic C库(嵌入式专用的c库)/bootable启动引导相关代码/build系统编译规则(基础开发包的配置)/compatibilityAndroid兼容定义文档(cdd)/ctsCompatibility Test Suite(Google兼容测试标准)/dalvik
2020-12-07 19:39:07
1538
原创 【Git】修改某次提交的Commit Message
Git修改某次提交的Commit Message背景CommitMessage指提交信息,如 git commit -m “Init code”,“Init Code”就是提交信息。最后一条Commit,需要修改提交信息时,可以使用# 修改最后一条commit的提交信息git commit --amend如果想要修改的Commit为,提交记录中某次的提交,如:# 假设某个仓库有6个提交,想要修改 commit 3的提交信息commit 5commit 4commit 3com
2020-10-06 15:20:26
13560
原创 【Mozilla】IPDL基本概念解析
Mozilla IPDL什么是IPDLIPDL的全称为“Inter-process-communication Protocol Definiton Language”它是一种进程间通信协议定义语言(多多少少有点像Android的AIDL)它是一种使C++代码可以规范的、安全的在进程间或线程间传递的语言等价于一种平台独立的接口语言主要针对C++实现Mozilla私有Firfox/FirfoxOS使用IPDL声明Message(firFoxOS是KaiOS的前身)IPDL协议
2020-09-10 19:57:03
1229
原创 Scratch的基础使用
Scratch 它是麻省理工设计开发的,面向少儿的编程工具。 特点: 简单易学,无需太多的编程基础 构建程序的命令和参数,通过积木形的模块实现。 使用 (1)注册账号 Scratch官网:https://scratch.mit.edu/ 为了方便学习、使用Scratch,建议到官网注册账号。注册的过程很简单。 (2)下载Scratch 可以使用web版的Scratch、离线版本的
2020-08-16 14:15:10
2012
原创 【DDS】DDSI-RTPS规范
DDS DDSI-RTPS数据交互结构背景DDSI-RTPS:全称“Real-time Publish Subscribe Protocol DDS Interoperability Wire Protocol”,它是DDS Wire-protocol。是DDS实施互操作性(标准化)协议。(一下将DDSI-RTPS,简称为RTPS)这里的Wire Protocol指的是?他指的是一种传输机制。A wire protocol is the mechanism for transmitting d
2020-07-27 11:37:52
2255
原创 【C++】可变参数模板类的继承与偏特化展开
C++11可变参数模板可变参数模板是指参数不固定(0 ~ N个)的模板函数或模板类基本写法:template<class ... Args>class A {}// 或template<class ... Args>void fun(const Args&...args) {}概念的东西网上有很多。这里举一个,与实际项目中类似的例子可变模板参数类 + 继承 + 偏特化:#include <iostream>template<
2020-07-15 21:57:52
1667
原创 【DDS】基于OpenDDS的DDS-RPC实现
基于OpenDDS的DDS-RPC实现关于DDS-RPC的概念原理参考下文:DDS-RPC通信机制代码实现OpenDDS没有实现RPC,但根据RPC over DDS给出的规范。可以利用OpenDDS实现 DDS-RPC。在实现上,主要包括以下几个部分。IDL定义:根据DDS-RPC规范,定义OpenDDS可以识别的IDL文件(主题)。利用IDL文件,生成.h .cpp文件。实现Publisher/Subscribe,DataWriter/DataReader。实现Service端,实
2020-07-05 21:30:44
2893
原创 【Chromium】Location信息内核调试
Chromium利用Location信息进行内核开发版本:Chromium80背景:基于Chromium进行浏览器内核开发的时候。有时候内核Crash,解析墓碑仅为PoskTask执行其对应的CallBack时崩溃。而定位问题,需要知道执行的具体任务是什么。# base/callback.hclass OnceCallback<R(Args...)> : public internal::CallbackBase { // Run的时候Crash了。 R Run(Args..
2020-05-25 16:17:13
328
原创 【DDS】DDS-RPC通信机制
DDS-RPC通信机制基本概念关于DDS的概念请见:DDS与OpenDDS什么是DDS-RPC:OMG官网给出关于DDS-RPC概念的定义:OMG DDS-RPCThis specification defines a Remote Procedure Calls (RPC) framework using the basic building blocks of DDS, such as topics, types, DataReaders, and DataWriters to prov
2020-05-12 11:42:30
4574
原创 【DDS】DDS与OpenDDS
DDS与openDDSDDS什么是DDS?Data Distribution Service(DDS),根据字面理解就是数据分发服务。这套服务,在分布式应用环境下,可以高效率地分发参与者(应用)间的数据信息。订阅/发布体系结构考虑到应用实现,肯定要定一套体系结构。DDS采用订阅/发布体系结构,以数据为中心,也就是通过订阅/发布这个结构来实现消息(数据)的交换。P/S与RTPS上面说...
2020-05-05 18:11:30
3981
2
原创 【Android 】Prebuilt预编译
Android Prebuilt编译方式Android提供了Perbuilt编译方式,处理已经编译好的库或配置文件# perbuilt.mkBUILD_PERBUILT# multi_perbuilt.mkBUILD_MULTI_PERBUILTPerbuilt针对独立文件的操作。Multi_Perbuilt针对多个文件,对多个文件进行判断,调用Prebuilt依...
2020-04-19 21:46:52
3034
2
原创 【Git】查看分支创建时间
Git查看分支创建时间某些时候需要查看仓库分支创建的时间。命令如下:git reflog show --date=iso refs/remotes/origin/xxx/xxx输入上述命令会输出类似信息:refs/remotes/origin/xxx/xxx@{2020-03-30 11:18:48 +0800}: pull: fast-forward...
2020-03-30 13:14:25
4835
原创 【运维】Redmine4.0.3配置邮件通知
Redmine4.0.3配置邮件通知Redmine默认未开启邮件通知,需要进行额外的配置。配置方法创建配置文件(redmine/config/configuration.yml)。一般在config文件下有一个configuration.yml.example文件,该文件是Reminde提供的例子,直接将copy一份即可。cd ~/reminde/config/cp config...
2020-02-23 21:50:16
948
原创 【运维】vscode+remotessh远程办公
vscode+remotessh远程办公前提条件:连接的那台远程电脑,已经开启ssh server.sudo apt-get install openssh-serversudo service ssh start步骤1:本地电脑。vscode 安装 Remote Development插件VSCode-》Extension中搜索Remote Development 安装即可步...
2020-02-04 14:13:50
2611
原创 【Django】Admin内联显示去掉多余行
Django Admin内联显示去掉多余行Django Admin可以设置内联显示,让有外键依赖的Model再同一个页面显示。# admin.py# Case为Result的外键# 相同于 一个Case下,有多个Resultclass ResultInline(admin.TabularInline): model = Resultclass CaseAdmin(adm...
2020-01-03 14:41:49
783
原创 【C++】类型截断引起的Bug
类型截断引起的Bug背景最近遇到了一个Bug,由于崩溃堆栈定位到的是一个第三方的so中,查了许久。最终,定位到了出问题的部分。现象原因:Model层传给UI层,一个用于描画的Buffer。在使用前,该Buffer被异常释放。导致UI层再调用第三方库,创建纹理时崩溃。根本原因:C++类型截断导致类型截断下面的代码展示了类型截断的发生,以及导致Bug发生的现象// 父类clas...
2019-12-29 19:15:25
474
原创 【Django】如何拷贝一个Django Project
如何拷贝Django Project由于工作需要,之前放在服务器上的一个Django项目。要拷贝它其他路径,并重名命。单纯的Copy复制,会导致拷贝后的Django项目无法执行。下面记录一下,此次拷贝Django项目的操作。拷贝Django项目停止运行这个Django Project将整个Django项目(假定文件夹名为:LinDjango),拷贝到新的路径下,并将文件夹重名命(...
2019-12-09 13:45:21
850
原创 【Ubuntu】starting show plymouth boot screen无法开机
starting show plymouth boot screen无法开机今天电脑开机的时候(Ubuntu 16.04),启动后一直卡在下面的阶段。starting show plymouth boot screen解决方法:强制关机重启电脑,并重复按下ESC选择“System Restore”,按下Enter电脑会自动重启,并进入系统BZ在尝试这种方法后,可以成...
2019-11-25 10:27:51
11788
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人