linux学习笔记
文章平均质量分 75
头像很酷
工作了以后才发现,记笔记真的是一个好习惯。https://github.com/hello-os
展开
-
Operating Performance Points(性能操作点)
文章标题翻译可能不是很准确,但是还是比较靠近本质意思。opp全名Operating Performance Points。可参考linux官方文档:linux/Documentation/power/opp.txt。1、介绍1.1、什么是性能操作点?现如今功能复杂的soc是由很多子功能模块协作组成的。在执行各种用例的操作系统中,在SOC中,并不是所有的模块都需要一直工作在最高频率。为了解决这中场景,SOC中的子模块被分组到不同的域中。允许一些域运行在低电压低频率环境下,与此同时,另一...原创 2020-06-21 20:40:29 · 922 阅读 · 0 评论 -
nanopim3的GPIO中断功能浅尝
nanopim3的开发板,通过排座引出了部分GPIO引脚,如下图所示:本例,使用GPIOB30做简单测试,看能否设置成功gpio中断,在中断服务程序中,添加打印查看中断次数。所以首先编写gpio中断驱动代码,以ko的形式,模块加载到正在运行的Linux系统中。代码如下:(其中62是GPIOB30的统编号)#include <linux/init.h> #inclu...原创 2019-08-25 22:40:43 · 358 阅读 · 0 评论 -
linux等待队列
转自 linux等待队列wait_queue_head_t和wait_queue_t等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wai...转载 2019-05-30 23:00:31 · 208 阅读 · 0 评论 -
nanopim3文件系统支持strace和gdb
这篇文章主要讲,如何根据源码,编译后安装到nanopim3的文件系统中。把strace和gdb安装好了之后,那么linux用户态的调试手段基本准备就绪了。本文使用的 源码,基本都是接近最新版本的。nanopim3文件系统支持stracestrace源码路径https://github.com/strace/strace/releases下载源码包strace-5.0.tar.xz,解压进...原创 2019-04-10 22:22:47 · 283 阅读 · 0 评论 -
journal日志部分参数理解
详细参数请参考http://0pointer.de/public/systemd-man/journald.conf.html某单板参数如下:[Journal]Storage=persistent存储在disk#Compress=yes#Seal=yes#SplitMode=uidSyncIntervalSec=2s间隔2秒存入diskRateLimitInterval=0...原创 2019-03-21 11:26:39 · 3197 阅读 · 1 评论 -
nanopim3文件系统添加动态库并支持ssh功能
在前一篇文章Nanopim3文件系统制作-支持telnet及tftp功能的文件系统基础上,本文将添加必要的动态库。并支持ssh,scp等功能。动态库的添加在根文件系统中创建lib目录。然后从交叉编译工具链的目录4.9.3/arm-cortexa9-linux-gnueabihf/sys-root查找依赖的动态库,并模仿sys-root目录创建对应的软连接。(或者全部拷贝到文件系统的对应目...原创 2019-03-09 22:18:03 · 271 阅读 · 0 评论 -
Nanopim3文件系统制作-支持telnet及tftp功能
接前一篇Nanopi M3另辟蹊径开机记录 ,已经把uboot和内核kernel成功烧录到256M的sd卡中,并能够正常启动。现在需要挂载一个文件系统(之前的文件系统缺少很多东西,配置也没,所以无法进行正常的学习开发),支持telnet登录,tftp下载功能,避免频繁插拔sd卡。busybox制作生成最小文件系统源码可从地址下载:https://github.com/hell...原创 2019-02-19 22:25:53 · 440 阅读 · 0 评论 -
Linux设备管理的简单分析
首先给出几个常见概念:class、bus、device、device driver、platform_device、platform_driver系统中,关系简图如下(从总线bus的角度分析)可以看到device和device driver必须依附于某一种总线。就是说总线下面挂着一些已经注册过的设备,一个设备对应着一个设备驱动。如果从类别class的角度分析,这些设备就会被分为具体...原创 2019-02-12 11:28:35 · 1939 阅读 · 0 评论 -
Nanopi M3另辟蹊径开机记录
本篇文章的文件系统是瘦身版的,不健全的。但这恰恰是学习内核的好方法,系统运行时会提示缺少什么,或者异常。当你解决这些问题的时候,就会了解到文件系统为什么有这些文件,这些目录。网上有很多关于nanopi m3的烧写开机启动教程。大多数都是根据友善之臂公司给出的官方教程,这里我也把官方教程链接贴出来:http://www.arm9.net/nanopi-m3.asp。今天我要记录的nanopi...原创 2019-01-23 23:10:15 · 1250 阅读 · 1 评论 -
elf文件分析
最近在分析Linux模块加载过程的时候。发现模块加载过程和链接过程有点点相似,都需要做重定向、解决符号引用问题。而这些操作都和elf文件格式有着莫大的联系,所以在出模块加载过程分析的文档之前,先分析一下elf文件。elf全称executable and linkable format,是一种可执行文件、目标文件和库使用的文件的格式。替代了早年的a.out文件格式。linux不仅将elf用于用户...原创 2018-12-23 22:32:32 · 966 阅读 · 0 评论 -
第一个linux驱动程序,hello
前面已经把学习linux的开发环境搭建好了,现在逐步开始学习开发过程。先从内核驱动开始,写一个网上已经被写烂的实列程序。先把它编译好,放进linux系统运行,看看是什么样子。创建文件夹hello,在文件夹下面创建文件hello.c代码如下:#include <linux/init.h>#include <linux/kernel.h>#include <...原创 2018-12-09 15:59:30 · 4914 阅读 · 2 评论 -
busybox制作最小根文件系统
接上篇,qemu启动linux内核 ,启动内核失败后,开始制作一个最小的ramdisk根文件系统。根文件系统制作工具busybox,还是走大众路线吧。源码包下载地址:https://busybox.net/直接进入busybox的根目录,准备编译,使用默认配置文件defconfig,生成配置文件make ARCH=arm defconfig再修改下配置项make ARCH=arm ...原创 2018-11-19 22:13:48 · 774 阅读 · 0 评论 -
qemu启动uboot
首先下载uboot源码包,UBOOT源码下载地址:http://ftp.denx.de/pub/u-boot/。这里取版本u-boot-2018.09.tar.bz2。配置好指定的交叉编译工具链,工具链的制作方法,请参考文章——ARM交叉编译工具链的制作 。进入Uboot的根目录,执行如下命令编译UBOOT:1、生成配置文件, make ARCH=arm vexpress_ca9x4_...原创 2018-11-04 21:23:52 · 9915 阅读 · 0 评论 -
qemu启动linux内核
linux内核源码请自行下载了。下面开始编译Linux4.16.4的内核试试,进入内核根目录,先生成内核配置文件:make ARCH=arm vexpress_defconfig因为准备挂载ramdisk文件系统,所以这里还需要再配置一下内核,make ARCH=arm menuconfig,去配置支持RAMDISK,配置步骤如下:然后编译内核:make A...原创 2018-11-06 22:38:33 · 5638 阅读 · 0 评论 -
ARM交叉编译工具链的制作
今天是10.24程序员节日。奖励一下自己,写一篇实践博客。制作arm交叉编译工具链。目前比较新的制作交叉编译工具链的软件是crosstool-NG,非常方便,还可以编译高版本的内核,比如4.16及以上。Crosstool-NG的下载地址:http://crosstool-ng.github.io/download/,可以在该网址找到如何安装crosstool-NG。今天在这里实际操作一...原创 2018-10-24 22:00:26 · 1594 阅读 · 0 评论