- 博客(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
原创 Linux内存管理1——虚拟内存空间
本文主要分析了进程虚拟空间存在的意义,以及进程虚拟空间相关数据结构,在用户态空间以及内核态空间中虚拟空间是如何分布的,最后分析了CPU是如何读取或者写数据。
2023-05-10 10:33:58 2309 2
原创 Uboot启动流程 (3)
该篇文章详细分析了Uboot执行bootz命令启动内核的流程,并最终跳转到kernel_entry()内核第一行程序中执行,并把机器ID,设备树地址等参数传进了内核。
2023-05-03 20:33:48 559
原创 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内存管理——非连续区内存管理
随着运行时间增长,物理内存的碎片可能会越来越多,分配连续的物理内存尤其是大尺寸连续的物理内存将越来越费劲;为了尽可能避免这种情况或者在出现这种情况下能够缓解进一步费劲,对于某些不频繁的分配释放的内存申请,可以采用一种方式,即所谓的不连续内存分配。非连续区的描述符: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
原创 本人研究方向:多机器人任务分配的简单介绍
多机器人任务分配的简要介绍,以后会继续更新各种本人已实现的算法,带各位友友手打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
单卡车协同单无人机包裹服务:多机器人协同任务规划
2022-06-04
障碍物存在的情况下,单机器人两点之间的路线规划MATLAB代码
2022-05-28
Matlab代码:任务分配,clarke and wright算法,单机器人路径规划
2022-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人