Is the USB documentation/protocol for TI-84+ CE finished yet? If it's not finished, is it public information.
It's been a couple years since the last major talk about it. I'd imagine something had to be found by now. Or is the project for that been scrapped?
Actually, we pretty much have a clear understanding of how USB functions and how to interact with it. All of the USB functions within the bootcode have been decompiled by hand and named as well; in addition to important routines. No one has documented it yet because USB is not easy by any means; and the user base might be like 1 person in total. There are much more productive things to be doing. Razz
MateoConLechuga wrote:
Actually, we pretty much have a clear understanding of how USB functions and how to interact with it. All of the USB functions within the bootcode have been decompiled by hand and named as well; in addition to important routines. No one has documented it yet because USB is not easy by any means; and the user base might be like 1 person in total. There are much more productive things to be doing. Razz

Ah, i see.

Still, we should really get around to that. It would be helpful to many people who want to make usb controlled things, who instead resorted back to the ti 84 or made other things.

For example, music and sound for the CE. Personally, i would love to make that happen but do not want to document/figure it out myself.

If there is any existing documentation, it would be nice to have...
Quote:
All of the USB functions within the bootcode have been decompiled by hand and named as well; in addition to important routines.


Where could I access this?
MateoConLechuga wrote:
No one has documented it yet because USB is not easy by any means; and the user base might be like 1 person in total. There are much more productive things to be doing. Razz

I could see many uses for USB functions. You could store a lot of data on a flash drive, which would make projects like Iambian's CEVidium a lot more useful.

I would like to help with this, however I am nowhere near experienced enough to be able to make a meaningful contribution. I took a look at the USB documentation at one point and was completely baffled.

It would be nice if you could leave a link to those decompiled functions here, if they are not proprietary / protected by copyright.
I'd certainly support the USB protocol, in its entirety, being documented by the community, or at least an api for interacting with it be developed for my own Blast project, and since TI considers such information about how our own devices work to be "proprietary" and thus they don't feel the need to provide such information.
MateoConLechuga wrote:
No one has documented it yet because USB is not easy by any means; and the user base might be like 1 person in total. There are much more productive things to be doing. Razz

Mateo, I'd argue that if it isn't documented then "we" don't really know anything, just that "you" do.

Even a brain dump on WikiTI or a text file in the repo would be better than it being stuck inside your head.

Sure right one only one or two people might use it but that doesn't mean it isn't useful knowledge that people might want. Be it future emulator developers or rom dumpers looking to get some extra speed via a customer protocol or any number of other toy's or demos. Sure it may not be practical but that doesn't mean it shouldn't be done.

Heck this site is founded by a guy who thought a Mouse driven UI was a good idea on a calculator and then someone even wrote a USB mouse driver for it!

So writing it off as there will be no users seems like a pretty lame excuse to not at least write something down.

Edit: Also note the fact that there are like 3 other topics with people who have ideas of things they'd like to do with the USB port on the CE. Sure some of them may be misguided or downright insane but how else are new programmers and user supposed to learn that mouse driven UI's on a calculator are a poor idea aside from just trying it to find out?
TheStorm wrote:
MateoConLechuga wrote:
No one has documented it yet because USB is not easy by any means; and the user base might be like 1 person in total. There are much more productive things to be doing. Razz

Mateo, I'd argue that if it isn't documented then "we" don't really know anything, just that "you" do.

Even a brain dump on WikiTI or a text file in the repo would be better than it being stuck inside your head.

Sure right one only one or two people might use it but that doesn't mean it isn't useful knowledge that people might want. Be it future emulator developers or rom dumpers looking to get some extra speed via a customer protocol or any number of other toy's or demos. Sure it may not be practical but that doesn't mean it shouldn't be done.

Heck this site is founded by a guy who thought a Mouse driven UI was a good idea on a calculator and then someone even wrote a USB mouse driver for it!

So writing it off as there will be no users seems like a pretty lame excuse to not at least write something down.

Edit: Also note the fact that there are like 3 other topics with people who have ideas of things they'd like to do with the USB port on the CE. Sure some of them may be misguided or downright insane but how else are new programmers and user supposed to learn that mouse driven UI's on a calculator are a poor idea aside from just trying it to find out?


Hmmm, jacobly and Mateo have been working on things, part of which are already available online since not so long ago: https://github.com/mateoconlechuga/usb-fat (yeah Mateo is having fun with MSD stuff on the CE, eventually that should be pretty cool!)
Adriweb wrote:
Hmmm, jacobly and Mateo have been working on things, part of which are already available online since not so long ago: https://github.com/mateoconlechuga/usb-fat (yeah Mateo is having fun with MSD stuff on the CE, eventually that should be pretty cool!)


