历史上的今天
返回首页

历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2019年10月16日 | Smart210 USB ROOT HUB自动复位

2019-10-16 来源:51hei

现象:

使用usb camera 在lcd上显示图像时,偶尔发生USB ROOT HUB reset, 导致camera停止工作,然后发生usb camera自动断开,然后又重新识别,断开又识别。

如果不使用usb camera,就不会发生 usb reset。


分析:

1、怀疑USB供电问题,导致usb不稳定,但是,使用带外接电源的usb,没有任何改善;

2、分析log,是usb异常中断导致,但是仍然无法判断异常的来源;

3、怀疑是驱动问题,更换linux 内核版本,3.4.2、3.7、3.9.7、3.10、3.13几个版本都有同样问题;

4、使用官方kernel 3.0.8就没有问题,确认还是驱动配置问题。但是仍然找不到原因。

使用排除法,移植3.0.8内核,一步一步添加官方驱动,无论与camera usb相关不相关,都要测试。


最终发现问题在LCD的GPIO配置上。


结果:

从Linux主线下载的新版本的kernel后,配置好LCD的时序,发现lcd能够正常工作,所以就没有继续关心LCD的配置,尤其是 RGB的GPIO配置,甚至都没有把LCD的GPIO配置成功能引脚,但恰巧是这方面的问题。


最终重新配置LCD的gpio 为功能,并设置驱动能力, 经过很长时间的测试USB没有发生reset。


问题log:


  • [liujia@210]#[  171.257109] lj:port 1, status 0100, change 0001, 12 Mb/s  

  • [  171.257174] usb 1-1: USB disconnect, device number 23  

  • [  171.257219] usb 1-1.2: USB disconnect, device number 24  

  • [  171.522012] usb 1-1: new high-speed USB device number 25 using s5p-ehci  

  • [  171.652422] usb 1-1: New USB device found, idVendor=0424, idProduct=2514  

  • [  171.652480] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0  

  • [  171.657089] hub 1-1:1.0: USB hub found  

  • [  171.657294] hub 1-1:1.0: 4 ports detected  

  • [  171.857405] lj:port 2, status 0101, change 0000, 12 Mb/s  

  • [  171.942257] usb 1-1.2: new high-speed USB device number 26 using s5p-ehci  

  • [  172.265034] usb 1-1.2: New USB device found, idVendor=046d, idProduct=0825  

  • [  172.265093] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=2  

  • [  172.265154] usb 1-1.2: SerialNumber: F46BE640  

  • [  172.269636] uvcvideo: Found UVC 1.00 device (046d:0825)  

  • [  172.291195] input: UVC Camera (046d:0825) as /devices/platform/s5p-ehci/usb1/1-1/1-1.2/1-1.2:1.0/input/input10  

  • [  174.309219] lj:port 1, status 0100, change 0001, 12 Mb/s  

  • [  174.309283] usb 1-1: USB disconnect, device number 25  

  • [  174.309328] usb 1-1.2: USB disconnect, device number 26  

  • [  174.572011] usb 1-1: new high-speed USB device number 27 using s5p-ehci  

  • [  174.702413] usb 1-1: New USB device found, idVendor=0424, idProduct=2514  

  • [  174.702471] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0  

  • [  174.706912] hub 1-1:1.0: USB hub found  

  • [  174.707163] hub 1-1:1.0: 4 ports detected  

  • [  174.907402] lj:port 2, status 0101, change 0000, 12 Mb/s  

  • [  174.992252] usb 1-1.2: new high-speed USB device number 28 using s5p-ehci  

  • [  175.315403] usb 1-1.2: New USB device found, idVendor=046d, idProduct=0825  

  • [  175.315462] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=2  

  • [  175.315524] usb 1-1.2: SerialNumber: F46BE640  

  • [  175.320003] uvcvideo: Found UVC 1.00 device (046d:0825)  

  • [  175.341248] input: UVC Camera (046d:0825) as /devices/platform/s5p-ehci/usb1/1-1/1-1.2/1-1.2:1.0/input/input11  


