1)首先根据"snps,dwc3"进行dts和driver的匹配,执行dwc3_probe()
[root@node1 ~]# dmesg|grep usb [ 0.211798] usbcore: registered new interface driver usbfs [ 0.211801] usbcore: registered new interface driver hub [ 0.211812] usbcore: registered new device driver usb [ 0.513302] usb usb1: New USB device fo
eMMC (Embedded Multi Media Card) 为MMC协会所订立的,eMMC 相当于 NandFlash+主控IC ,对外的接口协议与SD、TF卡一样,主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAND供应商来说,同样的重要。1
大部分项目设计需要一个稳定的Linux版本,但是又需要修复内核漏洞。这种情况下,跟随LTS版本升级,是最好的办法。 很多项目也需要改善Linux的实时特性。可以使用Linux Realtime patch实现。
首先要确定主板和CPU都支持虚拟化技术,在BIOS将VT-d、VT-x设置成enable。
U盘或移动硬盘umount弹出设备失败,后台会出现一个kworker进程,疯狂占用CPU资源,其中: top命令直接可以看到kworker进程; htop命令默认隐藏了内核进程,需要在按F2 进行设置 “Display options”选项中,取消选择“Hide kernel threads”,
在 中我们使用lsusb 列出USB设备及其属性,lsusb用于显示系统中的USB总线及其连接的设备信息。下面介绍如何安装并使用。
usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0。大家如果打开kernel usb host目录,就会发现下面包含了ohci,uhci,ehci,xhci,whci等多种形式的控制器驱动。那么,对于我们这些不是很了解usb的开发人员,如何了解usb的代码结构呢?
RK33999使用synopsys dwc3的USB3.0控制器IP。早期的初始化需要在两个模块中进行,一个在rockchip官方提供的驱动中初始化,位于drivers/usb/dwc3/dwc3-rockchip.c文件中,主要初始化和CPU紧密相关的内容,如时钟、复位、电源、extcon(用于USB模式切换),另一个在synopsys提供的驱动中初始化,位于drivers/usb/dwc3/core.c文件中,这部分和USB3.0控制器密切相关,如USB3.0控制器内部寄存器地址、USB3.0的PHY、中断等。只有两个模块都初始化完毕,USB3.0控制器才能正常工作。本节只分析USB驱动早期初始化部分。
softirqs 是在 Linux 内核编译时就确定好的,例如网络收包对应的 NET_RX_SOFTIRQ 软中断。因此是一种静态机制。如果想加一种新 softirq 类型,就需要修改并重新编译内核。
《带你遨游USB世界》中,我们已经初步介绍了USB的整体架构,本文将从以下几个方面继续介绍USB的内容。
今天尝试安装龙芯版 Linux,本来希望能安装 Debian 版,但只找到一些文档(https://wiki.debian.org/LoongArch),没找到可安装版的 ISO。
这将保证内核树的绝对干净。内核小组建议在每次编译之前都执行此命令,无用的代码将会在解压后删除。
该命令确保内核源代码树绝对干净,内核开发组建议在每次编译内核前运行该命令。尽管内核源代码树在解压后应该是干净的,但这并不完全可靠。
在内核开发这块,基本工作都是:打补丁,调补丁,调bug。最耗神的就是调bug,调bug的过程最花时间的一步是定位问题,基本上只要定位到问题,解决起来就容易些了(目前我遇到的bug大部分是这样)。所以调试方法很重要,接下来就分享一点如何快速定位并解决bug的一丢丢小经验。抛砖引玉,大佬们见笑。
在使用Vmware的过程中,不小心删除了vmx文件,导致Vmware无法启动。经过上网搜查资料,找到解决办法。
做Linux方面也有三个多月了,对代码中的有些结构一直不是非常明确,比方platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注冊 platform_device->,再定义 platform_driver-> 注冊 platform_driver。
从2.6版本开始引入了platform这个概念,在开发底层驱动程序时,首先要确认的就是设备的资源信息,例如设备的地址, 在2.6内核中将每个设备的资源用结构platform_device来描述,该结构体定义在kernel\include\linux\platform_device.h中:
今天从老师那got了个摄像头和lucview的源码包,随后的几天里将用这个工具对摄像头进行调试,希望能够在PC上调通(各种功能,如自动白平衡、gamma矫正,自动曝光,增益等),以便后续移植到板子上。。
在前面的文章中,我们已经成功编译并启动了 VxWorks,本文将重点介绍 VxWorks 的启动流程,并使用GDB进行调试以更深入地研究启动过程。
将《Automate the Boring Stuff with Python》的语法部分学完了,开始依葫芦画瓢做第一个项目。
1、打开yum.repos.d cd /etc/yum.repos.d 2、安装GEEKERY REPO EPEL(中国科学技术大学提供) centos6: rpm -ivh http://h5.hcd211.top/linux/repository/epel-release-latest-6.noarch.rpm centos7: rpm -ivh http://h5.hcd211.top/linux/repository/epel-release-latest-7.noarch.rpm 3、安装tra
前段时间得知龙芯团队成功移植并开源了 CoreCLR ,忙完事情后,快乐地捣鼓一下这个东西。近年来国产操作系统、芯片等的到很大的关注和快速发展,我们开发的软件适配国产的机器环境就尤为重要,未来 IT 行业的变化会影响到我们的饭碗。
硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能。 现在的服务器上动不动就是多 CPU 多核、多网卡、多硬盘,如果能让网卡中断独占1个 CPU (core)、磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担、提高整体处理效率。 VPSee 前天收到一位网友的邮件提到了 SMP IRQ Affinity,引发了今天的话题:D,以下操作在 SUN FIre X2100 M2 服务器+
Linux kernel在自身初始化完成之后,需要能够找到并运行第一个用户程序(这个程序通常叫做“init”程序)。用户程序存在于文件系统之中,因此,内核必须找到并挂载一个文件系统才可以成功完成系统的引导过程。
1 ULPI PHY passive sniffing mode 概念: non driving, no pull-up, no pull-down
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说usb协议开发_基于事件驱动的架构,希望能够帮助大家进步!!!
从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。
我想有个用于(开发)未来项目的水墨屏,刚好我又买了一个带树莓派 “hat” 的小玩意。就这样,灵光一闪的我想到旧 Amazon Kindle 电子书阅读器可以变废为宝。
在上一篇的Paper中,我们尝试对USB键盘进行模拟,下一步再尝试对USB鼠标设备进行模拟。
下图是RK3399 SOC的框图。RK3399包含了2个USB2.0 Host控制器;两个USB3.0 OTG控制器,同时兼容USB2.0。USB3.0使用的是Synopsys公司的IP,驱动也使用Synopsys的dwc3 USB驱动。
在Linux Debian 12系统中,使用VirtualBox虚拟机时常遇到USB设备识别问题。
一个正常的UAC设备插入Android 7.0是默认打开UAC配置的,打印的log如下: [ 2367.490491] usb 3-3.2: new full-speed USB device number 9 using xhci_hcd [ 2367.580010] usb 3-3.2: New USB device found, idVendor=0d8c, idProduct=0132 [ 2367.580018] usb 3-3.2: New USB device strings: Mfr=1,
废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:哈夫曼树与哈夫曼编码
dump_stack是用来回溯内核运行的信息的,打印内核信息堆栈段; dump_stack原型: void dump_stack(void); 1、使用这个功能时需要将内核配置勾选上; make menuconfig -> kernel hacking--> kernel debug 2、在函数中使用: 1 #include <linux/module.h> 2 #include <linux/init.h> 3 #include <linux/kprobes.h> 4 #include <asm/
MPSoC是带ARM处理器和FPGA(PL)的SoC,包含4核A53及其常用外部模块(PS)。A53(PS)使用Arm GIC-400,属于GICv2架构。如果想了解GIC-400的具体细节,请参考文档APU GIC: CoreLink GIC-400 Generic Interrupt Controller, DDI 0471B, r0p1。
Gentoo是一个非常著名的发行版,在Linux高手中非常流行。之前我也是被Gentoo的威名震慑了,所以一直没有尝试安装,最近感觉可以尝试一下了。所以今天来看看如何在虚拟机中安装Gentoo吧。本文参考了Gentoo 安装手册,如果想了解更多关于安装Gentoo的知识,可以直接查看官方文档。
在Linux系统特别是服务器系统中常常会需要查看设备的硬件信息,这时候使用命令查看就显得非常方便。本文介绍几个在Linux系统中查看硬件信息的命令,它们是lspci、lsblk、lscpu 和 lsusb。
下载Linux版本Xware1.0.31_x86_32_glibc 下载地址: Xware1.0.31_x86_32_glibc.zip ftp工具上传到centos系统中,或者: wget http
lsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。
读取数据常见错误: 在读取数据过程中可能遇到以下问题,参照上一篇博客: 可能遇到报错: 1、Error in if (is.na(n) || n > 65536L) stop(“size cannot be NA nor exceed 65536”) : missing value where TRUE/FALSE needed 没有处理数据转化距离。 2、Error in hclust(dist(test)) : NA/NaN/Inf in foreign function call (arg
嵌入式Linux系统中,Linux直接管理所有CPU。默认情况下,系统的目标是提高吞吐率,而不是实时性。为了保证实时性,可以根据应用场景,对CPU实行更加精确的控制。常见的办法有,进程CPU隔离、CPU亲和、中断CPU亲和、进程优先级。
自协商仲裁状态机是理解双绞线自协商机制的关键。这部分内容笔者以点带面基于几个常见的应用场景做一个简单的解析。如果读者想对细节理解得更为透彻,请自行阅读IEEE 802.3相关章节。
在生态学研究当中,有些环境中的对象是连续(或者离散)的,而有些对象是不连续的,聚类的目的是识别在环境中不连续的对象子集,从而探索隐藏在数据背后的属性特征。聚类分析主要处理那些对象有足够的相似性被归于一组,并且确定组与组之间的差异或分离程度。聚类可以分为特征聚类(Vector Clustering)和图聚类(Graph Clustering)。特征聚类是指根据对象的特征向量矩阵来计算距离或者相关性来实现聚类,例如各种层次聚类和非层次聚类。而图聚类则针对的是复杂网络数据,有随机游走、贪心策略、标签传播等算法等。
在Windows 2000 与Windows XP 系统采用是WINDDK来开发WINDOWS驱动程序,我手头也有WINDDK,可是从Windows Vista开始之后,一般采用Microsoft Windows Driver简称(WDK)。这段时间刚好项目有用到USB HID,需要用到HID.lib库文件,因此下载了这个WDK7.1.0版本,采用HID.LIB,以及采用USB HID的目的,就是省去了PC端的驱动程序的编写,直接采用Windows内置的驱动程序,只需要了解USB HID通信数据包的机制即可。免去了安装驱动程序的烦恼。当然下位机也需要写一个USB HID的USB Device驱动。简单的说下USB HID的枚举吧:
来自Linus Torvalds的讨论: https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd31111 又,http://kerneltrap.org/Linux/Further_Oops_Insights 例如这样的一个Oops: Oops: 0000 [#1] PREEMPT SMP Modules linked in: capidrv kernelcapi isdn slhc ipv6 loop dm_multipath snd_ens1371 gameport snd_rawmidi snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd parport_pc floppy parport pcnet32 soundcore mii pcspkr snd_page_alloc ac i2c_piix4 i2c_core button power_supply sr_mod sg cdrom ata_piix libata dm_snapshot dm_zero dm_mirror dm_mod BusLogic sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd ehci_hcd Pid: 1726, comm: kstopmachine Not tainted (2.6.24-rc3-module #2) EIP: 0060:[] EFLAGS: 00010092 CPU: 0 EIP is at list_del+0xa/0x61 EAX: e0c3cc04 EBX: 00000020 ECX: 0000000e EDX: dec62000 ESI: df6e8f08 EDI: 000006bf EBP: dec62fb4 ESP: dec62fa4 DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 Process kstopmachine (pid: 1726, ti=dec62000 task=df8d2d40 task.ti=dec62000) Stack: 000006bf dec62fb4 c04276c7 00000020 dec62fbc c044ab4c dec62fd0 c045336c df6e8f08 c04532b4 00000000 dec62fe0 c043deb0 c043de75 00000000 00000000 c0405cdf df6e8eb4 00000000 00000000 00000000 00000000 00000000 Call Trace: [] show_trace_log_lvl+0x1a/0x2f [] show_stack_log_lvl+0x9b/0xa3 [] show_registers+0xa3/0x1df [] die+0x11f/0x200 [] do_page_fault+0x533/0x61a [] error_code+0x72/0x78 [] __unlink_module+0xb/0xf [] do_stop+0xb8/0x108 [] kthread+0x3b/0x63 [] kernel_thread_helper+0x7/0x10 ======================= Code: 6b c0 e8
2、用户模式仿真在任何受支持的体系结构上为另一个Linux / BSD目标运行程序
你想知到你的Linux系统使用那个版本的内核吗?本篇文章为大家分享一下Linux查看内核版本的命令,借助命令行可以轻易的查看内核版本,下面一起来看看具体的方法吧。
与CPU、硬件打交道的时候,有时候看不出自己的代码或者系统出现了什么问题,这时候内核调试工具就显得尤为重要了。
领取专属 10元无门槛券
手把手带您无忧上云