![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式linux
文章平均质量分 61
Lenz's law
芯片-车载-医疗 行业 嵌入式工程师
展开
-
kernel driver probe defer机制
Linux kernel 驱动中,有不少驱动会引用到 EPROBE_DEFER 这个错误号。比如下面这个例子,对 devm_gpiod_get 的返回值进行判断,如果有错误且错误号不是-EPRBOE_DEFER,才输出error log。那么 EPRBOE_DEFER 有什么特别之处吗,需要驱动程序这样特意处理?这个与 kernel 设计的 driver-deferred-probe 机制有关。kernel 下有多个独立的驱动,每个驱动或多或少地会引用到其他驱动提供的资源,比如某个外设驱.转载 2021-08-31 17:46:10 · 3790 阅读 · 0 评论 -
kernel make basic useage
make xxx_defconfig ARCH=XXXmake menuconfigmake savedefconfig && mv defconfig arch/xxx/configs/xxx_defconfig原创 2021-08-16 14:10:35 · 765 阅读 · 0 评论 -
buildroot 修改包源代码后重新编译【转】
使用buildroot构建rootfs十分的方便,由于实际需要常常需要修改一些包的源码来添加一些自定义功能,修改源码之后怎么操作才能让buildroot重新编译这个包呢。本帖最后由 shiyigudong 于 2012-07-16 14:54 编辑 最近使用buildroot制作编译环境,文件系统。使用过程当中有许多注意点。今天的一点注意记录如下: 使用buildroot则样重新编译某一个包。比如说我们在某一个包里修改了代码,怎么重新编译呢。 我使用的是buildroot-2012转载 2021-08-06 14:42:21 · 3088 阅读 · 1 评论 -
[PCIe] linux 下测试ASPM
1. kernel config & driver.config - Linux/arm64 5.4.31 Kernel Configuration> Device Drivers > PCI support打开 PCI Express ASPM control和Debug PCI Express ASPM (会在sys_fs中添加aspm的控制node,方便手动修改进行测试)电源策略选择Power Supersave 在dts中修改bootargs,增加pci..原创 2020-10-10 17:21:06 · 10035 阅读 · 0 评论 -
[嵌入式linux] memset操作device mem map的空间出现bus error
kernel driver中用pgprot_noncached映射一片DMA内存到user space。在应用程序中通过memeset清零时,产生Bus error.vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);....memset(*Logical,0,Size);原因:在部分平台上,memset不能操作device映射的space。(根本原因和memset实现有关)下面是ARM64的实现/*原创 2020-07-21 17:51:45 · 2833 阅读 · 1 评论 -
[PCIe] Hot reset and FLR reset Performing in linux
“热重置”是通过PCI Express链路触发的常规重置。当链路被迫进入电气空闲状态时,或通过发送带有热复位bit的TS1和TS2有序集来触发热复位。软件可以通过设置然后清除设备上游桥接端口的PCI配置空间中桥接控制寄存器中的辅助总线复位位来启动热复位。(下图Bridge Control Register->Secondary Bus Reset)Secondary Bus Reset - Setting this bit triggers a hot reset on the corres原创 2020-06-15 14:45:04 · 4693 阅读 · 0 评论 -
[PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态
PCIe设备的低功耗状态要求系统驱动程序显式地将设备置于低功耗状态,从而PCIe链路则可以依次变为低功耗链路状态。PCIe规范允许PCIe链路在没有系统驱动的情况下进入低功耗状态。这个特性就是所谓的主动状态电源管理(ASPM)。一般来说,无论是系统驱动端硬件(RC)还是设备硬件(EP)都可以通过检测pcie链路上的空闲时间,然后启动电源状态转移。有两种低功率链路状态:L0s,也叫L0 st...原创 2020-04-30 15:40:40 · 22484 阅读 · 0 评论 -
[PCIe] SR-IOV (单根虚拟化) 及linux驱动浅析(device的PF和VF及其驱动)
检查、配置vf数量,因为还没配置,所以是0[root@g1 ~]# cat /sys/class/infiniband/mlx5_1/device/mlx5_num_vfs0这里我测试把OFED驱动中的vf数量配置成1echo 1> /sys/class/infiniband/mlx5_1/device/mlx5_num_vfs在PCI总线上,用lsp...原创 2020-03-11 17:37:56 · 17698 阅读 · 6 评论 -
【PCIe】AER linux 驱动浅析
AER及linux内核驱动简介:https://blog.csdn.net/u010443710/article/details/1046491791. AER 中断首先AER驱动作为错误上报和处理的机制,肯定有一个错误上报的入口。这个入口就是AER中断。linux的AER驱动只针对RC,也就是说软件需要处理RC的AER中断请求。并在中断处理函数中通过AER 寄存器来判断错误类型并...原创 2020-03-06 17:07:24 · 5554 阅读 · 0 评论 -
【PCIe】【翻译】AER 内核驱动 《pcieaer-howto》PCI Express高级错误报告驱动程序指南
本文翻译自内核文档:linux\Documentation\PCI\pcieaer-howto.txt《 PCI Express高级错误报告驱动程序指南》 HOWTOT.Long Nguyen <tom.l.nguyen@intel.com>张艳敏<yanmin.zhang@intel.com>2006年7月29日目录1.概述1.1关于本指南...翻译 2020-03-04 13:27:10 · 5333 阅读 · 0 评论 -
[嵌入式linux]busybox 编译出的 lspci 命令只显示device id的,不支持-vvv解决办法
busybox应该是有一个自带的简化版lspci,并不是完整的pciutils程序。如果没有安装pciutils,默认lspci就是下面简化版的。# lspci -hlspci: invalid option -- 'h'BusyBox v1.27.2 (2019-01-02 12:04:07 CST) multi-call binary.Usage: lspci [-mk]...原创 2020-01-07 16:33:57 · 3138 阅读 · 1 评论 -
[嵌入式linux]PCIe 热拔插(rescan)
linux下可通过/sys/bus/pci/devices/0000\:[bus number]\:[device number].[function number]/ 目录下的节点进行热拔插操作。板子上电前PCIe插槽有一块NVME的固态硬盘[ 0.198515] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400[ ...原创 2020-01-07 14:32:12 · 13692 阅读 · 3 评论 -
[嵌入式linux]CAN/CAN FD配置及测试
How to test CAN/CANFD in linuxThe Linux kernel supports CAN with the SocketCAN framework.Driver installation$ make linux-menuconfigNetworking support ---> <M> CAN bus subsystem...原创 2020-01-06 17:15:01 · 13281 阅读 · 0 评论 -
[嵌入式linux]将linux板卡虚拟为USB网卡设备(Ethernet Gadget)
kernel menuconfig-> Device Drivers ->USB support -> USB Gadget Support 建议最好选成M,作为内核驱动模块,便于与其他Gadget驱动共存<M> USB Gadget Drivers<M> Ethernet Gadget (with CDC Etherne...原创 2020-01-06 16:55:22 · 5260 阅读 · 4 评论 -
[嵌入式linux]RTL8111/RTL8168网卡内核驱动安装
RTL8111/RTL8168的驱动在内核中没有找到,网上查了一下也可以用RTL8169的驱动内核路径下执行make menuconfig->Device Drivers ->Network device support ->Ethernet driver support[*] Realtek devices<M> Realtek 8169 g...原创 2020-01-06 16:43:03 · 8132 阅读 · 2 评论