自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Linux内存的概念及管理

内存是指计算机中所安装的随机存取内存的容量,储存是指计算机内硬盘的容量。硬盘应当是计算机的“外存”。内存应当是在主板上的一些存储器,用来保存CPU运算使用过程中的中间数据和计算结果,当不用这些数据时,它们被保存在硬盘上。

2024-07-22 17:12:53 530

原创 汽车底盘控制系统Autosar初步接触

最近接触到汽车底盘控制部分,作为小白,原以为汽车底盘也是要自己手敲代码,结果发现完全不是。记录一下最近的学习心得,初步接触东西不全,但可以当作参考。对于底盘控制部分的简单理解:simulink做汽车底盘的仿真,类比于RoboMaster中平衡车的控制算法,将各类传感器参数、Heave、Pitch、Roll、加速度等等进行计算,放在simulink中就是将这部分模块化,仿真无误后可以自动生成代码。

2024-07-17 16:45:28 734

原创 6ull--系统移植(U-Boot、内核kernel、根文件系统rootfs)

要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核,bootloader 有很多,常用的就是 U-Boot。移植好 U-Boot 以后再移植 Linux 内核,移植完 Linux 内核以后Linux 还不能正常启动。还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。

2024-06-06 23:08:50 1047

原创 Linux配置双网卡,1NAT 2桥接,ARM板上网

版本型号:ubuntu18.04 ARM板型号:6ull本文主要记录配置第一次ubuntu与arm板连接的nfs配置和ARM板上网的配置,按照配置网络、配置nfs系统、给板子连网 顺序进行。该配置的前提是创建ubuntu系统的网络配置选择的是NAT模式,NAT模式下创建的ubuntu直接就可以上网。开发需要连接网线到6ull板子上进行nfs挂载,新建的桥接模式。

2024-04-29 19:47:47 998

原创 Linux内核驱动---配置GPIO

与在STM32中配置流程一样,每个步骤都有相同的对应函数(输出)、(输入)

2024-04-26 18:59:52 306

原创 Linux驱动:UART串口程序(亲测好用!)

本篇代码是配置串口的一些基本配置:波特率、校验位、数据位等。前提是内核中有对应的设备节点,可以在各自的开发板开发手册中找到串口所对应的设备节点。也是找了很多篇博主的文章参照,不过一开始配置的时候有问题打不开,最终还是一个一个配出来了。

2024-04-26 18:48:48 367

原创 Linux系统进程的个人理解和解释

重点介绍对进程的个人理解,分别从概念、作用、组成、原理、实现、通信进行介绍。Linux操作系统针对进程的一些理解,进程调度、时间片、优先级等。简单通信方式,有名管道、无名管道、共享内存等个人理解

2024-04-25 17:24:38 1043

原创 Makefile版本安装问题:make每次全量编译、glob/glob.c: : undefined reference问题

编译Linux内核时,使用make导致每次均全量编译的问题,每次编译耗费大量时间。各种搜索之后发现是Makefile版本和Ubuntu版本的问题(猜测)安装makefile 版本glob/glob.c: : undefined reference问题/usr/bin/mkdir: 无法创建目录 "/usr/local/share/man/man1": 文件已存在

2024-04-11 17:17:42 483

原创 Linux内核

上面说到区别,那么Linux为什么可以跑多个进程、并且可以对文件、内存等进行管理?由此提到Linux内核,Linux内核对于操作系统而言属于发动机。内核(kernel)是操作系统最基本、最核心的部分。内核其本质上是一个复杂的程序,主要用于以下几点:文件管理进程管理内存管理网络管理设备管理内核对于用户是不可见的,所以在层面上分为了内核态和用户态。内核态与用户态的几条公理:用户态不能直接操作硬件只有内核态才能对硬件进行操作管理。

2024-04-09 22:53:19 876

原创 裸机开发之汇编、寄存器

简单了解完寄存器之后,那么可以解决第一个问题:为什么使用汇编?汇编语言的大部分语句直接对应着机器指令,执行速度快,效率高,代码体积小在系统程序的核心部分,以及与系统硬件频繁打交道的部分,可以使用汇编语言。比如操作系统的核心程序段。缺点:不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性难懂且工作量大。

2024-04-09 21:30:38 972

原创 Linux+ARM 简单环境检测---软件部分

本文主要记录并分享软件部分,用于模拟将数据上传到互联网上以供使用,内容包含数据上传、数据库存储、屏幕显示三部分使用软件:VMware+Ubuntu22.04ARM版芯片:S3C2440(友善之臂mini2440)上传采用MQTT协议上传到OneNet云,数据库使用sqlite3,屏幕显示采用FrameBuffer 帧缓存技术实现效果:数据可以在云上、屏幕上、数据库中查看学习文章会在本文中标记出来软件部分内容一共分为三部分:数据上传部分:将获得的数据上传到OneNet云上。

2024-03-30 16:36:50 761 1

原创 MQTT.fx和MQTTX 链接ONENET物联网提示账户或者密码错误

在输入password和username后还是提示错误,在Host这里使用他给的默认,不要改成ONENET文档给的地址。MQTT.fx和MQTTX 都是这样。

2024-03-26 16:04:41 1149 2

原创 数据结构-----顺序队列和链式队列的应用

使用循环队列+两个线程:实现按顺序执行任务。使用sem信号量进行线程之间的同步。

2024-03-22 21:43:50 375 1

原创 数据结构-----队列:循环队列与链式队列

队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已我们把它简称为链队列。循环队列定义:队列的头尾相接的顺序存储结构

2024-03-22 21:04:52 936 1

原创 数据结构----栈的应用

顺序栈应用:检测代码完整性链栈应用:四则运算表达式计算

