![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
鲁班班班七号
这个作者很懒,什么都没留下…
展开
-
linux驱动编程(六)--Menuconfig操作、Kconfig、.config文件、内核配置裁剪
一、Menuconfig的操作1.Linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁剪掉2.menuconfig是生成.config文件的一个工具3.配置内核可以使用以下命令#make config //(基于文本的最传统的配置界面)#make menuconfig //(基于文本菜单的配置界面) (用最多)#make xconfig //(要...原创 2018-08-30 21:45:36 · 1386 阅读 · 0 评论 -
Linux 系统的启动
Linux 系统的启动,要经历BIOS自检 -> 启动 GRUB -> 加载内核 -> 执行第一个进程 -> 配置系统初始环境1.BIOS自检:BIOS 的初始化主要完成以下 3 项工作:第一次检查计算机硬件和外围设备(第二次自检由内核完后,后续会讲),例如 CPU、内存、风扇灯。当 BIOS 一启动,就会做一个自我检测的工作,整个自检过程也被称为 POST(Pow...原创 2019-07-30 10:53:27 · 127 阅读 · 0 评论 -
linux创建线程pthread_create pthread_join
pthread_create函数简介:pthread_create是UNIX环境创建线程函数头文件:#include<pthread.h>函数声明:int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *r...原创 2019-03-19 14:18:11 · 3572 阅读 · 0 评论 -
linux中的.so文件和.a文件及生成动态链接库*.so文件的方法
Linux下的.so是基于Linux下的动态链接,其功能和作用类似与windows下.dll文件一、引言通常情况下,对函数库的链接是放在编译时期(compile)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无关系,因为所有需要的函数已拷贝到自己门下。所以这些函数库被称为...原创 2019-03-06 18:38:14 · 3170 阅读 · 1 评论 -
linux export命令
export命令Linux export命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。同时,重要的一点是,export的效力仅及于该次登陆操作。注销或者重新开一个窗口,export命令给出的环境变量都不存在了。该命令的语法如下:export [-fnp][变量名称]=[变量设置值]其中:...原创 2019-03-05 15:45:26 · 3544 阅读 · 0 评论 -
Linux驱动编程(十二)--物理地址&虚拟地址
上层程序员不用关心物理地址和虚拟地址具体是多少,只需要对一组宏定义操作,就是对处理器内部寄存器操作cpu—cache–ram–rom一、MMU是中央处理器中用来管理虚拟存储器、物理存储器的控制线路,同事负责虚拟地址映射为物理地址二、内存管理单元的基本思路数据和堆栈的大小总和可以超过物理存储器的大小,操作系统把当前使用的部分留在内存中,其他的保留在硬盘上。三、内存管理单元–地...原创 2018-09-13 15:59:06 · 426 阅读 · 0 评论 -
Linux驱动编程(十一)--生成设备节点
一、2.6版本之前的废弃了二、杂项设备1.为什么会有杂项设备?节省主设备号:一共只有255个主设备驱动写起来相对简单2.杂项设备初始化部分源文件“drivers/char/misc.c”,这一部分是强制编译的3.杂项设备注册头文件”include/linux/miscdevice.h”常用参数.minor设备号.name生成设备节点的名称.fop...原创 2018-09-05 21:17:18 · 357 阅读 · 0 评论 -
linux驱动编程(五)--最简linux驱动
一、最简linux驱动最简linux驱动,即最小模块 1.必备的头文件#include&lt;linux/module.h&gt; // 所有的linux代码必须遵循GPL协议// 协议在module.h中#include&lt;linux/init.h&gt; // 包含初始化宏定义的头文件,代码中的函数module_init和module_exit在此文件中。//...原创 2018-08-30 10:18:33 · 247 阅读 · 0 评论 -
Linux驱动编程(十)--驱动注册
一、驱动注册驱动注册使用结构体platform_driver,该结构体在“include/linux/platform_device.h”中,使用命令打开vim include/linux/platform_device.h驱动注册函数platform_driver_register,驱动卸载函数platform_driver_unregister也在这个头文件中,这两个函...原创 2018-09-04 21:54:10 · 165 阅读 · 0 评论 -
linux驱动编程(四)--Linux体系结构、Linux内核结构
一、Linux体系结构插图1.内核空间(kernel space)-系统调用接口 -内核支持 -硬件支持2.用户空间(user space)-用户应用 -c库 为何分开? 答:分工产生效率 安全角度:cpu工作模式不同,执行的指令或者访问的寄存器不同 通过“系统调用”和“硬件中断”来完成用户空间到内核空间的转移二、Linux内核结构插图1.SCI层(S...原创 2018-08-29 20:36:36 · 955 阅读 · 0 评论 -
Linux驱动编程(九)--设备注册
一、注册设备现在大多是使用虚拟平台来注册设备1.注册设备使用结构体platform_device该结构体在头文件“include/linux/platform_device.h”中,头文件中也有注册设备和卸载设备的函数#vim include/linux/platform_device.h2.操作过程注册设备,将设备结构体放到平台文件中,会自动注册设备,不用去调用注册...原创 2018-09-04 10:13:40 · 162 阅读 · 0 评论 -
linux驱动编程(三)--ARM处理器体系架构以及发展历程
ARM处理器体系架构以及发展历程CPU(中央处理器)1.遵循冯 诺依曼结构 2.数字电路:门电路 触发器 3.有一套自己的指令系统(解释执行) 4.不断的,顺序的取指令执行 5.哈佛结构(取指令 取数据(下条指令的数据) 同时执行)指令系统——–相当于软硬件界面RISC(精简指令集) vs CISC(复杂指令集)CISC(复杂指令集)架构: -8051 X86...原创 2018-08-29 11:07:15 · 515 阅读 · 0 评论 -
linux驱动编程(二)--编程步骤
1.看硬件原理图 2.看处理器的芯片手册 3.对外部设备操作的步骤1.通过原理图找到对应pin脚2.根据pin脚找到相关寄存器,并找到寄存器对应的物理地址3.通过编程实现对该设备的操作嵌入式中对地址(寄存器)进行操作的方法:方法一0x11000104unsigned int * pintx;pintx = 0x11000104;*pintx = 0;*pintx ...原创 2018-08-29 09:44:24 · 144 阅读 · 0 评论 -
linux驱动编程(一)--linux介绍
1.uboot —&amp;amp;amp;gt;引导程序 2.linux内核 3.文件系统 -andrioid -qt -ubuntu驱动程序 ——位于操作系统与硬件之间 linux设备:字符设备,块设备(bsp板级支持包),网络设备(bsp板级支持包)1.GPIO 2.内存管理单元(MMU) MCU(微控制器)—&amp;amp;amp;gt; MPU(微处理器) 虚拟地址 物理地址 3.linux将设...原创 2018-08-29 09:15:07 · 154 阅读 · 0 评论 -
Linux驱动编程(八)--总线、设备、驱动注册流程详解
一、Linux总线pci i2c spi hid platform usb rtc等二、Linux设备设备一般需要先注册,才能注册驱动 热插拔设备,反过来了,先注册驱动,设备来了再注册设备 命令1.查看总线命令#ls /sys/bus/2.查看设备号的命令#cat /proc/devices设备都有主设备号和次设备号,否则255个设备号不够用 如查看杂项设...原创 2018-08-31 21:32:04 · 846 阅读 · 0 评论 -
linux驱动编程(七)--内核Makefile编译
一、内核编译器路径设置在源码目录Makefile文件中,可以设置编译路径“CROSS_COMPILE”二、Makefile编译文件Makefile文件中: 强制编译 obj-y 配置编译 obj-$(CONFIG_LEDS_CTL) 依赖编译 略三、Linux内核编译流程分析插图:linux编译流程分析...原创 2018-08-31 21:00:50 · 326 阅读 · 0 评论 -
linux 硬链接和软链接
硬链接创建硬链接实际上是为原文件在储存器中的资源再新建一个入口,所以硬链接和原文件指向的其实是储存器中的同一处资源(可以理解为硬链接和原文件就是同一个文件)。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;软链接而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。...原创 2019-07-26 17:04:31 · 71 阅读 · 0 评论