程序编译 在linux中,gnu项目提供了gcc编译器、g++编译器和gdb调试器。 C和C++语言正在不断发展,为了保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G++来编译C++语言编写的源代码。 编译过程:预处理、编译、汇编、链接 预处理:将所有的#include头文件、#define标识符替换成文本的真正内容,生成.i预处理文件(预处理之后得到的仍然
为什么需要设备驱动模型内核版本发展2.4版本之前内核没有统一的设备驱动模型,但是可以用(例如先前的led字符设备驱动实验,使用前需要手动调用mknod命令创建设备文件,从而进一步控制硬件)。 2.4~2.6版本内核使用devfs,挂载在/dev目录。需要在内核驱动中创建设备文件(调用devfs_register创建设备文件,无需手动mknod命令,需传入设备文件名),命名过于死板(编译后驱动对应
进程函数简单描述一下关于进程的函数,主要有fork调用、exec调用、exit调用、wait调用和sleep调用。 fork调用 所需头文件 #include <unistd.h> //标准函数库 #include <sys/types.h> //提供系统调用的标志 函数原型 pid_t fork(void); //创建子进程时,复制父进程上下文
现代内核派系宏内核关键功能(基本功能,不可裁剪、扩展)和服务功能(如文件系统、设备驱动、网络服务等,可裁剪、扩展)均在内核空间提供。运行效率高。扩展性较差。system call(系统调用)能够先入内核态来使用内核提供的服务。 微内核 内核空间只提供关键功能,服务功能在用户空间提供。运行效率较低。安全性、扩展性较高。 在Linux内核源码中有超过50%的代码都与设备驱动相关。Li
屏蔽驱动打印信息 root权限:echo “1 4 1 7” > /proc/sys/kernel/printk sudo sh -c “sudo echo “1 4 1 7” > /proc/sys/kernel/printk 实现触摸屏校验第一次进入Linux系统时,会出现触摸校验提示,按提示校准5个点就可以了。如果想重新校验,需进入root权限执行操作。rm /etc/
设计字符设备文件系统调用系统IO的内核处理过程inode索引节点是文件系统中的一种数据结构,用于存储文件的元数据信息,包括文件的大小、访问权限、创建时间、修改时间等。每个文件在文件系统中都对应着一个唯一的inode节点,通过inode节点可以查找到文件的实际数据块的位置。inode节点通常存储在磁盘的inode表中,文件系统通过inode号来访问和管理文件。file_operation结构体是函数
一、服务端API介绍1.创建套接字socket()套接字:TCP用主机的IP地址加上主机的端口号作为TCP连接的端点 int socket(int domain, int type, int protocol); 返回一个网络描述符,类似于文件描述符,用于接下来的操作,失败返回-1 参数: int domain:(一般使用AF_INET,互联网协议族) AF_UNIX: Unix域
cp指令的作用:将原文件的内容复制到目标文件中 在编写函数前介绍一下int main() 函数的原型: argc 是Linux使用gcc编译时传的参数个数,argv 是指向指针数组(数组元素都为指针)的指针,类似于二级指针,如下图,我们一般使用第一种的表示方法,这样更有利于告诉阅读代码的人,这是一个指向指针数组的指针,而不单纯是一个指针。 向main()函数传入三个参数:执行文件 m
open()函数:int open(const char *pathname, int flags, mode_t mode); 使用open函数需要的头文件:#include ‹sys/types.h› #include ‹sys/stat.h› #include ‹fcntl.h› open()的返回值:返回一个文件描述符,当文件成功打开时,返回一个非负整数,当文件打开失败时,
Linux在使用很多额外的功能时都要用到第三方库,本文将使用curl库和sqlite库两个第三方库 获取第三方库在官网或者某个途径(git)获得该库的压缩安装包,使用命令tar xvf 压缩包解压第三方库压缩包 第三方库解压包一般包括以下内容: 安装第三方库①查看第三方库的压缩包中的README文件,该文件是作者对这个库的介绍文档,一般会介绍这个库的功能和如何去使用这个库 如第三方库s
Linux文件编程为什么需要分文件编程对一个需求进行功能责任划分方便调试让主程序更加整洁 如何分文件编程如现在一个计算器的需求 #include <stdio.h> #include <stdlib.h> #include <string.h> double add(double a,double b) { return a+b;
对于目的平台的Linux内核的编译,一般选择交叉编译的方式,以树莓派4B为例,在Linux虚拟机上编译一个适合树莓派4B使用的Linux内核 交叉编译主机下载目的平台的交叉编译链和内核编译所需的依赖(部分第三方库)查看树莓派的位数,命令getconf LONG_BIT 安装第三方库ncurses,命令sudo apt install git bc bison flex libssl-dev
交叉编译交叉编译是在一个平台上生成另一个平台的可执行代码,例如我们在Windows编写的C51的代码,并编译生成在C51上可执行的xxx.hex文件,这个文件是在C51上运行的而不是在Windows运行的。 为什么要进行交叉编译目的平台资源匮乏,缺少我们需要的编译器,导致某些文件无法编译运行。目的平台还没有建立,连操作系统都没有,因此即使树莓派有自己的操作系统(linux),当树莓派的目的平
开发一个RISC-V上的操作系统(一)—— 环境搭建 在前面我们使用Verilog实现了一个简易的RISC-V处理器,并且能烧录到板子上跑一些简单C程序,传送门: RISC-V处理器的设计与实现(一)—— 基本指令集_risc_v处理器_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(二)—— CPU框架设计_Patarw_Li的博客-CSDN博客 RISC-V处理
RISC-V处理器的设计与实现(三)—— 上板验证(基于野火征途Pro开发板) 文章目录 RISC-V处理器的设计与实现(一)—— 基本指令集_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(二)—— CPU框架设计_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(三)—— 上板验证_Patarw_Li的博客-CSDN博客 前面我们用Ver
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信