
Linux学习
文章平均质量分 66
man9953212_real
这个作者很懒,什么都没留下…
展开
-
Linux字符设备驱动模型小记
设备用platform_device表示,驱动用platform_driver进行注册,Linux platform driver机制和传统的device driver机制(通过driver_register进行注册)相比,一个明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动中使用这些资源时通过platform device提供的标准结构进行申请并使用。上述步骤封装在函数中,通过module_init/xxx_initcall让kernel在启动阶段自动调用该驱动函数。原创 2023-03-13 15:12:59 · 276 阅读 · 0 评论 -
Linux驱动加载的几种方式module_platform_driver/module_init/xxx_initcall
如果该设备驱动依赖于其他设备的驱动,咱们最好理顺这些设备的加载顺序,不要一股脑的使用module_platform_driver/module_init 这些封装好的接口来加载驱动,因为内核并不清楚各个模块的加载顺序。而module_platform_driver是module_init的一种封装,linux发展出来的platform_bus而带来的接口。最常用的module_init其实最终调用的就是xxx_initcall。原创 2023-03-06 15:13:17 · 796 阅读 · 0 评论 -
Linux系统启动过程中的initcall实现原理和调试方法
1. 介绍在linux kernel启动过程中,通过initcall机制调用初始化函数。initcall作为kernel经典设计机制之一延续至今。在2018年,Steven Rostedt为了跟踪调试各个初始化函数的耗时,增加了tracing功能。在本篇文章中,会介绍initcall的意义和使用方法、实现原理、执行流程以及调试方法。2. 意义和使用方法正如文章最开始的地方所描述的那样,其直接意义是在kernel启动过程中执行不同的初始化函数,涉及到不同架构下的CPU初始化以及各种外设驱动的初始化。转载 2023-02-02 13:14:34 · 1343 阅读 · 0 评论 -
正则表达式:Regular Expression
vi/sed/awk/grep等工具皆使用正则表达式的语法规则。正则表达式就是处理字符串的方法。特殊符号代表意义[:alnum:]代表英文大小写字符及数字,亦即 0-9, A-Z, a-z[:alpha:]代表任何英文大小写字符,亦即 A-Z, a-z[:blank:]代表空格键与 [Tab] 按键两者[:cntrl:]代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等[:digit:]代表数字而已,亦即 0-9[:graph:]原创 2022-11-25 21:10:33 · 917 阅读 · 0 评论 -
MIPS架构的启动地址随笔
MIPS架构的cpu在上电、重启的入口地址为0xBFC0 0000,这段空间在 kseg1 (0xA000 0000 ~ 0xBFFF FFFF) 512M Bytes。0x82af2000这个地址位于kseg0地址段(0x8000 0000~0x9FFF FFFF)512M Bytes,这段空间的特点是将最高位清零,将其转换到低512M物理地址。LDFLAGS_u-boot是链接uboot.bin时用到的变量,man ld查看-Ttext选项的意思是定义text段的起始链接地址。-T选型是指定链接脚本。原创 2022-11-22 16:24:04 · 553 阅读 · 0 评论 -
Linux下NANDFLASH probe函数分析
arch.info.init由宏DT_MACHINE_START()和宏MACHINE_START()-> of_flat_dt_get_machine_name()[获取dts文件中”/”node下的model或compatile字符串.]最后将device_node链表赋给of_root,即of_root代表所有的device_node的list的。解析后的device_node如何变成platform_device,并注册到platform_bus_type的klist_devices链表中?原创 2022-11-07 16:57:25 · 553 阅读 · 0 评论 -
Irdeto uboot flow
Irdeto uboot启动流程基于原始uboot基础上通过调用Irdeto的LoaderCoreAPI来实现一些CA的私有模块及其他模块的校验与加载,来替换原有的uboot的一些流程;简单的callstack如下:->LoaderCoreAPI_StartBootStrap();->irdeto_private_flow->autoboot_sequence_r...原创 2019-05-28 10:16:25 · 257 阅读 · 0 评论 -
Cache写机制:Write-through与Write-back
Cache写机制:Write-through与Write-back通常有三种方法:1.write through:CPU向cache写入数据时,同时向memory(后端存储)也写一份,使cache和memory的数据保持一致。优点是简单,缺点是每次都要访问memory,...转载 2019-05-28 13:18:09 · 1464 阅读 · 0 评论 -
UBI文件系统(转)
UBI-Unsorted Block Imaginehttp://www.linux-mtd.infradead.org/doc/ubi.html1、注意很多人搞不清楚UBI到底是什么,这就是写这篇文章的原因。请认识到以下几点:l UBI不是一个flash转换层(FTL),并且和FTL没有任何关系。l UBI只支持纯粹的flash,消费flash像MMC、RS-MMC、Em...翻译 2019-05-28 14:18:56 · 2997 阅读 · 1 评论 -
UBI分区挂载
Linux 系统中有关mtd和ubi的接口:(1) cat /proc/mtd:可以看到当前系统的各个mtd情况,(2) cat /proc/partitions: 分区信息,有上面的类似(3) cat /sys/class/ubi/ubi0/*:当前系系统的ubi情况(4) ls /dev/*, 查看设备节点假设我们想在mtdblock1上加载ubifs文件系统,步骤如下:(1)./...原创 2019-06-14 17:00:11 · 2805 阅读 · 0 评论 -
linux 积累
linux文件夹打包命令.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------------------------------------.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:...原创 2019-06-20 09:08:47 · 26762 阅读 · 1 评论 -
Buildroot下UBI mkfs&volume介绍
Buildroot下UBI mkfs&volume介绍ToolsBuildroot调用如下的tools来制作UBI fs及volume image,代码源代码在如下package。Buildroot/output/build/host-mtd-1.5.2源代码打印非常友好,makefile中开启-v选项可以很有效的调试;mkfs.ubifs ------ for ubi...原创 2019-07-31 13:07:54 · 1943 阅读 · 0 评论 -
UBI-Unsorted Block Images
第二章 介绍UBI 是通用闪存管理层,具有与逻辑卷管理器(LVM)类似的功能。基本理念是:UBI层提供多个逻辑分卷的管理,分卷可以包含静态数据或动态内容(文件系统)。LVM 原理分析 LVM 在每个物理卷(PV)头部都维护了一个MetaData,叫做卷组描述域(VGDA,Volume Group Description Area),每个VGDA中都包含了整个VG(Volume G...原创 2019-08-27 15:42:45 · 1641 阅读 · 1 评论 -
buildroot环境下使用telnet协议调试盒子
打开telnet的步骤如下:1.修改buildroot的.config文件中BR2_PACKAGE_BUSYBOX_CONFIG项对应的文件,比如package/busybox/busybox-1.25.x.config,将下面的配置打开//CONFIG_TELNETD=y//CONFIG_FEATURE_TELNETD_STANDALONE=y//然后make busybox-recon...原创 2019-08-29 16:05:44 · 1255 阅读 · 0 评论 -
将device应用printf输出到telnet的一种方法(转载)
下面是一个示例,将设备上运行的应用中的printf输出到telnet登录中;1.common functiondebug.h#include <string.h>#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <errno.h>#d...转载 2019-08-30 11:11:00 · 925 阅读 · 1 评论 -
something about sysfs
调试中断cat /proc/interruptscd /proc/irq/irq_num该目录的信息就是整个dts。cd /sys/firmware/devicetree/basebus <---> devices之间的映射关系# ls -F /sys/bus/spi/devices/spi32766.0 -llrwxrwxrwx 1 roo...转载 2019-09-09 13:46:35 · 123 阅读 · 0 评论 -
some debug skill(转)
先列一下点,后面在补充解决过程1. 某函数局部变量被串改(此局部变量存于寄存器)2. 访问非法地址挂死(但死机位置没有load/store instructions)3. 系统寄存器存储值异常(双物理cpu操作引起)4. task stack 爆掉,在切换task时检测到栈顶第一个byte被修改,从而系统reboot5. task堆栈使用情况跟踪,先将堆栈全部设为FFFF...转载 2019-11-01 09:40:52 · 117 阅读 · 0 评论 -
Linux 内存空间使用情况概览
free查看内存使用情况如下:total used free shared buffers cachedMem: 123124 95328 27796 244 28612 20916-/+ buffers/cache: 45800 77324Swap: ...原创 2020-04-30 21:25:05 · 525 阅读 · 1 评论 -
buildroot下打开gdb调试
gdb编译过程:1.make menuconfig2.select "gdb "in Target packages--> Debugging,profiling and benchmark --> gdb3.select "full debugger"4.Build options--> gcc optimization level选择optimization level 05.Build options -->strip command for binaries on.原创 2020-07-16 16:14:16 · 4769 阅读 · 0 评论 -
linux kernel CMDLINE初始化
Cmdline是由bootloader传给kernel,如uboot,将需要传给kernel的参数做成一个tags链表放在ram中,将首地址传给kernel,kernel解析tags来获取cmdline等信息。向linux kernel中添加cmdline有下面三种方式:1、 在dts中的bootargs中添加,CONFIG_MIPS_CMDLINE_FROM_DTB/ { chosen { name = "chosen"; bootargs = "rd_...原创 2020-10-15 19:33:47 · 848 阅读 · 0 评论