自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux I2C 驱动实验

在裸机中,我们通常会有如下四个文件:xxxi2c.h,xxxi2c.c,xxxi2c_dev.c,xxxi2c_dev.h。前两个是IIC 接口驱动,后两个是设备驱动文件。在Linux内核中也将 I2C 驱动分为两部分:①、I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。②、I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。

2023-06-04 11:02:11 598

原创 Linux platform 设备驱动实验

本篇文章主要介绍了总线--驱动----设备模型下的platform总线的初始化过程,如何进行设备和驱动的匹配和绑定的?以及从源码的角度解释了为什么会执行驱动中的probe函数。

2023-05-29 09:50:00 1352 2

原创 Linux中断实验

本篇文章只要介绍了LInux的中断机制,主要分为上半部和下半部。下半部的实现方式有软中断,tasklet,work_struct三种方式,详细讲述了这三种下半部方式的使用方法。

2023-05-25 10:21:54 350

原创 内核定时器驱动实验

本篇文章讲述了内核定时器的使用过程。

2023-05-23 10:06:50 288

原创 Linux内核——进程调度(3)

本篇文章主要介绍了进程调度的相关知识,调度算法,调度优先级等概念。

2023-05-21 09:35:44 1126

原创 Linux内核——进程(2)

本篇文章主要介绍进程、内核线程的创建流程。

2023-05-19 09:46:14 197

原创 Linux内存管理1——虚拟内存空间

本文主要分析了进程虚拟空间存在的意义,以及进程虚拟空间相关数据结构,在用户态空间以及内核态空间中虚拟空间是如何分布的,最后分析了CPU是如何读取或者写数据。

2023-05-10 10:33:58 2309 2

原创 Linux 并发与竞争

此篇文章讲述了原子操作、自旋锁、信号量和互斥体的使用过程,以及它们对应的使用场景。

2023-05-09 10:44:19 397

原创 Uboot启动流程 (3)

该篇文章详细分析了Uboot执行bootz命令启动内核的流程,并最终跳转到kernel_entry()内核第一行程序中执行,并把机器ID,设备树地址等参数传进了内核。

2023-05-03 20:33:48 559

原创 Uboot启动流程(2)

Uboot启动流程(2)分析了bootz命令执行之前的准备,主要是初始化设备和内存分布,为malloc等区域保存内存。

2023-05-01 22:46:42 110

原创 Uboot启动(1)

Uboot的启动流程1:进入SVC模式,设置SP指针。

2023-05-01 17:05:10 182

原创 Linux 内核——进程(1)

本文主要介绍了进程描述符,等待队列的实现,进程的创建,内核线程的创建等内容。

2023-04-28 10:57:59 458

原创 Linux驱动——pinctrl和gpio子系统

无论是哪种芯片,都有类似下图的结构:要想让pinA、B用于GPIO,需要设置IOMUX让它们连接到GPIO模块;要想让pinA、B用于I2C,需要设置IOMUX让它们连接到I2C模块。所以GPIO、I2C应该是并列的关系,它们能够使用之前,需要设置IOMUX。有时候并不仅仅是设置IOMUX,还要配置引脚,比如上拉、下拉、开漏等等。传统的配置 pin 的方式就是直接操作相应的寄存器,但是这种配置方式比较繁琐、而且容易出问题(比如 pin 功能冲突)。

2023-04-24 15:25:39 459

原创 Linux——驱动:字符设备驱动框架

主要从源码的角度对字符设备的注册和注销过程进行了分析,且在板子上进行了实践。

2023-04-20 16:21:14 1092

原创 Linux内核音频子系统ALSA、ASOC及其示例分析

ALSA框架源码分析,里面还有很多不明白的地方,麻烦指正。

2023-04-20 14:33:39 1865

原创 Linux内存管理——非连续区内存管理

随着运行时间增长,物理内存的碎片可能会越来越多,分配连续的物理内存尤其是大尺寸连续的物理内存将越来越费劲;为了尽可能避免这种情况或者在出现这种情况下能够缓解进一步费劲,对于某些不频繁的分配释放的内存申请,可以采用一种方式,即所谓的不连续内存分配。非连续区的描述符:vm_struct。