2024-03-22 19:42:21 255 1

原创 数据结构-----顺序栈和链栈的区别

顺序栈使用数组实现,链栈使用链表实现。空间复杂度:顺序栈和链栈的均为 O(n),其中 n 分别是栈的最大容量和元素个数。时间复杂度:O(1),即常数时间。链栈具有更高的灵活性,可以动态地调整大小,而顺序栈大小固定。顺序栈的访问速度更快,因为数据连续存储,可以通过下标直接访问,而链栈需要通过指针跳转。

2024-03-21 21:00:31 574 1

原创 数据结构-----栈、顺序栈、链栈

栈是限定仅在表尾进行插入和删除操作的线性表。特点:数据是先进后出、后进先出栈的。顺序存储其实也是线性表顺序存储的简化,简称为顺序栈。栈的链式存储结构,与顺序栈不同的是链栈是由一个个节点拼接而成,并非连续的数组。

2024-03-21 18:00:02 1236 1

原创 C语言(六)枚举和typedef

提高代码可读性,将一些相关常量集合在一起,成为一个枚举类型。

2024-02-25 10:13:26 386 1

原创 C语言(五)union共用体数据存放

共用体数据的存放和读取

2024-02-25 10:03:10 382 1

原创 结构体类型的内存大小问题

在占用内存空间时,结构体中的成员类型不一样,因此电脑为了方便更容易获取数据,都会把成员放在地址可以被其基本类型大小整除的,比如int a,假设地址0x2003是空地址,但为了方便读取数据,会把int a放在0x2004上,0x2003空出来,这样以此类推存放后面的结构体成员。运行一下上面的代码:结构体的大小是24字节,依次打印abcd的地址,可以看到b的地址与c的地址之间相差4字节,说明b存放了1字节,剩下的3字节处于空状态,那么根据第三要素可以知道,d存放的时候占用8字节,只不过其中7各都处于空状态。

2024-02-25 09:53:59 299 1

原创 C语言(四)结构体创建、调用、传参

数组名本身就是数组的地址,即数组首元素的地址。

2024-02-19 22:59:40 1524 1

原创 C语言(三)三大结构

++i 比 i++执行效率更高

2024-02-19 22:42:16 256 1

原创 C语言(二)数据类型、数据存放流程

定义的变量会在RAM内存空间中给出一部分空间用来存放数据,如果变量大小写名不一样,代表着两个不同的内存空间,变量之所以可以改变数值是因为有内存空间。

2024-02-18 16:14:31 750 1

原创 平衡步兵底盘PID参数调试记录

平衡底盘重点可以分两大部分,一部分属于底层控制及获取数据正确,另一部分就是PID算法控制及参数调节,后部分属于非常耗时间且折磨的。根据内容其实也能看出来是RoboMaster的平衡步兵,希望写的文章内容能对其他人(RMer)有帮助。

2024-02-14 17:26:47 2495 2

原创 linux命令:基础指令与vi编译

vi是一个终端文本编辑器,它在字符界面下运行,没有图形用户界面(GUI)。用户与vi交互通过键盘命令。因此脱离了鼠标,全程由键盘操作。vi属于轻量级的文本编译器,通过一些插件和配置,可以扩展其功能。同时vi跨平台的,几乎在所有的Linux系统上都可以找到后续的所有代码都将使用vi指令进行编写,不再像以前windows下使用一些编译软件比如keil等进行编译,嵌入式linux也是在此基础之上进行学习,代码大同小异,可以将之前的代码尝试使用vi编译在linux中实现。

2024-02-08 20:51:46 449

原创 基于CUBEMX的HAL库串口通信实操代码

在DMA传输过程中,如果启用了地址自增,那么在每次数据传输完成后,DMA将自动递增源地址和/或目标地址,以使下一次传输能够操作新的数据。数据直接从一个外设传输到另一个外设,而不涉及中间的内存。数据发送中断:当串口发送缓冲区为空时,表示可以发送新的数据,触发数据发送中断,处理器中断当前执行的任务,执行数据发送的中断服务程序,将需要发送的数据放入发送缓冲区。数据接收中断:当串口接收缓冲区中有新的数据可用时,会触发数据接收中断,处理器会中断当前执行的任务,转而执行数据接收的中断服务程序,以处理接收到的数据。

2024-01-26 20:33:11 916

原创 基于CUBEMX的HAL库can通信实操代码(非理论)

接收这里有两种不同方式的编写方式,第一种是先存放数据信息,再区分ID存放到相应结构体中去;第二种是先根据ID区分,再存放数据到结构体中。两种方式都可以,我个人更倾向于使用第二种方式获取数据,更符合逻辑些。以上就是can的全部代码,有问题可以评论或者私聊我,找到错误也可以说出来我改正。

2023-12-21 12:14:16 2505 3

原创 能量机关 STM32HAL库开发大疆A板WS2812B彩灯(PWM+DMA)

本文主要目的是为了制作RoboMaster比赛能量机关的灯条控制,模拟比赛场中大符,搭建出类似场地道具,以供视觉测试使用的是RoboMaster开发板A型,芯片为STM32F427IIH6,使用的灯条为WS2812B。采用PWM+DMA控制,使用CUBEMX配置底层,keil5编辑烧录代码实现:一共五片扇叶,每片扇叶均实现流水灯+常亮颜色参考文章在后面会标记出来

2023-12-19 00:52:11 2743 3

数据结构-顺序队列和链式队列的应用

数据结构-顺序队列和链式队列的应用

2024-03-22

数据结构-栈的应用:顺序栈与链栈的应用

数据结构-栈的应用:顺序栈与链栈的应用

2024-03-22

空空如也

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

TA关注的人

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