自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 资源 (4)
  • 收藏
  • 关注

原创 利用Yocto构建嵌入式Linux教程3_1--Yocto构建系统的配置文件

Yocto构建系统的配置文件本教程选用的Yocto版本为3.0.4,我使用的Linux发行版为Ubuntu 18.04 (LTS),图中所有示例为实际测试截图,有问题请给我留言。

2021-03-26 16:11:22 1553

原创 利用Yocto构建嵌入式Linux教程02--Yocto的一些基本概念介绍

在Yocto项目中,有一些专业的术语、比喻、专有名词等。了解这些对于后续的Yocto掌握奠定基础。

2021-01-21 15:42:00 1619

原创 利用Yocto构建嵌入式Linux教程01--第一个Yocto项目构建

大家好,从今日开始,计划写一个利用Yocto构建嵌入式Linux的教程,算是对个人工作和学习的一个总结。本教程选用的Yocto版本为3.0.4,我使用的Linux发行版为Ubuntu 18.04(LTS),图中所有示例为实际测试截图,有问题请给我留言。更多嵌入式精彩内容,请关注微信公众号:嵌入式Linux那些事儿1 构建主机要求1.1 支持的Linux发行版Yocto Project版本已针对下表中Linux发行版进行了测试。所以推荐大家采用下面的Linux发行版来构建你的Yocto项目,其

2020-12-30 09:30:12 2603

原创 构建嵌入式Linux系统的几种工具

探索Yocto、Buildroot、OpenWRT和经过修改的桌面发行版,选择适合您的项目的选项。越来越多的的设备开始使用Linux系统,比Linus Torvalds在他的宿舍里工作的设备要多的多。Linux支持目前市场上的各种芯片架构,导致Linux可以应用到各种大小的设备上。从庞大的IBM大型机到不超过其连接端口大的微型设备,大型企业数据中心,Internet基础结构设备和个人开发系统。它还为消费类电子产品,移动电话和许多物联网设备提供了动力。在为桌面和企业级设备构建Linux软件时,开发人员通

2020-12-18 16:19:05 1005 1

原创 ubunt18.04安装ROS2

本文无废话,实现了ubunt18.04 下ros2的安装,并且同时兼容ros和ros2参考:ubunt18.04安装ros的,请参考上一篇文章。

2024-04-19 19:33:08 905

原创 ros仿真启动小龟

1.启动RosMaster(管理Ros中各个节点的“大管家”,每次启动Ros时需要首先启动RosMaster)使用键盘的上下左右键,可以控制小龟的移动。(凑数专用)

2024-04-19 17:15:52 284

原创 ubunt18.04安装ROS避坑指南

本来是不该写的,有官方文档,还有很多大神的分析。但里面的坑太多,我考虑了一下,还是想记录下避免下次在跳泥坑;坑在哪里呢,其实如果能正常访问某些网站,理论上2个小时左右是完全能完成安装的,坑就在这些安装网站是打不开的,我这就是个神坑;

2024-04-19 17:07:49 1309

原创 json-c库防止内存泄漏总结

json-c 使用过程中,最重要的就是忘记释放,以下为大牛总结的是否该释放点。

2024-04-12 13:43:17 540

原创 ucode usage使用方法

需结合代码和main函数的命令行去快速理解该库;main.c 和example中的代码示例ucode命令行提供了一系列的选项和参数,用来执行和编译ucode程序,下面时详细的解释及其用法:-h显示帮助消息,其中提供了可用的概述选项及其用法。-e“表达式”将给定的表达式作为ucode程序执行。此选项允许您提供单行ucode表达式以供立即执行。(表达式做参数,仅执行)-p“表达式”将给定的表达式作为ucode程序执行,然后打印结果。(表达式做参数,执行后打印结果)

2024-03-07 16:01:36 771

原创 lib库的xxx_INCLUDE_DIRS && xxx_LINK_LIBRARIES

很多大型第三方框架使用Pkg-Config维护它依赖库路径、头文件路径、编译选项、链接选项等信息,文件名后缀是.pc,方便第三方开发者便捷地获取相关信息,例如OpenCV,通常都是大型且复杂的第三方库。项目中的json-c.pc 是 json-c.pc.in来生成的。/usr/local/share/pkgconfig目录。/usr/local/lib/pkgconfig目录。/usr/share/pkgconfig目录。/usr/lib/pkgconfig目录。

2024-03-07 13:50:51 309

转载 敏捷开发入门教程

有一本书叫做《梦断代码》,副标题就是"20+个程序员,三年时间,4732个bug,100+万美元,最后失败的故事",这就是没有采用敏捷开发的结果。迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。还是以上一节的房产公司为例,如果按照传统的"瀑布开发模式",先挖10栋楼的地基、再盖骨架、然后架设屋顶,每个阶段都等到前一个阶段完成后开始,可能需要两年才能一次性交付10栋楼。该宣言还提出十二条敏捷开发的原则。

2023-12-05 11:24:59 151

原创 使用nmcli完成WIFI连接与显示