2023-04-14 19:20:05 380

原创 Linux 内核内存管理——页框管理

内核必须记录每个页框当前的状态。例如,内核必须能区分哪些页框包含的是属于进程的页,而哪些页框包含的是内核代码或内核数据。类似地,内核还必须能够确定动态内存中的页框是否空闲。如果动态内存中的页框不包含有用的数据,那么这个页框就是空闲的。在以下情况下页框是不空闲的:包含用户态进程的数据、某个软件高速缓存的数据、动态分配的内核数据结构、设备驱动程序缓冲的数据、内核模块的代码等等。页框的状态信息保存在一个类型为page的页描述符中。在mem_init中,mem_map记录着所有页描述符。

2023-04-13 16:08:37 405

原创 Linux内核内存管理——内存区管理

伙伴系统算法采用页框作为基本内存区,这适合于对大块内存的请求,但我们如何处理对小内存区的请求呢,比如说几十或几百个字节?显然,如果为了存放很少的字节而给它分配一个整页框,这显然是一种浪费。取而代之的正确方法就是引入一种新的数据結构来描述在同一页框中如何分配小内存区。但这样也引出了一个新的问题,即所谓的内碎片( internal fragmentation)。内碎片的产生主要是由于请求内存的大小与分配给它的大小不匹配而造成的。

2023-04-13 16:06:59 481

原创 单卡车协同单无人机进行包裹收发算法研究

在该应用场景中,利用一辆卡车与单架无人机对环境中多个分散的客户进行包裹的收取和派发。环境中分布着多个分散的客户和卡车停靠点,任务分配的目标函数是服务最后一位客户的服务时间最短。有以下假设:卡车只能在卡车停靠点之间行驶; 假设卡车的空间和动力足够,可以装下环境中所有的包裹,且不受行驶距离约束; 无人机收到电池电荷的约束,且包裹发负荷约束为1,也就是只能携带一个包裹; 卡车从仓库点出发,不需要再返回仓库点; 客户只能由无人机服务; 无人服务完客户可以选择回到卡车上进行电池更换和包裹补给或卸载,

2022-05-29 16:38:42 992 4

原创 运用A_Star算法实现点对点的路径规划

在障碍物存在的情况下,进行路线规划,难度会非常大,下面只是简单地进行了两点之间的路径规划。

2022-05-28 21:32:06 222

原创 本人研究方向:多机器人任务分配的简单介绍

多机器人任务分配的简要介绍,以后会继续更新各种本人已实现的算法,带各位友友手打MATLAB算法。

2022-04-16 16:28:34 2890 16

原创 粒子群优化算法解决TSP问题及Matlab代码

