linux
研究linux系统
white_line
单片机程序员
展开
-
linux 中的log
klogd 不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为 syslogd 的客户端运行。syslogd 默认使用 /etc/syslog.conf 作为配置文件,它负责截获应用程序消息,还可以截获 klogd 向其转发的内核消息。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。一般这个缓存中的log会被写入文件中,以防丢失,但目前移远没有这么做,因为这个缓存有10m,够用了。由于内核的特殊性,我们不能使用常规的方法查看内核的信息。1 printk()打印内核消息。原创 2023-03-03 15:53:32 · 806 阅读 · 0 评论 -
linux 确定usb 对应的串口节点
linux 确定usb 对应的串口节点当开发板上的usb 虚拟的串口节点不止一个,如mtk ag568n的usb 虚拟出来的串口有三个,此时接入linux 中无法判断节点对应的是什么?如:window中的端口:如果将开发板接入linux中,会发现节点不知道怎么对应这里能看到Linux出现了三个节点 ttyACM0、ttyACM1、ttyACM2这样我就不知道windows中的ELT port 对应的是哪个节点。解决方法:1.在windows下查看ELT端口,可以看到00052.看li原创 2022-05-31 10:16:25 · 1432 阅读 · 1 评论 -
Linux下profile和bashrc四种的区别
Linux下profile和bashrc四种的区别要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,原创 2022-05-30 10:53:55 · 1881 阅读 · 0 评论 -
proc文件夹下没有内容,fstab文件规则
proc文件夹下没有内容,fstab文件规则这是因为proc系统没有挂在上去在/etc/fstab 中加入proc /proc proc defaults 0 0即:原创 2022-05-30 10:52:55 · 398 阅读 · 0 评论 -
linux 中的log
linux 中的log由于内核的特殊性,我们不能使用常规的方法查看内核的信息。下面介绍几种方法。1 printk()打印内核消息。2 管理内核内存的daemon(守护进程) Linux系统当中最流行的日志记录器是Sysklogd,Sysklogd 日志记录器由两个守护进程(klogd syslogd)和一个配置文件(syslog.conf)组成。klogd 不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为 syslogd 的客户端运行。syslogd 默认使用 /etc/syslog.原创 2022-05-30 10:48:07 · 510 阅读 · 0 评论 -
linux分区挂载
linux分区挂载(1)ubiattach:将指定的mtd分区关联到ubi上用法:./ubiattach /dev/ubi_ctrl -m 1 -d 1, 将mtd1关连ubi_1(2)ubidetach:解除mtd与ubi的关联用法:./ubidetach /dev/ubi_ctrl -m 1mount -a 是自动挂载 /etc/fstab 里面的东西。要看oem.ubi分区的内容,需要将分区挂载到根文件系统直接将这个分区挂载到/mnt/oem,挂不上去mount /dev/mtd37原创 2022-05-30 10:46:14 · 545 阅读 · 0 评论 -
设备树描述
设备树描述内容来自《linux设备驱动开发详解–基于linux 4.0内核》设备树是一种描述硬件的数据结构,它起源于OpenFirmware(OF)在linux 2.6中,ARM架构的板极硬件细节过多的被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx中,采用设备树后,许多硬件的细节可以直接通过它传递给linux,而不再需要在内核中进行大量的冗余编码1.DTS设备树由一系列被命名的节点(node)和属性(Property)组成,而节点本身可包含子节点。所谓属性,其实就原创 2022-05-30 10:32:01 · 704 阅读 · 0 评论 -
编译debug内核
编译debug内核修改点:./kernel/printk/printk.c执行 make kernel_menuconfig执行make kernel原创 2022-05-31 09:00:00 · 249 阅读 · 0 评论 -
fastboot 操作
fastboot 操作fastboot背景介绍1、什么是fastboot(1)fastboot是android使用的一种刷机方法。因为Android、的底层是Linux(2)fastboot使用usb作为物理传输(3)fastboot是uboot中的一个命令在uboot下输入fastboot命令,就可以让uboot进入fastboot模式,刷机就是在fastboot模式下进行刷机。(4)fastboot需要主机端的fastboot软件相配合(5)fastboot在开发板和主机之间定义了一套原创 2022-05-30 10:25:02 · 5816 阅读 · 0 评论 -
虚拟机使用adb连接板子
虚拟机使用adb连接板子1.首先要让虚拟机能识别到板子,才能使用adb 连接到板子,首先要打开这个按钮,如果没有这这个按钮需要执行第二步操作,如果有就不需要执行第二步2.将虚拟机关机后,把下图中的内容修改好3.此时虚拟机识别了板子,但是还无法操作板子4.接下来就跟着https://blog.csdn.net/binglumeng/article/details/69525361 来操作找到板子使用的usb5.然后cd /etc/udev/rules.d/目录下,查看.rules文件,如果原创 2022-05-30 10:12:27 · 2931 阅读 · 0 评论 -
常用的linux 命令
常用的linux 命令1.cat /proc/mtd 查看mtd设备2.df -h 查看磁盘大小 3.fuser /dev/ttyS0 和ps |grep 连用可以找到当前什么应用使用了设备节点4.查看usb 是2.0还是3.0find -name current_speed5.du -h . 查看文件大小...原创 2022-05-30 10:03:47 · 395 阅读 · 0 评论 -
主机驱动与外设驱动的分离思想
主机驱动与外设驱动的分离思想linux 中的SPI 、I2C、USB等子系统都利用了典型的把主机驱动和外设驱动分离的想法,让主机端只负责产生总线上的传输波形,而外设端只是通过标准的API来让主机端以适当的波形访问自身。因此这里面就涉及了4个模块:1.主机端的驱动。根据具体的I2C 、SPI、USB等控制器的硬件手册,操作具体的I2C、SPI、USB等控制器,产生总线的各种波形。2.连接主机和外设的纽带。外设不直接调用主机端的驱动来产生波形,而是调用一个标准的API。由这个标准的API把这个波形的传输请原创 2022-05-07 15:52:59 · 456 阅读 · 0 评论 -
将globalfifo_platform改写成misc字符设备
将globalfifo_platform改写成misc字符设备由于linux 驱动倾向于分层设计,所以各个具体的设备都可以找到它归属的类型,从而套到它相应的架构里面去,并且只需要实现最底层的那一部分。但是,也有部分类似globalmem、globalfifo的字符设备,确实不知道它属于沈类型,我们一般推荐大家采用miscdevice框架结构。miscdevice本质上也是字符设备,只是在miscdevice核心层的misc_init()中,通过register_chrdev(MISC_MAJOR,“mis原创 2022-05-07 15:15:06 · 318 阅读 · 0 评论 -
linux globalfifo改成platform平台驱动
linux globalfifo改成platform平台驱动驱动代码:/** 验证阻塞与非阻塞操作*此版本添加了互斥体*进程间互斥访问共享资源(globalfifo)**文件中,读fifo将唤醒写filo的进程(如果之前fifo正好是满的)* 写fifo将唤醒读fifo的进程(如果之前fifo正好是空的)**将globalfifo作为platform设备*完成两个工作* 1.将globalfifo移植为platform驱动* 2.在板文件中添加globalfifo这个p原创 2022-04-29 16:41:32 · 162 阅读 · 0 评论 -
linux内存管理
linux内存管理在Linux 内核空间中申请内存涉及的函数主要保括kmalloc()、__get_free_pages()和vmalloc()等。kmalloc()和__get_free_pages()(及其类似函数)申请的内存位于DMA和常规内存的映射区,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单的转换关系而vmalloc()在虚拟内存空间中给出一块连续的内存区,实质上,这片连续的虚拟内存在物理上并不一定连续,而且vmalloc()申请的虚拟内存和物理内存之原创 2022-04-29 10:44:24 · 1125 阅读 · 0 评论 -
linux 定时器操作
linux 定时器操作当出现:Linxu内核编程报错:implicit declaration of function ‘init_timer’错误原因是:在4.15内核里,init_timer被移除了,需要换用新的timer_setup接口,可以查看下面的驱动层代码second_open函数应用层程序#include <stdio.h>#include <sys/time.h>#include <sys/types.h>#include <uni原创 2022-04-28 15:37:59 · 1126 阅读 · 0 评论 -
linux 阻塞、非阻塞、异步通知
linux 阻塞、非阻塞、异步通知阻塞当应用程序调用了read\write…系统接口到内核空间后,运行了驱动中的函数再返回处理结果时,驱动中的函数使用了等待队列非阻塞(轮询select poll,epoll)当应用程序调用了select/poll/epoll 对应都是内核空间中,驱动程序的poll函数。在进行对设备的读写之前,查询当前设备的状态(是否可读/是否可写)异步通知这种方式是让设备主动告知应用程序,当前设备的状态(是否可读/是否可写)应用层三步走:1.将打开的设备文件描述符的拥有者原创 2022-04-28 10:05:09 · 480 阅读 · 0 评论 -
linux 互斥机制
linux 互斥机制之前一直不能理解各种互斥机制的优劣,完整的看了《Linux设备驱动开发详解:基于最新的Linux4.0内核》这书第7章后,才彻底的搞懂了linux 系统中的互斥机制(针对并发操作)有:1.原子操作2.自旋锁3.读写锁4.顺序锁5.rcu(read copy update)6.信号量7.互斥锁8.完成量原子操作基于整形变量的原子操作基于变量位的原子操作自旋锁显著特点是:当进程得不到锁,会在原地自转(不释放cpu),此时会降低cpu利用率,影响cpu性能评估,原创 2022-04-28 09:49:47 · 1204 阅读 · 0 评论 -
sysfs文件系统与Linux设备模型
sysfs文件系统与Linux设备模型linux 2.6以后的内核引入了sysfs文件系统,sysfs被看成是与proc、devfs和devpty同类别的文件系统,该文件系统是一个虚拟的文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似。sysfs把连接在系统伤的设备和总线组织成一个分级的文件,他们可以由用户空间存取,向用户空间导出内核数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系,其顶级目录包括block、bus、de原创 2022-04-26 11:44:39 · 157 阅读 · 0 评论 -
udev比devfs好在哪里
udev比devfs好在哪里为什么devfs 会被udev取代?首先明确一点udev 运行在用户空间 (内核版本2.6及以上)devfs 运行在内核空间(内核版本 2.4)Linux 设计中强调的一个基本观点是机制和策略的分离。机制是做某样事情的固定步骤、方法,而策略就是每个步骤所采取的不同方式。机制是相对固定的,而每个步骤采用的策略是不固定的。机制是稳定的,而策略则是灵活的,因此在linux内核中,不应该实现策略比如Linux 提供API可以让人把县城优先级调高或者调低,或者调整调度策略原创 2022-04-25 16:54:03 · 953 阅读 · 0 评论 -
linux 文件系统与设备驱动
linux 文件系统与设备驱动如下图所示为linux 中的虚拟文件系统、磁盘/Flash 文件系统及一般的设备文件与设备驱动程序之间的关系应用程序和VFS之间的接口是系统调用,而VFS与文件系统以及设备文件之间的接口是file_operations结构体成员函数,这个结构体包含对文件进行打开、关闭、读写、控制的一系列成员函数,关系如下图所示。由于字符设备的上层没有类似于磁盘的ext4等文件系统,所以字符设备的file_operations成员函数就直接由设备驱动提供了,因此file_operati原创 2022-04-25 16:46:01 · 762 阅读 · 0 评论 -
宏定义中的##作用
宏定义中的##作用在 GNU C 中,宏也可以接受可变数目的参数,例如:#def ine pr_debug(fmt,arg…) printk(fmt,##arg)这里 arg 表示其余的参数,可以有零个或多个参数,这些参数以及参数之间的逗号构成arg 的值,在宏扩展时替换 arg,如下列代码:pr_debug(“%s:%d”,filename,line)会被扩展为:printk(“%s:%d”, filename, line)使用“##”是为了处理 arg 不代表任何参数的情况,这时候,前原创 2022-04-24 19:09:17 · 633 阅读 · 0 评论 -
linux 内核抢占分析
linux 内核抢占分析在 Linux 2.6 以后版本的 Linux 内核中,一个内核任务可以被抢占,从而提高系统的实时性。这样做最主要的优势在于,可以极大地增强系统的用户交互性,用户将会觉得鼠标单击和击键的事件得到了更快速的响应。Linux 2.6 以后的内核版本还是存在一些不可抢占的区间,如中断上下文、软中断上下文和自旋锁锁住的区间,如果给 Linux 内核打上 RT-Preempt 补丁,则中断和软中断都被线程化了,自旋锁也被互斥体替换,Linux 内核变得能支持硬实时。如下图所示,左侧是 L原创 2022-04-24 16:47:49 · 1654 阅读 · 0 评论 -
cpu结构
cpu结构中央处理器的体系结构可以分为两类,一类为冯·诺依曼结构,另一类为哈佛结构。Intel 公司的中央处理器、ARM 的 ARM7、MIPS 公司的 MIPS处理器采用了冯·诺 依 曼 结 构; 而AVR、ARM9、ARM10、ARM11 以 及Cortex A 系列等则采用了哈佛结构。冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。而哈佛结构将程序指令和数据原创 2022-04-24 11:26:27 · 1277 阅读 · 0 评论 -
linux 网卡dm9000
分析:板级描述文件:linux-2.6.32.2/arch/arm/mach-s3c2440/mach-mini2440.cstatic struct dm9000_plat_data mini2440_dm9k_pdata = { .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),};//描述设备static struct platform_device mini2440_device_eth原创 2022-02-11 15:40:30 · 621 阅读 · 0 评论 -
linux uda1341驱动
分析:1.板级描述文件是linux-2.6.32.2/arch/arm/mach-s3c2440/mach-mini2440.c 第383行开始static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = { .l3_clk = S3C2410_GPB(4), .l3_data = S3C2410_GPB(3), .l3_mode = S3C2410_GPB(2), .model = UDA134X_UDA1341,};原创 2022-02-10 16:50:01 · 906 阅读 · 0 评论 -
linux 2.6 编译模块得makefile写法
obj-m := uda1341.oKERNEL_PATH := /home/cody/mini2440/linux-2.6.32.2ccflags-y := -I$(KERNEL_PATH)/includeall: make -C $(KERNEL_PATH) M=$(PWD) modulesclean: make -C $(KERNEL_PATH) M=$(PWD) clean原创 2022-02-10 15:37:11 · 559 阅读 · 0 评论 -
linux板级描述文件
linux2.6 板级描述文件此时还没有设备树原创 2022-02-10 09:59:51 · 511 阅读 · 0 评论