使用nmcli完成网络连接与显示

2023-12-05 10:57:50 737

原创 systemd的使用记录

systemd并行启动,根据依赖关系决定启动顺序;systemv的init是根据运行级别,S+编号的运行方式进行运行;

2023-12-05 10:35:29 213

原创 流水线时序调度之规避冲突

介绍如何规避流水线时序冲突

2023-08-12 11:07:54 855 1

原创 我的创作纪念日

写文的目的就是一种输出的形似,加强记忆回头也可查看,如果能帮助到一些朋友,那就太好了

2023-08-12 10:14:56 163

原创 Qt Creator常用快捷键及技巧

Qt Creator常用快捷键及技巧

2023-07-14 15:07:56 823

转载 Socket学习AF_UNIX实现本地通信

AF_UNIX数据到达内核缓冲区后,由内核根据指定路径名找到接收方socket对应的内核缓冲区,直接将数据拷贝过去,不经过协议层编解码,节省系统cpu,并且不经过网卡,因此不受网卡带宽的限制。发送方、接收方依赖IP:Port来标识,即将本地的socket绑定到对应的IP端口上,发送数据时,指定对方的IP端口,经过Internet,可以根据此IP端口最终找到接收方;嵌入式linux网络编程,UNIX域套接字,AF_LOCAL,PF_LOCAL,PF_UNIX,,AF_UNIX,进程间通信机制。

2023-06-27 09:51:52 830

转载 谈谈网络通信中的 ACK、NACK 和 REX

ACK:Acknowledgement,它是一种正向反馈,接收方收到数据后回复消息告知发送方。NACK:Negative Acknowledgement,则是一种负向反馈,接收方只有在没有收到数据的时候才通知发送方。REX:Retransmission,重传,当发送方得知数据丢失后,重新发送一份数据。

2023-06-19 17:29:54 1405

原创 设计模式(行为型模式)之:Observer(观察者模式)

在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” - 一个对象(目标对象)的状态改变,所有的依赖对象(观察者对象)都将得到通知。这一模式中的关键对象是观察目标和观察者,一个目标可以有任意数目的与之相依赖的观察者,一旦目标的状态发生改变,所有的观察者都将得到通知。定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都能得到通知并自动更新。获取通知的的模块需要获取发送通知的模块的信息,而发送通知的模块事实上不需要知道前者的存在时。

2023-06-06 15:00:48 390

原创 设计模式(行为型模式)之:Strategy(策略模式)

定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展、子类化)Strategy模式将算法独立于程序流程之外,降低了算法与程序主流程之间的耦合度。设计模式Strategy(策略模式)稳定点:程序的整体运行框架变化点:子算法效果:使得可以独立于主程序增删修改算法特点:封装算法,重写子过程UML类图要点。

2023-06-06 13:54:23 413

原创 设计模式需遵循的几个原则

对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。关注于对象的组成以及对象之间的依赖关系,描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。

2023-06-06 11:23:34 334

原创 设计模式(行为型模式)之:Template Method(模板方法)

该篇文章内容及思想出自 张建忠《设计模式》、GOF: 《设计模式》定义一个操作中算法的骨架,而将一些操作延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构,即可重定义该算法的某些特定步骤。(GOF: 《设计模式》)Template Method可以说是所有设计模式中最常用的一种了。常用到什么地步呢?就算你从来没接触过任何设计模式,你也一定使用过这种模式,只是自己没有意识到罢了。

2023-06-06 10:33:38 404

转载 设计模式(行为型模式)之:命令模式(Command Pattern)

命令模式是一个高内聚的模式,其定义为:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请 求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Receiver接受者角色:该角色就是干活的角色,命令传递到这里是应该被执行的Command命令角色:需要执行的所有命令都在这里声明Invoker调用者角色:接收到命令,并执行命令命令模式的意图是将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。

2023-06-05 17:34:24 3625

转载 C++ UML类图详解

类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图的3个基本组件:类名、属性、方法。在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation,组合(Composition),依赖(Dependency)

2023-05-29 15:42:20 3289

原创 Pinctrl/Gpio简介(以应用层角度修改设备树)

Pinctrl通常用于嵌入式系统,需要为不同的应用程序配置具有不同设置的多个引脚。通过使用Pinctrl,开发人员可以创建一个统一的配置界面,使他们能够在不修改底层硬件的情况下轻松更改引脚的配置。

2023-05-26 09:02:00 742 1

原创 Sysfs简介

Sysfs(System File System)是一种虚拟文件系统,它提供了一种在Linux和Unix系统中管理设备和内核参数的机制。Sysfs基于内核,将底层硬件信息和内核参数暴露给用户空间应用程序例如CPU温度、内存使用情况等。此外,Sysfs还允许用户空间程序动态更改内核参数,从而实现更高效的系统管理和调整。

2023-05-13 18:24:53 1090

原创 proc文件系统