解决办法:
1、 arch/arm/mach-s5pv210/setup-fb-24bpp.c

  • static void s5pv210_fb_cfg_gpios(unsigned int base, unsigned int nr)  

  • {  

  •     s3c_gpio_cfgrange_nopull(base, nr, S3C_GPIO_SFN(2));  

  •   

  •     for (; nr > 0; nr--, base++)  

  •         s5p_gpio_set_drvstr(base, S5P_GPIO_DRVSTR_LV4);  

  • }  

  •   

  •   

  • void s5pv210_fb_gpio_setup_24bpp(void)  

  • {  

  • #if 0  

  •     s5pv210_fb_cfg_gpios(S5PV210_GPF0(0), 8);  

  •     s5pv210_fb_cfg_gpios(S5PV210_GPF1(0), 8);  

  •     s5pv210_fb_cfg_gpios(S5PV210_GPF2(0), 8);  

  •     s5pv210_fb_cfg_gpios(S5PV210_GPF3(0), 4);  

  •   

  •     /* Set DISPLAY_CONTROL register for Display path selection.

  •      *

  •      * ouput   |   RGB   |   I80   |   ITU

  •      * -----------------------------------

  •      *  00     |   MIE   |  FIMD   |  FIMD

  •      *  01     | MDNIE   | MDNIE   |  FIMD

  •      *  10     |  FIMD   |  FIMD   |  FIMD

  •      *  11     |  FIMD   |  FIMD   |  FIMD

  •      */  

  •     writel(0x2, S5P_MDNIE_SEL);  

  • #endif  

  •     int i;  

  •   

  •     for (i = 0; i < 8; i++) {  

  •         s3c_gpio_cfgpin(S5PV210_GPF0(i), S3C_GPIO_SFN(2));  

  •         s3c_gpio_setpull(S5PV210_GPF0(i), S3C_GPIO_PULL_NONE);  

  •     }  

  •   

  •     for (i = 0; i < 8; i++) {  

  •         s3c_gpio_cfgpin(S5PV210_GPF1(i), S3C_GPIO_SFN(2));  

  •         s3c_gpio_setpull(S5PV210_GPF1(i), S3C_GPIO_PULL_NONE);  

  •     }  

  •   

  •     for (i = 0; i < 8; i++) {  

  •         s3c_gpio_cfgpin(S5PV210_GPF2(i), S3C_GPIO_SFN(2));  

  •         s3c_gpio_setpull(S5PV210_GPF2(i), S3C_GPIO_PULL_NONE);  

  •     }  

  •   

  •     for (i = 0; i < 4; i++) {  

  •         s3c_gpio_cfgpin(S5PV210_GPF3(i), S3C_GPIO_SFN(2));  

  •         s3c_gpio_setpull(S5PV210_GPF3(i), S3C_GPIO_PULL_NONE);  

  •     }  

  •   

  •     /* mDNIe SEL: why we shall write 0x2 ? */  

  •     writel(0x2, S5P_MDNIE_SEL);  

  •   

  •     /* drive strength to 2x ....(max for smdkv210) */  

  •     writel(0xaaaaaaaa, S5PV210_GPF0_BASE + 0xc);  

  •     writel(0xaaaaaaaa, S5PV210_GPF1_BASE + 0xc);  

  •     writel(0xaaaaaaaa, S5PV210_GPF2_BASE + 0xc);  

  •     writel(0x000000aa, S5PV210_GPF3_BASE + 0xc);  

  • }


2、arch/arm/mach-s5pv210/include/mach/regs-gpio.h


  •   /* 添加代码*/

  • #define S5PV210_GPF0_BASE(S5P_VA_GPIO + 0x120)

  • #define S5PV210_GPF1_BASE(S5P_VA_GPIO + 0x140)

  • #define S5PV210_GPF2_BASE(S5P_VA_GPIO + 0x160)

  • #define S5PV210_GPF3_BASE(S5P_VA_GPIO + 0x180)


推荐阅读

史海拾趣

Fairchild公司的发展小趣事

1961年,Fairchild公司向全世界介绍了第一个实用的集成电路(IC)。这个微小的芯片将多个晶体管和其他电子元件集成在一起,极大地提高了电子设备的性能和可靠性。这一创新对电子行业产生了深远的影响,并开启了集成电路技术的飞速发展。

Free2Move公司的发展小趣事

近年来,Fairchild公司在全球范围内与众多知名企业建立了合作关系。其中,与华为的合作尤为引人注目。华为作为全球领先的通信设备制造商,对供应商的要求极为严格。然而,Fairchild公司凭借其出色的产品质量、客户支持和公司间的成功合作,从众多供应商中脱颖而出,成为华为的核心合作伙伴之一。华为对Fairchild公司的认可不仅体现在订单量的增加上,还体现在对其产品和服务的高度评价上。

FDI [Future Designs , Inc.]公司的发展小趣事

