草庐IT

编译Linux 2.6.34内核

《Linux内核设计与实现(第三版)》中所用的内核版本为2.6.34,这个版本太旧了,在高版本系统中编译各种不支持,所以选了Ubuntu14.04进行编译。编译准备编译环境:Ubuntu14.04GCC版本:4.8.4编译的内核版本:Linux2.6.34内核源码下载:https://mirrors.edge.kernel.org/pub/linux/kernel/编译过程解压源码linux-2.6.34.tar.gz,进入源码目录执行以下命令:#makemrproper#makeclean#makeconfig#make>/dev/null编译成功后,源码目录所用空间从443M增至4.9G。

swift - Metal 内核在新款 MacBook Pro(2016 年末)GPU 上无法正常运行

我正在研究使用Swift和Metal在GPU上进行图像处理的macOS项目。上周,我收到了我的新15英寸MacBookPro(2016年末)并注意到我的代码有些奇怪:应该写入纹理的内核似乎没有这样做......经过大量挖掘,我发现问题与Metal(AMDRadeonPro455或Intel(R)HDGraphics530)使用哪个GPU进行计算有关。使用MTLCopyAllDevices()初始化MTLDevice返回代表Radeon和IntelGPU的设备数组(而MTLCreateSystemDefaultDevice()返回默认设备是Radeon)。在任何情况下,代码在IntelG

RK3399驱动开发 | 15 - RTC实时时钟芯片HYM8563S调试(基于linux5.4.32内核)

文章目录一、LinuxRTC设备驱动框架二、HYM8563实时时钟芯片1.简介2.引脚图3.连接原理图三、设备驱动调试1.设备树节点描述2.使能内核驱动3.测试四、hym8563驱动实现分析1.i2c设备驱动框架2.rtc设备注册流程3.通过i2c驱动操作硬件一、LinuxRTC设备驱动框架Linux内核中使用RTC设备来提供硬件时间,为了兼容各种各样的RTC硬件,Linux内核提供了RTC设备驱动框架,如下。RTC设备驱动框架向用户空间提供了三种节点:/dev/rtcN:设备节点/sys

杭电操作系统实验一 --- Linux内核编译及添加系统调用(arm架构华为云)

实验要求 掌握Linux内核的编译与安装掌握Linux系统调用基本概念设计和添加linux系统调用        (1)修改或返回指定进程的优先级(nice值和prio值)(详见教材P328)提示:可能参考的内核函数:set_user_nice().        (2)改变主机名称为自定义字符串(自选题目) 1、Linux内核的编译与安装  (使用华为云,完成openEuler内核的编译与安装)(1)登录系统并查看当前内核版本[root@openEuler~]#uname-r (2)安装工具,构建开发环境[root@openEuler~]#yumgroupinstall-y"Developm

CH583,CH582,CH581 国产蓝牙芯片RISC-V内核BLE 5.3无线MCU

概述CH583是集成BLE无线通讯的32位RISC微控制器。片上集成2Mbps低功耗蓝牙BLE通讯模块、2个全速USB主机和设备控制器及收发器、2个SPI、4个串口、ADC、触摸按键检测模块、RTC等丰富的外设资源。CH583相比CH582多了SP11主机,支持最低1.7V电源电压。CH581基于CH582简化,去掉了-组USB、触摸按键检测模块、12C模块和两个串口,FlashROM总容量仅256KB,ADC不支持DMA。 功能●RoyaltyFree内核Core:-32位青稞RISC-V处理器WCHRISC-V4A-支持RV32IMAC指令集,硬件乘法和除法-低功耗两级流水线,高性能1.5

深入理解Linux内核——内存管理(4)——伙伴系统(1)

提要:本系列文章主要参考MIT6.828课程以及两本书籍《深入理解Linux内核》《深入Linux内核架构》对Linux内核内容进行总结。内存管理的实现覆盖了多个领域:内存中的物理内存页的管理分配大块内存的伙伴系统分配较小内存的slab、slub、slob分配器分配非连续内存块的vmalloc分配器进程的地址空间内核初始化后,内存管理的工作就交由伙伴系统来承担,作为众多内存分配器的基础,我们必须要对其进行一个详细的解释。但是由于伙伴系统的复杂性,因此,本节会首先给出一个简单的例子,然后由浅入深,逐步解析伙伴系统的细节。伙伴系统简介伙伴系统将所有的空闲页框分为了11个块链表,每个块链表分别包含大

粗暴解决因ubuntu 18.04因内核升级导致的NVIDIA显卡驱动失效

粗暴解决因ubuntu 18.04因内核省级导致的NVIDIA显卡驱动失效有一天电脑开机之后发现显示屏分辨率不对,接过一看系统信息发现显卡找不到了,再使用nvidia-smi查看显卡驱动果然打不开了.以前出现过这种文体,好像是通过重装对应内核版本的dkms来解决,但是这次我发现dkms并没有问题,sudoapt-getinstalldkms安装信息如下:Readingpackagelists...DoneBuildingdependencytree      Readingstateinformation...Donedkmsisalreadythenewestversion(2.3-3ubu

(一)Linux:自由、开放、灵活的操作系统内核

目录一、Linux的发展史二、linux的开源三、目前的现状四、企业应用现状五、发行的版本 六、安装与使用 七、利用云服务器配置Linux环境一、Linux的发展史Linux是一款由林纳斯·托瓦兹(LinusTorvalds)开发的操作系统内核,它的发布和使用可以追溯到上个世纪90年代初期。以下是Linux发展历程的主要事件:1991年:林纳斯·托瓦兹在赫尔辛基大学开始编写Linux内核代码。1992年:Linux内核1.0版本发布,成为自由软件(FreeSoftware)运动的标志之一。1993年:RichardStallman提出GNU计划,目标是创建一个自由软件操作系统。GNU计划中缺少

Linux 内核与架构速查

Linux内核与架构速查博主博客https://blog.uso6.comhttps://blog.csdn.net/dxk539687357本文主要记录查询Linux计算机的内核与架构,用于下载对应架构的第三方软件。一、介绍如上图所示,有时候我们下载一些第三方软件,软件会有很多中架构,需要自己自行判断自己的计算机架构,然后下载对应的文件,下载错误就会运行不了。目前常用的CPU架构有:x86、ARM、MIPS、Alpha。其中,几种CPU架构的特点对比如下图所示:二、查询内核版本[root@nukix~]#cat/proc/versionLinuxversion4.18.0-408.el8.x

驱动开发:内核实现SSDT挂钩与摘钩

在前面的文章《驱动开发:内核解析PE结构导出表》中我们封装了两个函数KernelMapFile()函数可用来读取内核文件,GetAddressFromFunction()函数可用来在导出表中寻找指定函数的导出地址,本章将以此为基础实现对特定SSDT函数的Hook挂钩操作,与《驱动开发:内核层InlineHook挂钩函数》所使用的挂钩技术基本一致,不同点是前者使用了CR3的方式改写内存,而今天所讲的是通过MDL映射实现,此外前者挂钩中所取到的地址是通过GetProcessAddress()取到的动态地址,而今天所使用的方式是通过读取导出表寻找。挂钩的目的就是要为特定函数增加功能,挂钩的实现方式无