(1)proc是虚拟文件系统,虚拟的意思就是proc文件系统里的文件不对应硬盘上任何文件,我们用去查看proc目录下的文件大小都是零,是接受到请求才动态生成的;(2)proc文件系统是开放给上层了解内核运行状态的窗口,通过读取proc系统里的文件,可以知道内核中一些重要数据结构的数值,从而知道内核的运行情况,也可以方便调试内核和应用程序;

2023-05-12 18:05:12 746

原创 设备树(属性)简介

设备树是一种描述硬件的数据结构,它起源于OpenFirmware(OF)。在Linux 2.6中, ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx中,采用设备树后,许多硬件的细节可以直接通过它传递给Linux,而不再需要在内核中进行大量的冗余编码。

2023-05-09 17:32:09 1260 1

原创 linux内核调试的几个方法

printk在内核源码中用来记录日志信息的函数,只能在内核源码范围内使用。用法和printf非常相似;printk函数主要做两件事情:第一件就是将信息记录到log中,而第二件事就是调用控制台驱动来将信息输出。1.日志级别printk相比printf来说还多了个:日志级别的设置,用来控制printk打印的这条信

2023-05-06 18:50:47 1660

原创 设备驱动模型:总线-设备-驱动

总线是连接处理器和设备之间的桥梁代表着同类设备需要共同遵循的工作时序。总线驱动:负责实现总线行为,管理两个链表。name:指定总线的名称,当新注册一种总线类型时,会在 /sys/bus 目录创建一个新的目录,目录名就是该参数的值;bus_groups、dev_groups、drv_groups:分别表示 总线、设备、驱动的属性。通常会在对应的 /sys 目录下在以文件的形式存在,对于驱动而言,在目录 /sys/bus//driver/ 存放了驱动的默认属性;

2023-05-06 18:17:51 1657

原创 内存泄漏动态检测(valgrind)

比如该文的介绍,需要初步了解top free -h等命令;其中 选项有 输出日志目录;前提你的系统支持valgrind,可用。这个文章介绍的就不错。如:valgrind。

2023-04-21 17:30:42 1188

原创 linux线程调度策略

系统中既有分时调度,又有时间片轮转调度和先进先出

2023-04-14 17:58:55 1203

原创 OP-TEE使用过程记录

自己20年做的一些研究,不涉及保密部分,文中所有内容均来自开源框架或者代码,自己仅按研究或者实现的过程进行了记录;请忽略附录部分,该部分不存在...

2023-02-26 11:14:32 2099

原创 std::thread && pthread_create && std::chrono时间库及应用

在声明一个std::thread对象之后,都可以使用detach和join函数来启动被调线程,区别在于两者是否阻塞主调线程。(1)当使用join()函数时,主调线程阻塞,等待被调线程终止,然后主调线程回收被调线程资源,并继续运行;(2)当使用detach()函数时,主调线程继续运行,被调线程驻留后台运行,主调线程无法再取得该被调线程的控制权。当主调线程结束时,由运行时库负责清理与被调线程相关的资源。

2023-02-03 17:40:42 729

原创 多线程并发之 std::this_thread::yield 与std::this_thread::sleep_for

当前线程放弃执行,操作系统调度另一线程继续执行。即当前线程将未使用完的“CPU时间片”让给其他线程使用,等其他线程使用完后再与其他线程一起竞争"CPU"。表示当前线程休眠一段时间,休眠期间不与其他线程竞争CPU,根据线程需求,等待若干时间。this_thread 包装了一组可以访问当前线程信息的函数。

2023-01-31 17:36:16 181

原创 多线程并发 wait wait_for wait_until

1.设置了 Predicate,只有当 pred 条件为 false 时调用 wait() 才会阻塞当前线程;2.在收到其他线程的通知后只有当 pred 为 true 时才会被解除阻塞。wait (带条件参数)的典型用例。

2023-01-30 18:15:48 567

原创 多线程并发--unique_lock lock

std::lock_gurad 是 C++11 中定义的模板类。lock_guard 对象通常用于管理某个锁(Lock)对象,因此与 Mutex RAII 相关,方便线程对互斥量上锁,即在某个lock_guard 对象的声明周期内,它所管理的锁对象会一直保持上锁状态;而 lock_guard的生命周期结束之后,它所管理的锁对象会被解锁(注:类似 shared_ptr 等智能指针管理动态分配的内存资源 )。

2023-01-29 17:24:22 245

原创 多线程并发——Mutex 互斥量

Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 头文件中,所以如果你需要使用 std::mutex,就必须包含 头文件。

2023-01-29 16:14:34 527

原创 openwrt编译问题:pip._vendor.urllib3.exceptions.ReadTimeoutError:

在openwrt 编译的时候报:pip._vendor.urllib3.exceptions.ReadTimeoutError:HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Readtimed out

2022-12-26 18:14:07 163

原创 openwrt编译问题:frp编译失败 https://proxy.golang.org *** connect: connection refused

openwrt编译问题:frp编译失败 https://proxy.golang.org *** connect: connection refused

2022-12-26 16:33:07 1058

cmake学习资料,参考cmake实战

cmake学习资料,参考cmake实战

2024-02-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除