1、粒子群算法简介粒子群优化算法(Particle Swarm Optimization——PSO), 由James Kennedy(社会心理学博士)和Russell Eberhart(电子工程学博士,于1995年提出的一种基于种群的随机优化算法。鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子I 在N维空间的位置表示为矢量Xi=(x1,x2,…,xn),飞行速度表示为矢量Vi=(v1,v2,…,vn),每个粒子都有一个由目标函数决定的适应值(fitness value);并且知道自

2021-09-03 16:34:53 5419 2

原创 遗传算法(GA)解决MTSP问题及Matlab代码

本篇文章是利用遗传算法来解决MTSP或者MVRP问题的,至于遗传算法较为详尽的介绍的话,在我上一篇文章中有介绍,这里就不再啰嗦了。1、问题简述在本文中,MTSP问题就是有一组旅行者需要遍历完给定的所有城市,并且回到起点,要求其总体的旅行距离为最小;MVRP问题就是把一组旅行者变为一组机器人而已。在本文中所有旅行者的起点是不确定的,也就是说旅行者可以随机从一个城市出发,并且在最后要回到起点城市。假设旅行者人数为nSalesmen = k,城市位置为xy,那么整体的图会有K个回路,且K个回路中没有子回路

2021-08-30 15:27:28 6759 9

原创 “遗传交配”也能做成算法?还有matlab代码?

没错,“遗传交配”也能做成算法。想一下,我们人类的进化史,大海就是我们的家呀!从海洋生物进化到陆地生物,由简单生物进化到复杂生物……,不禁想起了生物的高考考点。基因、染色体、交配、变异……这些都造成了生物的进化。也许就是从达尔文的进化论衍生出了一种寻优的算法——遗传算法(Genetic Algorithm,简称GA),这算法是我目前感觉最容易理解的算法了哦。1、遗传算法简介遗传算法是由美国教授John holland于1975年左右提出的,它是借鉴了生物界自然选择和自然遗传机制的一种随机搜索算法

2021-08-27 21:06:01 636

原创 禁忌搜索算法(tabu search)解决TSP及其Matlab代码

1、算法简介禁忌搜索算法TS(Tabu search),顾名思义核心在于“禁忌”,简单来说就是在某一个过程中把一些不太好的操作给禁止了,直到搜索到一个“最优秀”的。它是在1986年由美国Fred Glover教授提出的,主要是为了提高寻优过程中的全面搜索的能力。禁忌搜索算法通过模拟人类智能的记忆特点,引入存储结构和相应的禁忌准则来避免迂回循环,通过特赦准则来释放禁忌表中较优的个体,进而保证多样性的搜索来尽可能达到问题的最优解。2、算法核心概念禁忌表(TabuList):是用来..

2021-08-26 20:34:06 6536 11

原创 2021-08-26

1、机器人任务分配问题的概念根据自己对机器人任务分配的了解,机器人任务分配就是如何决定哪一个机器人在满足约束的条件下去访问哪一个位置或者空间,就是which、when、where三个问题,使得系统整体的利益得到最大。常见的问题,如MRTA(Multi-Robot Task Allocation)、VRP(Vehicle Routing Problem)、TSP\MTSP(Traveling Salesman Problem \Multiple Traveling Salesman Pro...

2021-08-26 12:10:24 1207 1

单卡车协同单无人机包裹服务:多机器人协同任务规划

该算法综合利用了经济学原理来生成卡车和无人机路径; 对环境中多个分散的客户点和卡车停靠点进行同时规划; 无人机受到常规的载荷约束和无人机飞行距离(电池电荷)约束; 只能由无人机去服务客户,卡车充当移动仓库的角色; 由一部分卡车停靠点是不需要访问的。 同时对卡车和无人机的路径进行规划,是比较复杂的,本人已通过对比,发现该算法是比较高效的,无论是解的质量,还是算法的运行时间。 感谢各位科研人员的支持,代码算法有不懂的地方的话,欢迎私聊,保证回复~ 该压缩包包含了算法的实现代码,MATLAB代码。

2022-06-04

障碍物存在的情况下,单机器人两点之间的路线规划MATLAB代码

在静态障碍物存在的情况下,该代码运用了传统的A star算法对两点之间的路径进行了规划。 算法代码较为简单,首选需要在MATLAB中建立静态障碍物的地图,然后利用A Star的原理,计算可行的路径。关于A Star的原理,上网搜一下i,还是比较简单的。 欢迎联系小吴,一起讨论路径规划和任务分配~

2022-05-28

单卡车协同多无人机任务分配(包裹投递)算法

单卡车协同多无人机进行包裹投递或者收取Matlab代码 多机器人任务分配算法 卡车协同多无人机

2022-04-20

Matlab代码:任务分配,clarke and wright算法,单机器人路径规划

高效解决单机器人任务分配问题~ Matlab代码仿真。 单个机器人对指定区域内的客户进行访问或者包裹投递任务,比传统的遗传算法更有优势。 运用clarke and wright算法解决传统TSP问题,后续会继续扩展CW算法解决多机器人任务分配问题,尽情期待。 阅读建议:适合学习任务分配或者单机器人路径规划的人群下载学习。

2022-04-16

空空如也

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

TA关注的人

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