自定义博客皮肤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)
  • 收藏
  • 关注

原创 函数参数当中的一级指针和二级指针

在C语言中,是否需要使用二级指针取决于你想要对进行操作。

2025-03-04 11:27:34 217

原创 Bios命令行和Linux命令行

Linux 下的命令行和 BIOS 下的命令行都可以被称为“shell”,因为它们都提供了一种用户与计算机系统交互的界面。

2025-01-09 10:38:42 238

原创 OpenBmc基础指南

OpenBMC是一个开源的基于Linux的**固件**项目,用于管理和控制服务器硬件的底层管理系统。BMC的全称是Baseboard Management Controller,它是嵌入在服务器主板上的一个独立的处理器,负责监控和管理服务器的硬件。

2025-01-08 10:37:04 1715

原创 VisualStudio设置静态链接

*问题:**最近用visual studio写了一个小功能,编译完给别人用发现需要依赖dll文件。编译的时候默认用的是动态链接,网上查了下,都是教怎么创建动态库或者静态库的,不是我需要的,干脆分享一下,很简单。**解决方法:**打开项目属性,选择"C/C++"->“代码生成”->“运行库”,把它改成多线程(/MT)或者多线程调试(/MTd),改成静态以后就不需要依赖dll文件了,可单独运行,无非就是exe文件大了点。

2024-10-08 14:08:33 736

原创 C语言结构体位域的使用技巧(联合体妙用)

嵌入式一般在搞寄存器的时候会用到位域,像上面这个例子,但是我没法把 myBitField 这个结构体当成数值来用,除非用指针强转,但是这个行为存在危险性。嘿嘿,整个联合体就好了。联合体(union)的一个主要特性是它所有的成员都占用相同的内存位置。这意味着,你改结构体就是在改Value。位域成员的总位数不能超过它们所属的数据类型的大小。位域成员可以是无符号的或有符号的,取决于它们前面的关键字。(通常是32位),则所有位域成员的位数总和不能超过32位。如果省略了这些关键字,位域默认为无符号。

2024-06-18 14:28:00 1299

原创 x86架构地址空间的分类

​ 注:IO内存(I/O映射内存)实际上是内存映射I/O地址空间的一部分。它允许CPU通过读写特定的内存地址来直接与硬件设备的寄存器 进行通信。这种方式与通过I/O端口进行通信的方式相比,具有和。​ 在UEFI和操作系统的低级硬件交互中,IO内存地址空间经常被用来配置和控制硬件设备。例,使用MmioWrite8等函数时,就是在 操作内存映射I/O地址空间。这些操作通常在系统启动的早期阶段进行,以确保硬件设备能够正确初始化和配置。

2024-06-18 11:13:15 568

原创 Linux配置GIT,生成密钥

添加公钥到 Git 仓库,你自己的或者公司的仓库。密钥对,一路按回车就行。

2024-05-22 10:48:30 762

原创 数据在内存当中的存储形式——二进制

/用有符号整数的格式说明符去解析该变量,最高位用作符号位,会被解析成负数,输出一个负数。//用16进制格式说明符去解析该变量,输出0xFF。//用无符号整数的格式说明符去解析该变量,输出255。不管是什么样的数据,在内存中都是以二进制0、1的形式存储的。输出什么,取决于你想怎么解析,但是它的内容始终是1111 1111。

2024-05-21 11:20:01 231

原创 关于kmalloc申请内存失败

2.拆分成多个4M,进行kmalloc申请,但是这样做进行具体数据操作的时候比较麻烦。我最后是取了个巧,直接在内核态注册了一个16M的数组,但是这么写可扩展性很差,然后也不知道后期会有什么问题。1.如果要改变最大申请容量,需要重新编译内核。但是我的环境没法这么做。如果你也碰到相同的问题,可以尝试用vmalloc,不过vmalloc申请的空间不连续。问题:用kmalloc在内核态申请16M内存失败了,经过查阅发现kmalloc最大只能申请4M的空间。先记录一下这个问题,看看以后有没有更好的方法解决。

2024-05-20 14:57:38 329

原创 Linux操作系统主要层次

驱动层通常位于内核层中,负责管理硬件设备。驱动程序是内核与硬件设备之间的接口,它们允许内核发送指令给硬件,以及接收来自硬件的状态信息和数据。应用层通过系统调用接口层与内核层交互,内核层中的驱动层再与硬件层进行交互。

2024-05-15 11:31:49 488

原创 mmap映射实战举例

需求:在Linux环境下,需要打开一个文件,然后映射到内存中,接着在特定的地址偏移处写入内容,并且在此之前需要清空该位置的内容并填充为。

2024-05-15 10:32:58 606

原创 ioremap和mmap区别

ioremap和mmap都是 Linux 操作系统中用于内存映射的函数,但它们在用途和工作方式上有一些区别。

2024-05-14 11:03:24 798 1

原创 modprobe: ERROR: could not insert ‘hello‘: Exec format error

在乌班图上写了个最简单的hello驱动,交叉编译完后,上aarch64架构的开发板发现没办法安装。将内核源码中的顶层Makefile文件修改为当前运行内核的版本号即可。重新生成.config文件,编译module并modprobe即可。

2024-04-18 10:37:31 1204 1

原创 Linux系统编程

Vi有三种基本工作模式:+ 命令模式:任何时候,不管用户处于何种模式,只要按一下ESC键+ 文本输入模式:在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式+ 末行模式在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。

