Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
19 years ago

USB 1.1 Host

Hello,

I've implement usb 1.1 host/slave IP core in NiosII processor and use it as Host to communicate with USB Mass Storage Class devices. I can read information from the flash drive disk but I can't write data to it. Does anyone have successfull experience or just any ideas?

Thanks, Yuriy.

4 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi,

    I got your point. I already developed Mass Storage system but for the HOST i am using my Own Windows Xp PC.

    1) My first question for you is that did you use any stack for your HOSt or not???

    2) Did you aware of mass Storage Class structure. your HOST must have to send a data in that formate and at the device side you have to decode it and i think for that you are using ready made mass storage drive. right?so for that u have to no worry. but HOST point of you you have to send CBW-command block wrapper ,CSW - command status wraper and data phase for mass storage class.

    In short at the HOSt side you have that mechanism which follows mass storage class specification.

    Best Regards,

    slsnios
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi slsnios,

    thanks for reply.

    I haven't quite catch your first question, my host controller is usbhostslave IP core, it has some registers, etc. ADDRESS, ENDPOINT, PID and FIFO buffer, so I should fill all appropriate registers and set flag to start transmission.

    According to the second you're right, as I'm developing host I should worry just about transmit path. Read operation is fully successfull: I'm sending CBW, it is acknowledged by the function, I'm sending request for data and I

    receive them, I'm sending request for CSW and I receive it. But another case

    with write operation: I send CBW and it is acknowledged then I send Data

    and they are acknowledged too, then I send request for CSW but I don't

    receive it. When I read the same sector after this I can see no changes in

    data structure.

    Regards,Yuriy.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi

    so you are aware of Mass Storage class and thts good.Now i think in write operation and that means in "2a" command you are not able to write anything on your device.

    and one thing you are pass all the request from the host for your device enumeration like

    1) inquairy

    2) read_capacity

    3) mode_sense

    etc.....

    I suggest you one thing and that is if you have sniffer(USB Debugger) then just connect your drive to PC and catch the HOST protocol data in sniffer and mimic same thing in your HOST(embedded host.IP base). Then definately you will get the idea.

    And the IP you used is from "opencore" or what???

    Anyway if you have any doubts then you can ask me...

    Best Regards,

    slsnios