在电子行业的早期,FDI(Future Designs, Inc.)还只是一家名不见经传的小公司。创始人李明,凭借其对电子技术的热爱和敏锐的商业洞察力,带领团队研发出了一款具有革命性的电子芯片。这款芯片不仅性能卓越,而且成本较低,迅速在市场上获得了认可。正是这款产品,为FDI公司赢得了第一桶金,也为公司后续的发展奠定了坚实的基础。

DBM Optix公司的发展小趣事

在发展过程中,DBM Optix也面临过不少挑战和危机。例如,某次全球供应链紧张导致公司原材料供应受到影响,生产进度一度受阻。面对这一挑战,DBM Optix迅速调整采购策略,积极寻找新的供应商,并加强与现有供应商的合作。同时,公司还加强了内部管理,优化生产流程,提高生产效率。这些努力使得DBM Optix成功度过了危机,并继续保持良好的发展势头。

Hitachi (Renesas )公司的发展小趣事

在竞争激烈的电子行业中,DBM Optix深知只有不断创新才能保持领先地位。因此,公司始终将研发作为核心竞争力之一,持续投入大量资金用于新技术、新产品的开发。通过与高校、研究机构等合作,DBM Optix不断引入新技术、新材料,并将其应用于产品中,从而不断提升产品的性能和品质。这些创新举措使得DBM Optix在光学通信领域始终保持领先地位。

FerriShield公司的发展小趣事

随着技术的成熟和市场的认可,FerriShield开始拓展产品线。公司研发团队不断改进和优化原始的铁磁屏蔽材料,并推出了针对不同应用场景的系列产品。例如,针对智能手机和平板电脑的轻薄型电磁屏蔽膜,以及针对大型数据中心的高效电磁屏蔽板。这些新产品的推出,使得FerriShield的市场份额逐步扩大。

问答坊 | AI 解惑

影响平行缝焊成品率的因素

影响平行缝焊成品率的因素 【来源:SMT信息网】【作者:toptouch】【时间: 2004-12-30 14:31:47】【点击: 4490】 摘要:对于一些在特殊环境下使用的光电器件,需要进行密封,以防止器件中的电路模块因潮气、大气中的离子、腐蚀气 ...…

查看全部问答>

碁于uclinux的网络部分启动分析

碁于uclinux的网络部分启动分析…

查看全部问答>

工业自动化仪表与控制系统未来发展的关注 指针式仪表控制系统

1、自动化仪表与企业的信息化   自动化仪表技术包括信息采集、处理和应用。“企业信息化”实际上是企业信息的集成和整合。为此,必须用自动化和系统的信息模型“简化”、“规则”和“抽象”信息,以便最有效地利用信息。这是自动化仪表领域的一 ...…

查看全部问答>

关于cpu温度的读取,请高手指点

我想用WinIO.sys获取cpu的当前温度,为什么程序老是失败,temp_dwPortVal=0xffffffff 在头文件中导入: #include \"WinIO.h\" #pragma comment(lib,\"WinIo.lib\") 在实现中:         DWORD temp_dwPortVal=0;    ...…

查看全部问答>

s3c2440 camera 疑惑(基于7113的视频采集)

各位大侠,小弟现在正在搞2440 的视频开发,初次涉及,想用7113来做视频采集,烦请各位给提供个简单的思路,或者是大致的方向,不胜感激…

查看全部问答>

求一个AD口暴多的mcu,推荐一下

求一个AD口暴多的mcu,推荐一下…

查看全部问答>

关于8、16、32位单片机的区别

自学开始学习单片机,差不多学会了几种,包括8位的51系列和16位的msp430系列,以及32位的arm系列。 听一些人说一般要学会8位的51单片机后学习16位和32位才会比较容易,但是我实在对于他们的区别没有明显的感觉。特别是8位和16位单片机的区别,使用 ...…

查看全部问答>

verilog中多个模块的引用

verilog中多个模块的引用先在顶层模块中引用一个数码管动态显示的模块:led_disp        led(               .clk(clk),         ...…

查看全部问答>

PSMN1R8-40YLC N-channel 40 V 1.8 mΩ

这款芯片是sot669封装,但是我不清楚是几脚的,关于mb ,到底是画成第五个引脚还是,就只是四个引脚,四个引脚的话,那个Drain是第几引脚?为啥1,2,3引脚都是source引脚?此芯片是用的AltiumDesigner 画的封装,跪求指导。。。…

查看全部问答>

lpx54102 官方例程太坑

今儿看了nxp的官方例程,官方库感觉乱了。各种乱入的感觉。如果能有st那般就好了。…

查看全部问答>