- 博客(193)
- 收藏
- 关注
原创 arm64 - 系统调用
群里做网络的小伙伴问了一个问题,他在wifi驱动的某个函数里加了dump stack,然后插入驱动,发现调用栈是这样的,为什么呢?
2024-04-08 16:19:58 358 1
原创 uboot - pinctrl - FPGA回片前测试阶段 - 设置GPIO引脚复用失败
pinctrl设置引脚复用失败,没有调用到controller中的set_groups_function函数。
2024-03-20 15:38:07 1091
原创 linux -- I2C设备驱动 -- MS32006(低压5V多通道电机驱动器)
MS32006 是一款多通道电机驱动芯片, 其中包含两路步进电机驱动, 一路直流电机驱动;每个通道的电流最高电流1.0A;支持两相四线与四相五线步进电机。芯片采用 I2C 的通信接口控制模式, 兼容 3.3V/5V 的标准工业接口。MS32006 总共集成了两路步进电机驱动器与一路直流电机驱动器, 通过 I2C 总线去控制电机的转动。步进电机控制器可以选择全步进或者 1/2 的步进模式, 系统上一般用来做为小云台 X,Y 轴的运动控制。
2024-03-19 14:45:49 747
原创 linux -- 并发 -- 并发来源与简单的解决并发的手段
当多个执行路径并发执行时,确保对共享资源的访问安全是驱动程序员不得不面对的问题互斥:对资源的排他性访问同步:对进程执行的先后顺序做出妥善的安排一些概念:临界区:对共享的资源进行访问的代码片段称为临界区并发源:导致出现多个执行路径的因素称为并发源。
2024-02-01 13:34:07 899
原创 链接 - 重定位
链接脚本的输出段格式描述:链接脚本输出段格式一个输出段有两个地址:VA和LMA,分别是虚拟地址和加载器地址虚拟存储地址,是运行时段所在的地址,可以理解为运行地址。加载存储器地址是加载时段所在的地址,可以理解为加载地址。如果没有用AT显式指定LMA,那么LMA=VA,加载地址等于虚拟地址。
2024-01-31 10:23:03 852
原创 linux -- per-CPU变量
per-CPU变量是一种存在与每个CPU本地的变量,对于每一种per-CPU变量,每个CPU在本地都有一份它的副本。
2024-01-30 23:11:56 505
原创 linux --中断管理 -- irq的自动探测机制
如果一个设备的驱动程序无法确定它说管理的设备的软件中断号irq,此时设备驱动程序可以使用irq的来获取其正在使用的irq。使用自动探测机制的条件探测前,驱动的设备关联到了某个irq,但是因为设备驱动程序还不清楚是哪个irq,因此无法调用request_irq来向该irq安装中断处理例程,所以对应irq的action为空,下面是一个设备驱动程序的使用示例:probe_irq_on和probe_irq_off是内核为驱动程序员设计的两个自动探测的接口函数。
2024-01-30 19:11:06 440
原创 linux -- 内存管理 -- 页面分配器
分配并使用内存,是内核程序与驱动程序中非常重要的一环。内存分配函数都依赖于内核中一个非常复杂而重要的组件 - 内存管理。linux驱动程序不可避免要与内核中的内存管理模块打交道。linux内存管理可以总体上分为两大块:一是对物理内存的管理,二是对虚拟内存的管理。
2024-01-26 15:27:10 609
原创 Hylicos - MINI2440 - 中断控制
中断是一种异步异常,CPU需要处理很多来自设备的中断请求,而CPU引出的line只有IRQ线和FIQ线,所以就得引入中断控制器帮助CPU搞清楚是中断的来源。MINI2440的中断控制器,可以接受来自60个中断源的请求。提供这些中断源的是内部外设,如DMA 控制器、 UART、IIC 等等。在这些中断源中,UARTn、AC97 和EINTn 中断对于中断控制器而言是“或”关系。当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求ARM920T 内核的FIQ 或IRQ。
2024-01-22 19:59:32 904
原创 linux内核压缩生成过程
在客户使用我司芯片,选择内核自解压算法为XZ和LZMA后,发现解压时长变得非常慢,约40S。我们拿到了一块rk3288 fire-fly的板子,也将其内核配置为XZ压缩,经过测试,RK的板子做XZ的解压只需要2s,对比我司的表现,RK速度非常之快。
2024-01-22 11:12:49 939
原创 vscode使用remote ssh到server上 - Node进程吃满CPU
我发现每次使用vscode的remote插件登陆到server后,就会出现node进程,不太清楚干什么用的,但是绝对和它有关。
2023-12-18 13:22:48 2857 2
原创 neovim -- 使用clangd以及coc.nvim阅读代码
Coc.nvim 是一个基于NodeJS 的适用于Vim8, Neovim 的Vim 智能补全插件。拥有完整的LSP 支持。配置、使用方式及插件系统的整体风格类似 VSCode。
2023-11-29 15:09:38 1058
原创 TrustZone以及ARMv8相关知识链接汇总
介绍TrustZone相关知识:https://blog.csdn.net/guyongqiangx/article/details/78020257ATF相关的 代码解析:https://blog.csdn.net/puyoupuyou/article/details/85046544Firmware Design: https://trustedfirmware-a.readthedocs.io/en/latest/design/firmware-design.html公司wiki:http:/
2023-10-18 17:26:25 132
转载 C++ new和delete的理解 --- 转载
因此,c++中用new申请堆空间与用malloc不同,前者自动检测堆空间是否申请成功。3 如果申请堆空间成功,就调用构造函数 并将堆空间首地址给xp指针。2 对申请到的堆空间首地址进行检查,防止申请失败,返回空指针。1 调用operator new申请堆空间。
2023-08-22 21:55:20 57
原创 TrustZone-A --- IO抽象层
fip_dev_connector是firmware image package类型的链接器,不同的存储设备都有不同的链接器,就本文章第一张图片中,那个目录下的所有文件中都有定义一个xxx_dev_connnector,以及对应的io_dev_funcs_t操作函数集,包括附带的register_io_dev_xxx函数,register_io_dev_fip这个函数不过是在io_storage.c中定义的。io_file_spec 用户访问类似文件的实体,比如Flash上的文件系统中的文件。
2023-08-14 21:13:50 321
原创 Linux Kernel RTC驱动使用hwclock调试
如果系统中/dev下有多个rtc设备,那么运行hwclock命令时必须带上-f 指定使用哪个rtc设备,否则会报错hwclock: RTC_RD_TIME: Invalid argument或者hwclock: RTC_SET_TIME: Invalid argument。hwclock将会从rtc硬件(寄存器)中读取时间或往rtc硬件中写入时间,与rtc硬件息息相关。通过hwclock -r 读取RTC硬件时间检验是否等于系统时间。通过hwclock -s 从rtc读取时间设置给系统。
2023-06-01 14:58:02 1517
原创 Linux内核驱动 --- CCF框架 provider驱动的编写
复制上节内容中对Provider驱动编写流程的总结:1)分析硬件的clock tree,按照上面所描述的分类,将这些clock分类。3)对于不能由clock framework core处理的clock,需要在driver中使用struct of_device_id进行匹配,并在初始化时,调用OF模块,查找所有的DTS匹配项,并执行合适的regitser接口,注册clock。
2023-05-30 11:31:08 496
原创 C基础 --- 因为整型提升导致的BUG
通常情况下,在对int类型的数值作运算时,CPU的运算速度是最快的。在x86上,32位算术运算的速度比16位算术运算的速度快一倍。C语言是一个注重 效率的语言,所以它会作整型提升,使得程序的运行速度尽可能地快。因此,你必须记住整型提升规则,以免发生一些整型溢出的问题。
2023-05-12 11:21:29 483
原创 中断子系统 ---下半部softirq tasklet以及workqueue
上节主要讲了Linux内核do_IRQ函数中中irq_enter以及generic_handle_irq(irq)函数,这是中断上半部。这节要开始剖析中断下半部的实现原理内核用一个无符号整型**__sofitirq_pending**来表示当前正在等待被处理的softirq,每一种softirq在__softirq_pending中占据一位每个CPU有自己的__softirq_pending变量。
2023-04-02 00:05:50 259
原创 Understanding The Linux Kernel --- Part2 Memory Addressing
LINUX KERNEL DEV
2023-03-02 20:39:29 346
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人