Cool, that's great to hear, I can't wait to see how that turns out.

I guess my point is an answer of "here is some code that sorta documents what we know" linking to that would have been better than "well I can't think of any uses so I didn't bother, stop suggesting I waste my time."

Its awesome all the work Mateo and Jacobly and others have done on this but keeping it all locked in their heads and brushing off peoples request for basic documentation as "not worth our time" means fewer people can make use of it.
TheStorm wrote:
Its awesome all the work Mateo and Jacobly and others have done on this but keeping it all locked in their heads and brushing off peoples request for basic documentation as "not worth our time" means fewer people can make use of it.

There's no such thing as basic documentation of usb. Either libraries and drivers are created for the CE, or they are not. Who do you think is being tasked with writing those. For other people, documentation of usb *already* exists in the ECHI specification, Bulk-Only transport for MSD devices, and the FAT format.
MateoConLechuga wrote:
TheStorm wrote:
Its awesome all the work Mateo and Jacobly and others have done on this but keeping it all locked in their heads and brushing off peoples request for basic documentation as "not worth our time" means fewer people can make use of it.

There's no such thing as basic documentation of usb. Either libraries and drivers are created for the CE, or they are not. Who do you think is being tasked with writing those. For other people, documentation of usb *already* exists in the ECHI specification, Bulk-Only transport for MSD devices, and the FAT format.

You said you had some system calls named and port lists, is that somewhere on wikiti? I see a port range but not much else, perhaps a page on wikiti for basic info could be helpful?

If a user wanted to help write that library is there a github repo for it that they could contribute to?

Is there a reason you couldn't link to the documents you just linked me to, for the original poster of this thread?

In this thread you mention some system calls and boot calls, have has there been any new developments since then? If not perhaps just linking people who ask to that thread would be helpful?

If the situation is truely that no-one can do anything until you guys have written a library/driver why did you not just mention that and again let them know how they can help instead of saying "No one has documented it yet"?

Finally that EHCI file is rather lengthy, is it possible to summarize the parts that apply to the particular controller in the CE or show some examples of doing EHCI task in C code for the CE, if there are parallels between that linux driver and how the CE's controller is wired up perhaps point those out so that others can help. IE. Where the Linux driver says equate FOTG210_DMATFNR it means the value of port 0xXXXXX or something.
I don't think you get it. There will be nothing done on usb until we write a driver on it. And that is what the toolchain repo is for; but in order to write a driver for those things; you *have* to read the lengthy documentation. There is no "simple" usb communication routines until we write the driver in assembly. It's not just a few lines; we are talking a few thousand at least for a decent driver

Quote:
If the situation is truely that no-one can do anything until you guys have written a library/driver why did you not just mention that and again let them know how they can help instead of saying "No one has documented it yet"?

Because this is a serious necropost on year-old information? Things have changed a lot since then, I don't know why we are even posting in this topic.
Quote:
I don't think you get it. There will be nothing done on usb until we write a driver on it. And that is what the toolchain repo is for; but in order to write a driver for those things; you *have* to read the lengthy documentation. There is no "simple" usb communication routines until we write the driver in assembly. It's not just a few lines; we are talking a few thousand at least for a decent driver
You're acting like nobody else is even capable of driving the controller without your help, when in fact the reality is it's fairly simple to drive the controller for a single purpose, but nobody's put together the pieces to do so (perhaps with good reason).



To be clear (having looked at the wikiti page just now), the hardware situation is that the controller is an FOTG210, which is memory-mapped at 0xE20000. Sample code for more sophisticated systems (mostly things that run Linux) is fairly plentiful online, for instance in U-boot which has a nice register map. (Using that would involve just assuming there is one of those structs at 0xE20000 and twiddling it- MMIO should be all that's necessary.)

It's unclear to me if anybody knows some of the more exotic things about how the controller is connected, like how interrupts are routed (apparently they're on vector 13, but there may be more to it) or if DMA works.

So there appear to be very few (zero?) CE-specific things for the controller, but there doesn't appear to be public documentation on how it works- it'll have to be reverse-engineered from other open-source code that supports the same controller (Linux, U-boot, maybe others). Making it work is a matter of figuring out how those other pieces of software drive the controller and adapting those to do what you want on the calculator. It might be possible to do something useful without referencing USB specs, but would likely be more difficult if you don't understand the purpose of a given operation.

TL;DR: all you probably need is the knowledge that the controller is memory-mapped at E20000 and reference code to make sense of the register map. And sufficient motivation to use it, I guess.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement