ARM开发板上的usb驱动移植及U盘挂载

基于zynq7000芯片的移植:

USB驱动移植:
1.在设备树文件中加入USB设备的信息;(每一款的板子不一样,你可以看这个内容和你板子上规范对比去写)
ps7_usb1: usb@e0003000 {
clocks = <&clkc 29>;
compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a";
dr_mode = "host";
interrupt-parent = <&ps7_scugic_0>;
interrupts = <0 44 4>;
reg = <0xe0003000 0x1000>;
/*usb-phy = <&usb_phy0>;*/
phy_type = "ulpi";
usb-reset = <&ps7_gpio_0 33 0>;
};

compatible:表示匹配的信息,应与驱动文件里struct of_device_id 里成员compatible填写的信息相同,否者在编译内核无法生成内核文件;
dr_mode:表示主机模式;(USB有3种模式,主机模式,设备模式,OTG模式,加那种模式驱动就写对应模式的设备树);
interrupt-parent:表示该设备节点属于哪个中断控制器;我们这里的中断控制器是ps7_scugic_0,在之前已经设置了;
interrupts = <0 44 4>;---中断符号列表;这里有一个问题要注意,就是在填写中断号是,这里的中断号是硬件中断号,
我通过芯片手册查的是中断号irq,他们两者之间存在一个32的的差值,这个问题容易搞混淆;
reg:填写寄存器的地址和偏移量;(查看芯片手册就行)
phy_type = "ulpi";-----表示我们USB主控制器走的协议是ULIP协议;
usb-reset:usb的复位管脚,原理图上他与主控制器的33号引脚向连接且是低电平;


2.内核的配置:
Device Drivers
USB support
    <*> Support for Host-side USB
    <*> EHCI HCD (USB 2.0) support
    <*> USB Mass Storage support
    <*> ChipIdea Highspeed Dual Role Controller
    <*> ChipIdea host controller
        USB Physical Layer drivers --->
        <*> Generic ULPI Transceiver Driver

在内核文件中配置make menuconfig,对其编译make Image;并去替换之前的内核文件;

3.在内核的驱动中加载usb驱动文件;(usb驱动文件需要写的,若要参考,我可以发给你)

验证方法:
通过串口来打印内核启动的信息看是否有usb信息,根据打印的内容来判断usb驱动是否移植或出现什么问题;或者你进入系统cat /proc/devices 查看是否有USB设备节点,插入U盘是否提醒你有设备发现;

下面的测试针对我的板子,可以参考一下:
在开发板上测试:
1.进入uboot界面;配置环境参数,设置主机IP地址;----disgwwd(关闭看门狗),setenv serverip 192.168.255.66;(设置服务器IP地址)
2.初始化FPGA;---如果不初始化FPGA,你的usb驱动内核无法加载成功;(因为我们是下载到开发板的内存中,只是替换了之前的内核,断电就不行了)
3.下载bootImage文件,重启uboot;(重启命令:bootm $loadaddr)
  结果:出现usb相关信息,进入MT平台后插入U盘即可识别,并打印信息;通过查看设备号就可以看到多了两个设备号,
若要对U盘进行读写,就要自己手动加载设备节点对他进行读写,mknod /dev/sda b 8 0 ;(我的需要手动创建节点,有些不用,参看是否有节点,通过ls  /dev是否有新的节点号,若有,就不用创建了);


在开发板上挂载U盘:
1、插入U盘前,输入命令:cat /proc/partitions
2、插入U盘后,再次输入命令:cat /proc/partitions,查看多出的信息,一般为sda/sda1
  如:
    8     0    3932160 sda
  8     1    3931588 sda1
3、输入:fdisk -l /dev/sda,一般显示信息为(查看是要建立设备节点sda,并在busybox中加入fdisk命令在进行编包)
  Disk /dev/sda: 4026 MB, 4026531840 bytes
  31 heads, 30 sectors/track, 8456 cylinders
  Units = cylinders of 930 * 512 = 476160 bytes
Device Boot    Start       End    Blocks   Id  System
/dev/sda1               2        8457     3931588    b  Win95 FAT32
  即:sda1是要挂载的盘符,格式是fat32;
4、输入命令:mount -t vfat /dev/sda1 /mnt,
-----若没报错,此时,U盘已经成功挂载到/mnt文件下了
5、卸载:umount /mnt

你可能感兴趣的:(driver)