|
idea6410开发手册中提到使用usb-host功能必须将无源晶振改为48MHz有源晶振,最近看了一下,使用OHCI兼容的USB-Host功能,可以通过EPLL提供时钟,也就是说外接晶振完全无用。果然,经过一晚的奋斗,USB-HOST功能搞定,记录一下过程。 (1)首先看了S3C6410的数据手册,25章USB-HOST就薄薄两页,和S3C2410基本一样,大意是你去参考OHCI手册吧。 (2)修改内核,添加USB支持,添加OHCI HOST HCD支持,添加U盘等支持。发现以前写的帖子还蛮管用的: 还得修改/drivers/usb/kconfig 添加config USB_ARCH_HAS_OHCI对S3C64XX的支持 default y if ARCH_S3C64XX
(3)选择完毕,开始编译,发现以下问题: 看了一下OHCI文件,发现要想三星芯片使用,需要包含ohci-s3c2410.c文件,如果没哟包含这个文件,就会提示找不到hcd的以上错误。 由于我们使用的是S3C6410,并没有CONFIG_ARCH_S3C2410,手动修改一下好了: (4)编译完毕后完全没有反应,参考2.6.24代码,发现需要添加platform-device注册信息: static u64 s3c_device_usb_dmamask = 0xffffffffUL; struct platform_device s3c_device_usb = { 编译后还是发现错误,S3C24XX_PA_USBHOST、S3C24XX_PA_USBHOST、IRQ_USBH都没有定义。 static struct resource s3c_usb_resource[] = { static u64 s3c_device_usb_dmamask = 0xffffffffUL; struct platform_device s3c_device_usb = { EXPORT_SYMBOL(s3c_device_usb); 还需要注册进平台设备: static struct platform_device *smdk6410_devices[] __initdata = {
原来还要完成初始化时钟的函数: #if defined(CONFIG_USB_GADGET_S3C_OTGD) || defined(CONFIG_USB_OHCI_HCD) #include <linux/usb/ch9.h> /************************************************************************************* switch (usb_host_clksrc) // USB host colock divider ratio is 2 / // USB host colock divider ratio is 1 / } writel(readl(S3C_HCLK_GATE)|S3C_CLKCON_HCLK_UHOST|S3C_CLKCON_HCLK_SECUR, S3C_HCLK_GATE); } 最后别忘了初始化时调用这个函数(在smdk6410_machine_init函数中调用,用前需声明): 最好用宏圈住 #ifdef CONFIG_USB_OHCI_HCD (6)初始化通过 但是插上U盘提示错误: 怎么回事呢?原来EPLL初始化时只有24MHz,怎么分频也到不了48MHz啊! 在Linux内核里尝试修改EPLL_CON0,M=0x20 P=1 S=3,计算出32*12MHz/(2^3)=48MHz ldr r1, =0x80200203 /* FOUT of EPLL is 96MHz */ ldr r1, [r0, #CLK_SRC_OFFSET] /* APLL, MPLL, EPLL select to Fout */ 看这段,注释EPLL是96MHz,实际这样配置只有24MHz。 s3c6410支持三个PLL分别是APLL,MPLL和EPLL。APLL为ARM提供时钟,产生ARMCLK,MPLL为所有和AXI/AHB/APB相连的模块提供时钟,产生HCLK和PCLK,EPLL为特殊的外设提供时钟,产生SCLK。详见S3C6410处理器介绍 (7)编译,通过。 ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
/ # mount -t vfat /dev/uba1 /mnt 接下来调试VIAUSBMODEM,除了修改VIAUSBModem.c和VIAUSBModem.h两个文件外还需要修改: /driver/usb/serial/kconfig /driver/usb/serial/makefile两个文件 |
相关推荐
Make编译出错的原因及解决方法(嵌入式)
通过理解并解决这些常见的Make编译错误,可以提高嵌入式项目的编译成功率。当然,实际项目中可能会遇到其他类型的错误,但这些错误是经常出现的情况。通过仔细检查代码、检查头文件和库文件的路径、解决未定义的引用和处理重复定义等问题,可以更好地利用Make工具进行嵌入式开发中的项目编译。在嵌入式开发中,使用Make工具进行项目的编译是常见的做法。本文将介绍一些常见的Make编译错误,并提供相应的解决方法。这是最常见的Make编译错误之一。当代码中使用了未定义的函数或变量,并且没有包含相应的头文件时,编译会报错。
【转】[S3C6410]USB-HOST驱动完成
idea6410开发手册中提到使用usb-host功能必须将无源晶振改为48MHz有源晶振,最近看了一下,使用OHCI兼容的USB-Host功能,可以通过EPLL提供时钟,也就是说外接晶振完全无用。果然,经过一晚的奋斗,USB-HOST功能搞定,记录一下过程。(1)首先看了S3C6410的数据手册,25章USB-HOST就薄薄两页,和S3C2410基本一样,大意是你去参考OHCI手册吧。这
S3C6410嵌入式系统开发:从裸机到驱动代码详解
S3C6410微处理器是三星电子推出的一款高性能、低功耗的ARM11架构处理器,广泛应用于移动设备和嵌入式系统中。它具有强大的图形处理能力和丰富的接口资源,可以支持Linux、Android等多种操作系统。S3C6410处理器搭载了ARM1176JZF-S核心,工作频率可达667MHz,具有32KB的指令缓存和32KB的数据缓存。此外,它集成了多种外设接口,如USB HOST/Device,SD/MMC等,使其在数据存储和传输方面具有优势。
基于s3c6410 otg controller的gadget driver及usb枚举分 析
一.简介 一个完整的USB系统由两部分构成,即usb主机(usb host)和usb设备(usb device)。usb主机通常是指我们的pc机、具有host controller的嵌入式设备;像u盘、usb鼠标、键盘属于usb设备,具有otg controller的usb设备,它即可工作在host模式又可以工作在device模式,模式之间通过HNP协议来进行转换,如我们平时比较常
kernel(十六)USB-HOST主机控制器之EHCI
简单地讲,OHCI、UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的xHCI是USB3.0的接口标准。1. OHCI(Open Host Controller Interface)是支持USB1.1的标准,主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。2. UHCI(Universal Host Controller Interface),...
《Linux总线、设备与驱动》USB设备发现机制
转载自:http://blog.csdn.net/tankai19880619/article/details/11639185 说明:本分析基于mstar801平台Linux2.6.35.11内核,其他内核版本仅供参考。 一、程序在内核中的位置 1.usb host做为pci总线下的一个设备存在(嵌入式系统中有可能也会直接挂在CPU上);这部分驱动由厂家实现,本分析以mst
【热点关注】UT-S3C6410
UT-S3C6410开发板简介 UT-S3C6410开发板采用核心板加底板设计,核心板PCB采用6层板设计,尺寸81.2mm×55.8mm,底板PCB采用4层板设计,尺寸200mm×140mm。核心板上集成了Samsung 533/667M CPU S3C6410(ARM1176JZF-S内核)、128M Mobile DDR和256M Nand Flash,通过4个1.27mm双排插
移植linux内核到s3c6410(配置内核make menuconfig)
1、准备: 由于调试阶段要经常修改内核,烧写flash比较耗时,准备采用u-boot+uImage+initrd机制,内核基础版本采用linux 2.6.38 单板需要支持的: CPU: S3C6410 ARM1176JZF-SDDR: 256MBFLASH:MLC 2 NAND FLASH 2GB串口 4网口 DM9000RTC驱动看门狗音频驱动USB(USB
S3C6410 USB枚举过程的工作经验总结[bootloader]
1.有关对比结束阶段的不同点: 对控制写入阶段:setup--OUT (Data0 | 1)--IN(0长DATA1) USB HOST送出IN包,USB Device以0长DATA1 包结束控制写入过程 对比控制读取过程:setup--IN(Data0 | 1)--OUT(0长DATA1 ) USB HOST发出OUT 0长DATA1包以结束控制读取过程 对于无数据的控制事务:setup--IN
S3C6410 USB枚举过程的工作经验总结
1.有关对比结束阶段的不同点: 对控制写入阶段:setup--OUT (Data0 | 1)--IN(0长DATA1) USB HOST送出IN包,USB Device以0长DATA1 包结束控制写入过程 对比控制读取过程:setup--IN(Data0 | 1)--OUT(0长DATA1 ) USB HOST发出OUT 0长DATA1包以结束控制读取过程 对于无数据的
一个决定,入手idea6410
一个决定,入手idea6410
转:S3C6410系统控制器
S3C6410系统控制器包括两部分:系统时钟控制和电源管理。一、系统时钟将产生系统所需的时钟信号。共有三个PLL(锁相环)。其中第一个(ARM PLL)为ARMCLK专用,第二个(MAIN PLL)用于HCLK和PCLK,第三个(EXTRA PLL)用于外围设备,特别是用于音频设备的时钟。每个外围设备的时钟信号可以用软件来enable和disable,用来降低功耗。1、ARMCLK-----> CPU2、HCLK------> AXI/Ahb 总线上的设备3、PCLK ------> Ap
kernel(十七)USB-HOST主机控制器之OHCI
Linux内核(以3.8.3为例)默认仅提供了ehci-s5p.c,但是提供了很多其他平台的ohci源码,因此,我们可以参考ohci-exynos.c来编写自己的ohci-s5p.c,然后参考ehci-s5p.c的代码组织方式添加到内核就可以了。下面废话少说,直接进入正题,开始USB HOST的EHCI和OHCI移植。(一)编写ohci-s5p.cohci-exynos.c为模板,修改以适合...
USB学习总结
USB学习总结1—s3c6410的USB驱动修改 整理USB的内容的内容已经几天了,写点东西作为总结。全部内容分三部分,第一部分主要内容是USB驱动在Linux系统中的具体实现方法;第二部分参考《Linux设备驱动程序(第三版)》中的内容总结USB驱动的结构;最后,总结一下USB协议。 一、 首先是对USB设备的得支持。 1、viarch/arm/mach-s3c64
2.6内核增加usb支持 - 配置简介
USB support USB支持 Support for Host-side USB 主机端(Host-side)USB支持.通用串行总线(USB)是一个串行总线子系统规范,它比传统的串口速度更快并且特性更丰富(供电,热插拔,最多可接127个设备等),有望在将来一统PC外设接口.USB的"Host"(主机)被称为"根"(也可以理解为是主板上的USB控制器),外部设备被称为
Linux 内核编译 modules ehci-hcd, ohci-hcd, uhci-hcd not found
故障现象: make install后显示如下: WARNING: No module ehci-hcd found for kernel 3.x.x.art.x86_64, continuing anyway WARNING: No module ohci-hcd found for kernel 3.x.x.art.x86_64, continuing anyway W
移植USB无线网卡驱动心得
最近因为需要,要在Zedboard上移植一个无线网卡驱动,因为以前在友善之臂上面移植过,所以以为很简单,没想到这件事情却花了我将近一周才搞好,中间就因为内核的一个小的疏忽,特在此将中间遇到的问题写下来,留作以后谨记。 开发板:Zynq Zedboard 操作系统:Ubuntu 12,04 交叉编译器:arm-Xilinx-Linux-gnueabi gcc WIFI 模组:TP
Linux驱动开发必看:详解神秘内核
在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念。我们将学习内核定时器、同步机制以及内存分配方法。不过,我们还是得从头开始这次探索之旅。因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点。 2.1 启动过程 图2-1显示了基于x86计算机Linux系统的启动顺序。第一步是BIOS从启动设备中导入主引导记录(MBR),接下来MBR中的代码查看分区表并从活动分区读取GRUB、LILO或SYSLINUX等引导装入程序,之
3048




被折叠的 条评论
为什么被折叠?



