做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中:
这将保证内核树的绝对干净。内核小组建议在每次编译之前都执行此命令,无用的代码将会在解压后删除。
本项目是基于全志V3S的随身终端(类似MP4),命名为V3S-PI,开发板使用四层板制作,全板采用0603电容电阻,相较于0402,制作更为方便,同时成本可压缩至100以内。
USB 有主机功能和从设备功能。做主机时,能连接 U 盘、USB 鼠标等 USB 设备;做从设备时,具有 ADB 调试等从设备功能。
usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0。大家如果打开kernel usb host目录,就会发现下面包含了ohci,uhci,ehci,xhci,whci等多种形式的控制器驱动。那么,对于我们这些不是很了解usb的开发人员,如何了解usb的代码结构呢?
该命令确保内核源代码树绝对干净,内核开发组建议在每次编译内核前运行该命令。尽管内核源代码树在解压后应该是干净的,但这并不完全可靠。
在后面的操作里,都是通过串口与板子进行“交流”。串口是串行接口的简称,是指数据一位一位地顺序传送,其特点是通信线路简单。
当你在个人电脑或服务器上运行 Linux 时,有时需要识别该系统中的硬件。lspci 命令用于显示连接到 PCI 总线的所有设备,从而满足上述需求。该命令由 pciutils 包提供,可用于各种基于 Linux 和 BSD 的操作系统。
当你在个人电脑或服务器上运行 Linux 时,有时需要识别该系统中的硬件。lspci 命令用于显示连接到 PCI 总线的所有设备,从而满足上述需求。
Linux kernel在自身初始化完成之后,需要能够找到并运行第一个用户程序(这个程序通常叫做“init”程序)。用户程序存在于文件系统之中,因此,内核必须找到并挂载一个文件系统才可以成功完成系统的引导过程。
OTG 主要用作Host 与Device 的切换,如当板子通过 USB 线连接到 USB 主机 (PC) 上时, 此时 OTG 是加载成 USB Device;若当前板子是通过 OTG 线连接一个USB 设备,此时 OTG 则加载 成 USB Host。
uboot 打印完 Starting kernel . . .,就完成了自己的使命,控制权便交给了 kernel 的第一条指令,也就是下面这个函数 init/main.c
传输文件每次都插拔 SD 卡太麻烦了,还是使用网线传输文件比较快,借此机会讲述一下 通过 tftp下载 kernel 和 nfs 挂载文件系统
想用D1开发板设计一个小电脑,搭配蓝牙鼠标键盘远程控制其他设备。因此需要用到XR829的蓝牙部分,现在的问题是:
RS-232,常用的串行通信接口标准之一,传输速率较低,传输距离有限,实际约15米左右
第一步: 编译路径执行make menucinfig和make ota_menucinfig中分别选中: (1)Allwinner > swupdate (2)Allwinner > swupdate > Swupdate Settings > General Configuration > MTD support (3)Allwinner > swupdate > Image Handlers > ubivol
VxWorks从6.2开始,引入了vxBus,一种新的设备驱动框架。vxBus使得新设备、新驱动的添加,更为灵活;驱动与BSP的耦合度更低;而且支持更多的总线
由于访问权限,普通用户运行 lspci 时显示的信息可能会受限,因此可以使用 sudo 运行命令,系统会给出完整的信息图。
硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能。 现在的服务器上动不动就是多 CPU 多核、多网卡、多硬盘,如果能让网卡中断独占1个 CPU (core)、磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担、提高整体处理效率。 VPSee 前天收到一位网友的邮件提到了 SMP IRQ Affinity,引发了今天的话题:D,以下操作在 SUN FIre X2100 M2 服务器+
博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813
你想知到你的Linux系统使用那个版本的内核吗?本篇文章为大家分享一下Linux查看内核版本的命令,借助命令行可以轻易的查看内核版本,下面一起来看看具体的方法吧。
从官方安装更新 openwrt for pogoplug 第二部分 一,硬盘与USB以及samba USB驱动,用于使用移动硬盘 opkg install kmod-usb-core opkg install kmod-usb-ohci #安装usb ohci控制器驱动 opkg install kmod-usb2 #安装usb2.0 opkg install kmod-usb-storage
烧写内容 : BootLoader, Linux Kernel, File System;
《带你遨游USB世界》中,我们已经初步介绍了USB的整体架构,本文将从以下几个方面继续介绍USB的内容。
设备树修改参考了https://github.com/Tina-Linux/tina-d1x-lichee-rv和sipeed提供的licheerv_d1_compile。
随着物联网的蓬勃发展,WIFI被广泛的应用在各种嵌入式系统中。WIFI一般有两种工作模式,一个是工作在AP模式下,另外一个是Station模式。以你的手机WIFI为例,你最经常使用的功能是去连接某个WIFI热点上网,这时它工作在Station模式下。有时你也会共享个热点,让自己的手机被其他手机连接上网,这时就是工作在AP模式下。本篇以Realtek USB接口的RTL8188 WIFI模块为例,对Linux下WIFI使用做个简单总结,希望对大家有所帮助。
教程更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=108546 第2章 ThreadX USBX协议栈介绍 本章节介绍 ThreadX
uboot下载地址:http://ftp.denx.de/pub/u-boot/ 1、目录分布 2、目录结构变化: u-boot-2010.03及以前版本 ├── api
/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
usb是我们现代生活中不可或缺的一个东西,大家平常只要使用电脑,肯定都接触过usb吧。本篇文章对于大部分同学来说并没有实际意义,主要面向想了解USB的一些同学,以及一些做嵌入式的同学。 首先第一个问题,当我们在电脑中插入了一个U盘,那么电脑是怎么知道有一个U盘插入的呢? 一般usb有4根线,作为数据的D+,D-,以及供电的Vbus和GND。我们需要知道在集线器的端口上(比如电脑的usb口)分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D
本文总结了USB总线驱动程序的实现原理和流程。首先介绍了USB总线驱动程序的基本概念和作用,然后详细阐述了USB总线驱动程序的实现流程,包括设备加载、设备初始化、设备配置、设备接口、端点、读写请求、中断和轮询机制。最后对USB总线驱动程序中涉及到的几个重要概念进行了详细说明。通过本文的总结,可以更好地理解USB总线驱动程序的实现原理和流程,为后续的USB驱动开发打下坚实的基础。
问1. 既然还没有"驱动程序",为何能知道是"android phone" 答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" 提示你安装的是"设备驱动程序" USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序
Visopsys 自从1997年以来就已经开始开发,目前最新版本为0.69,它非常小巧,光盘版的才5MB左右,而软盘版的也700KB不到。并且它运行起来非常快,而 且还是开源软件。它虽然小,但是提供了功能齐全的图形界面,支持实时可占先多任务和虚拟内存。Visopsys尽力与多方兼容,但是它不是任何其他操作系统的一个克隆版本。 下载: CD-ROM版本:http://visopsys.org/files/visopsys/visopsys-0.69-iso.zip 软盘版本:http://visopsys.org/files/visopsys/visopsys-0.69-img.zip 源代码:http://visopsys.org/files/visopsys/visopsys-0.69-src.zip Vmware镜像:http://visopsys.org/files/visopsys/visopsys-0.62-vmware.zip Visopsys 0.69的主要更新:
硬件设备及镜像 主板为:Yuzuki Lizard V851S开发板 宿主机环境:ubuntu 22.04 SDK版本:Yuzukilizard的github上的Docker镜像 img为:github上Yuzukilizard释放的镜像:[01]v851s_linux_lizard_uart0_2022_12_29.img v851s_linux_lizard_uart0_2022_12_29.img
1 USB Type-C 1.1 电气参数 Rd: 5.1kΩ Ra: 1.0kΩ Rfrswap: 5Ω,for PD 3.0 FR_Swap 4b5b bit rate: 300kbps BMC bit rate: 600kbps Rp: Reference to the Figure 1-1
there is no much merit in build soft raid on production enviroment
论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710 第8章 学习USB协议栈前要了解的基础知识 本章节为大家
教程更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=108546 第4章 ThreadX USBX协议栈基础知识 本章节为大家讲解USB
2 建立/tftpboot/vmware/esx5目录,拷贝光盘全部文件到此目录下
详细介绍内核配置选项及删改情况 第一部分:全部删除 Code maturity level options —> 代码成熟等级选项 []Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。 第二部分 :除以下选项,其它全部删除 General setup—〉 System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 第三部分:除以下选项,其它全部删除 Loadable module support —> 可引导模块支持 建议作为模块加入内核 [] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。 []Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。 第四部分:全部删除 Block layer—–〉块设备 第五部分:除以下选项,其它全部删除 Processor type and features —> 处理器类型 Subarchitecture Type (PC-compatible) —> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。 Processor family(386) : 它会对每种CPU做最佳化,让它跑的好又快,一般来说,你是什么型号的就选什么型号的就好。我选的是386,这样内核会省下不少空间 第六部分:除以下选项,其它全部删除 Power management options (ACPI, APM) —> 电源管理选项 [ ] Power Management Debug Support 电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。 ACPI Support —〉高级电源接口配置支持,如果BIOS支持,建议选上这项 []Button 这个选项用于注册基于电源按钮的事件,比如power, sleep等,当你按下按钮时事件将发生,一个守护程序将读取/proc/acpi/event,并执行用户在这些事件上定义的动作比如让系统关机。可以不选择,根据自己的需求。 第七部分:除以下选项,其它全部删除 Bus options (PCI, PCMCIA, EISA, MCA, ISA) —> 总线选项 []PCI support PCI access mode (Any) —> PCI外围设备配置,强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。 第八部分:除以下选项,其它全部删除 Executable file formats —> Kernel support for ELF binaries ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。一定要选。 第九部分:除以下选项,其它全部删除 Networking Networking options —> []Unix domain sockets []TCP/IP networking 第十部分:除以下选项,其它全部删除 Device Drivers —>设备驱动 Block devices——-〉 []Compaq SMART2 support [] Compaq Smart Array 5xxx support []Loopback device support 大部分的人这一个选项都选N,因为没有必要。但是如果你要mount iso文件的话,你得选上Y
来自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
领取专属 10元无门槛券
手把手带您无忧上云