2023-08-25 14:02:24 1436 1

原创 C++提高编程

代码示例//自定义数据类型public:mAge = age;//存放对象//创建数据it!= v.end();it++){//放对象指针//创建数据it!= v.end();test02();return 0;

2023-08-16 14:33:44 1849 1

原创 C++核心编程

作用:函数名可以相同,提高复用性函数重载满足条件:同一个作用域下函数名称相同函数参数类型不同或者个数不同或者顺序不同注意:函数的返回值不可以作为函数重载的条件。

2023-08-06 08:46:04 467

原创 数据结构和算法(C语言)

定义数据结构 = 个体的存储 +个体关系的存储(研究数据的存储)算法 = 对存储数据的操作 (对数据的操作)衡量算法的标准时间复杂度大概程序要执行的次数,而非执行的时间空间复杂度算法执行过程中大概所占用的最大内存难易程度健壮性预备知识指针指针就是地址 地址就是指针指针变量是存放内存单元地址的变量指针的本质是一个操作受限的非负整数一个字节就是一个地址,比方说一个double型的变量有8个字节,那么指针当中存了8个地址吗?不是,一般是存了这8个地址当中的首地址。地址。

2023-07-19 18:25:39 2270 3

原创 嵌入式C语言

/错误,fun被调用后,资源被释放,p指向的就是无效地址。自动存储期,请求变量是寄存器的变量(不一定生效),访问和处理的速度更加快。常量的定义,只读的变量(实际可以根据某些方法修改,比如指针越界访问)。自动存储期,默认属性,自动变量,可读可写,如果再{ },栈空间。单纯的值拷贝,上层调用者保护自己空间值不被修改的能力。宏(单纯替换,不进行语法检查,最好加上括号)静态存储期,静态外部、静态内部、静态无链接。类型修饰符(资源属性中位置的限定)易变的,告知编译器不要优化。连续空间的传递(地址传递)

2023-07-08 19:26:54 381 1

原创 TCP、UDP网络编程

客户端主动地发起请求、服务器被动地响应请求。

2023-07-01 17:21:12 55

原创 操作系统学习笔记

存储程序思想(冯诺伊曼)将程序和数据存放到计算机内部的存储器中,计算机在程序的控制下一步一步进行处理将程序放到存储器(内存)中,然后用一个指针(PC/IP指针)指向它,计算机自动(前提是置好初值),开始工作计算机由五大部件组成输入设备、输出设备、存储器、运算器、控制器x86PC开机过程引导扇区:启动设备的第一个扇区。

2023-06-14 13:15:22 551

原创 STM32学习笔记

简介注:USART的时钟只支持输出,不支持输入,同步模式更多是为了兼容别的协议或者特殊用途而设计,不支持两个USART之间进行同步通信,主要学习异步通信。波特率发生器:用来配置波特率,相当于分频器。数据位长度,停止位长度,可选校验位,都可用库函数配置。同步模式:多了个时钟CLK的输出。硬件流控制:可以防止因为B处理慢而导致数据丢失的问题。

2023-05-27 17:24:23 801 1

原创 数据结构与算法笔记(java)

文章目录0 度0.1 时间复杂度0.2 时间频度0.3 空间复杂度1.0 稀疏数组和队列1.1 稀疏数组1.2 队列1.2.1 数组模拟队列1.2.2 数组模拟环形队列2.0 链表2.1 单向链表2.1.2 面试题2.2 双向链表2.3 单向环形链表3.0 栈3.1 栈的基本介绍3.2 栈的应用场景3.3 数组模拟栈3.4 栈实现综合计算器(中缀表达式)3.5 中缀-》后缀表达式4.0 递归5 排序5.1 冒泡排序5.2 选择排序5.3 插入排序5.4 希尔排序5.5 快速排序5.6 归并排序5.7 基数排

2023-04-29 15:32:59 915

原创 Linux应用开发基础知识笔记

c文件的编译经过注:语法错误是在编译过程发现的。

2023-04-17 23:42:48 124

原创 C语言本质笔记

自己分配的,由链接器的参数决定地址(test.bin),按照基地址,根据变量在程序中的位置,确定全局变量在内存中的地址(由下往上)。全局变量、局部静态变量:如何分配空间、如何赋初始值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。在栈中,按照字节(变量类型)大小,从栈顶(高)开始往下(低)分配(满减),通过机器语言分配,先调整,再满减,SP-4。栈POP(比方调用函数,函数中的局部变量用完之后空间就被释放)变量变量,能变,就能读能写,必定在内存里。

2023-04-13 23:24:28 535 1

原创 Linux基础学习笔记

​ Linux 系统会内置 vi 文本编辑器​ Vim具有程序编辑的能力,可以看做是 的增强版本,可以主动的以字体颜色别语法的正确性,方便程序设计代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。基本介绍系统常用的日志常用指令日志管理服务和原理图日志服务管理格式自定义日志文件格式类型自定义日志文件格式级别案例。

2023-04-12 11:31:00 171 1

原创 Linux基础学习笔记

​ Linux 系统会内置 vi 文本编辑器​ Vim具有程序编辑的能力,可以看做是 的增强版本,可以主动的以字体颜色别语法的正确性,方便程序设计代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

2023-04-11 14:00:04 1500 1

空空如也

空空如也

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

TA关注的人

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