TI,
I am trying to get the BIOS USB to work. I have spent a few days on it and I cannot seem to appropriately wrap my head around it. I am looking for help.
First of all the users guide is crap. It doesn’t explain anything important. Here are some of my gripes with it.
-They expect you to use their software driver package for the demo but don’t say if they are required for custom projects
-They expect you to use the DMA and don’t explain how to use it without
-They show you the build options but they don’t tell you specifically what project they are for (because they seem to love to make us rebuild their projects to get the library we want) or what file they are for, in addition they don’t explain what each option means. While some are obvious some are not and I don’t know if I need to have it on or not.
-The API is terrible. The MOST IMPORTANT functions, ConfigureUSB and dsp_bios_entry, are barely explained. They do not explain how to write your own ConfigureUSB for something OTHER than the EVM, and dsp_bios_entry isn’t even explained! It says to refer to application example for usage but the application example has no comments! What does the return mean? What is the arg? Is it supposed to be called from a task or idle? Is it like the NDK where it stays in the function or does it leave every time with a certain return value? I have no idea.
-When looking through the code for the HID keyboard device example I notice there are a lot of drivers, structures, defines that I know nothing about and are barely commented. The user guide makes no reference about any of this and as a result, if I wanted to take anything to our own project and do our own thing with it I would be stuck assuming what “looks” important.
-There is no description on how to make any other device. What if we wanted to make an audio device? I understand there are additional documents with this thing but the USER guide should help you write for whatever driver you want. At the very least tell you where to look and what you need to get started.
-The section for building the projects makes no reference to the fact that if you are not using the EVM board that you will likely have to rebuild the USB_platform project too. Also for CCS4 build it says to follow the procedure in section 7, which can’t be right because section 7 is about power management and has nothing to do with building a project
Now on to the project(s):
-There is a complete lack of comments. I have very little idea what is going on. The printf statements are useless and only print when something good happens but not when something bad happens (which is kind of the point). If there is an error there is no way to tell what is going on or why something went wrong.
I cannot get the HID keyboard device project to run on our board (unless I am mistaken, the project examples they give you can be slightly tweaked to be used with any 6748 board with a USB attached). My problem is that I get to the “dsp_bios_entry” call and it leaves that goes into the while(1) loop. In the meantime Windows is telling me that the USB attempting to connect is malfunctioning and the driver doesn’t load. I have no idea what is going on. And since the documentation is so terrible I don’t know if “dsp_bios_entry” is supposed to return and if it does what the return value means. When looking at some of the files I came across some questions:
-In config_device.h there is a reference to primus_platform.h but I cannot find this file on my computer at all. I have no idea what it wants it for. I was just told it is part of a library…still though I have no idea what it is for.
-Also in that file CONFIG_FD_MASS and CONFIG_FD_HID are both enabled. Does one need to be disabled?
-Also in the file CONFIG_DAVINCI is enabled. Why does davinci matter to a USB program? Is the 6748 considered a davinci?
-The EVM init code makes changes to the pinmux registers, but the USB doesn’t use pinmux. What is the point of those pinmux registers (from what I can tell it is turning them into GPIO)
I am sure I have more questions about it but right now that is my first rant. I don’t expect you to figure out everything for me, if you have to focus on something this is what I would prefer you focus on:
1) What do I need to do to get the usbdev_his_sample project running on my board?
2) When I am ready to move things over to my project what do I need and what don’t I need?
3) What config settings do I really need on/off in the config file?
I guess I kind of challenge you to get a 6748 evm board and run the HID keyboard device project on it and tell me how difficult it was for you. The end goal for right now is to figure out if the USB hardware on our board works and the only want to make sure it works is to load a simple project and do something simple with it. As far as I know I am doing everything in software right and the hardware is wrong.
Can someone help guide me?
-Jason