Call to arms | Teensy + SDRAM = true

The CH703X chips are no good; they use onboard ram, so they're a) slow and b) limited to what the chips knows how to output, which is usually something like 1366x768 or other sub-1080p resolution.

What I'm thinking of is a proper RGB/YUY2->HDMI encoder: 24-bit parallel input + I2S for audio, capable of at least 1080p@60Hz.
These sorts of things are all over aliexpress:
HDMI-compatible Output Module Sil9134 1080P@60 Frame Resolution RGB888 24bit Interface
ALINX AN9134:HDMI Output Module for FPGA Board 1080P 60
Both of those are using a Silicon Image 9134... not a bad chip (actually probably a bit overpowered) but I don't think the audio pins are connected on those boards, which is a shame.
 
@KurtE @wwatson you can run 8/16/
bit parallel(8080) on any of the FlexIO pins in such a way that it won’t come in conflict with CSI.

You can also run eLCDIF in 16 bit rgb mode and run CSI as well - at least thats what is available on the EVK dev board.

I think both display driving solutions are more adequate when running a resolution of 320x480px @ 2bpp and above, where the performance of SPI really degrades at that point
 
I just spent multiple days reading this entire thread after learning that the i.MXRT chip is capable of using SDRAM. I've been planning on building a game console with this chip and a few other support chips and am fully interested in getting SDRAM to work with this incredible platform.

Not if they're displays that use on-board RAM, because LCDIF is meant for direct rendering.

Is it time to start trying to talk people into designing/building a HDMI encoder board?
I already looked into using the ADV7513 and eLCDIF in 24 bit mode to drive a TV with this system. I'd be 100% willing to build a test board as my team and I begin writing the basic boot code for the platform. I plan to order a PCB within a couple of weeks to this end.

While I will not use CSI since my use case does not require any kind of camera I/O, I'm currently in the reviewing process for our design, and will be open to running tests on the test platform we will build (64 MB SDRAM + i.MXRT1062 + ADV7513 + ESP32). Please let me know if you have any questions.
 
Started playing with a shield...
1717461268790.png

Still needs some cleanup...
1717461233660.png
 
Thanks, I have a new RA8876 7" ordered... I see your read me with the pinout
Is this the one you ordered : SPI 7"TFT LCD Display 1024x600 : with RA8876

I got one of those a year or four back and never powered it up.
1717465319253.png


Edit: Cool board @KurtE - is that 40 pin to fit such a board as this linked RA8876?

Also I have 3 OV7670's never wired - is that the layout of the "CAM" connector? reread p#1139 and it seems that is the GIGA layout?
 
Last edited:
Question: Does it make sense to start a new " SDRAM DevBoard 5 DIY " thread? this one at 47 pages is a bit long. Pros&Cons of course ...

Vote with a (y) Like for 'new thread' or :mad:
Keeping a single thread for the general ideas and then kicking off new threads for more specific projects seems to make sense to me.

This thread is a good read, and I think it's about to get a lot better very soon 😀
 
Is this the one you ordered : SPI 7"TFT LCD Display 1024x600 : with RA8876

I got one of those a year or four back and never powered it up.
View attachment 34562

Edit: Cool board @KurtE - is that 40 pin to fit such a board as this linked RA8876?

Also I have 3 OV7670's never wired - is that the layout of the "CAM" connector? reread p#1139 and it seems that is the GIGA layout?
I have one configured for SPI4...
1717468408465.png
1717468463176.png

And I have my own board connected to the bottom of it, that also had a setup for something like the an Audio adapater and I have one of
Paul's memory boards connected to it...
 
@KurtE That looks awesome :D I see a 40 pin connector and possibly a place to plug in a sound card?
Hopefully I have it setup that I can connect cameras either using CSI or FlexIO

Also has the ILI9341/ILI9488 with SPI.

And hopefully the RA8876 - with Parallel. Hopefully I have the right pins.




1717472070745.png

With the Shield part, Not sure how well it will work for Audio. As I know that the Audio board uses pins, 7, 8, 20, 21, 23, but these are all
used on other things, So I tried to setup jumpers with other pins that have the same Audio function... Not sure if it would work.

1717472540462.png

Will look more at it in the morning.
 
I just spent multiple days reading this entire thread after learning that the i.MXRT chip is capable of using SDRAM. I've been planning on building a game console with this chip and a few other support chips and am fully interested in getting SDRAM to work with this incredible platform.


I already looked into using the ADV7513 and eLCDIF in 24 bit mode to drive a TV with this system. I'd be 100% willing to build a test board as my team and I begin writing the basic boot code for the platform. I plan to order a PCB within a couple of weeks to this end.

While I will not use CSI since my use case does not require any kind of camera I/O, I'm currently in the reviewing process for our design, and will be open to running tests on the test platform we will build (64 MB SDRAM + i.MXRT1062 + ADV7513 + ESP32). Please let me know if you have any questions.
That's dedication, it's a long thread. It's also fun to see that the community benefits from the development of SDRAM. Hope you succeed with the game console, don't forget to make a thread and show it of once you get going!
 
Yes, it's well over a thousand messages. I did find quite a bit of useful information though especially about cap and DQS timings.

As I mentioned before, we will build a test board (when I figure out how to wrestle with KiCad) and try out both 1 chip and 2 chips of SDRAM (since we're planning for 128 MB SDRAM. I'm also interested to see if it is possible to memcpy a program segment onto SDRAM at runtime (granted it's been linked as either a PIE exe or at the 0x90000000 base address). I guess I'll figure out some of the answers to my questions when this dev board is ready and ordered.

Hope you succeed with the game console, don't forget to make a thread and show it of once you get going!
Thanks! I certainly am going to have a lot of questions about the hardware (especially weird timings questions not discussed in the datasheet) and while the bootcode and OS will be proprietary, I'll bring over as much as I can in the way of support libraries so the Teensy ecosystem can benefit.
 
I'm also interested to see if it is possible to memcpy a program segment onto SDRAM at runtime (granted it's been linked as either a PIE exe or at the 0x90000000 base address).
The SDRAM can be initialized by the NXP bootrom, so it's ready to go before any of the Teensy startup code even begins. Example code here: https://github.com/A-Dunstan/SDRAM_EXTMEM/blob/master/examples/DCD_Init/dcd.cpp
It's a bit tricky but it's basically just a bunch of metadata telling the ROM which values to poke into registers, the details are in the reference manual.
(For some odd reason they chose to use big-endian values everywhere, which makes things difficult...)

So, if you're structuring your app the way that I think you are, you could have a "base" image in SDRAM that controls loading different emulation cores into the ITCM.
 
The SDRAM can be initialized by the NXP bootrom, so it's ready to go before any of the Teensy startup code even begins. Example code here: https://github.com/A-Dunstan/SDRAM_EXTMEM/blob/master/examples/DCD_Init/dcd.cpp
It's a bit tricky but it's basically just a bunch of metadata telling the ROM which values to poke into registers, the details are in the reference manual.
(For some odd reason they chose to use big-endian values everywhere, which makes things difficult...)

So, if you're structuring your app the way that I think you are, you could have a "base" image in SDRAM that controls loading different emulation cores into the ITCM.
That's interesting. Is there a need for that in the SDRAM library that you guys made here in the thread?

Yes, it's well over a thousand messages. I did find quite a bit of useful information though especially about cap and DQS timings.

As I mentioned before, we will build a test board (when I figure out how to wrestle with KiCad) and try out both 1 chip and 2 chips of SDRAM (since we're planning for 128 MB SDRAM. I'm also interested to see if it is possible to memcpy a program segment onto SDRAM at runtime (granted it's been linked as either a PIE exe or at the 0x90000000 base address). I guess I'll figure out some of the answers to my questions when this dev board is ready and ordered.


Thanks! I certainly am going to have a lot of questions about the hardware (especially weird timings questions not discussed in the datasheet) and while the bootcode and OS will be proprietary, I'll bring over as much as I can in the way of support libraries so the Teensy ecosystem can benefit.
Cool stuff! Take my design of the gen5 that I posted earlier, and work from there if you want. I use EasyEDA, it's not the worlds most advanced but it works. You can basically just alter my design to save yourself time, if you want. Do what ever you want with the designs I post here, it's open for anyone and everyone to use and/or sell.
 
Probably not. I use it because Paul refused my proposal to let libraries use the startup-hooks.
Either way, it may be a good idea to implement into the library? To me it sounds like the core doesn't need any modification if doing it your way?
 
So I can just tell the NXP bootrom to initialize it? I do remember something about decreased flexibility but since I don't need insane clocks it probably doesn't make a significant difference.

So, if you're structuring your app the way that I think you are, you could have a "base" image in SDRAM that controls loading different emulation cores into the ITCM.
I don't plan to use emulation cores currently though the M7 would happily run them I'm sure. I should probably just link the design document here but it needs a lot of work. I was planning on using NOR to store a hw init bootloader (boot1) that would establish communication with the other support chips and then load the os bootloader (boot2) off of a USB SSD. Both will be loaded into internal memory so the SDRAM is free for application code. I could use ITCM for some really fast application code if necessary or use it for OS services.

Take my design of the gen5 that I posted earlier, and work from there if you want.
Thanks! That gives me a baseline to design the board from. I'll work on the board more sometime later this week. I'll have to hook up the ADV7513 encoder and HDMI after that (and maybe JTAG too if I can) and then it should be ready to order. Then we can start developing and I can help you guys too.
 
That's interesting. Is there a need for that in the SDRAM library that you guys made here in the thread?


Cool stuff! Take my design of the gen5 that I posted earlier, and work from there if you want. I use EasyEDA, it's not the worlds most advanced but it works. You can basically just alter my design to save yourself time, if you want. Do what ever you want with the designs I post here, it's open for anyone and everyone to use and/or sell.
Also where can I find this design? I looked through the forum again but probably missed it.
 
Also where can I find this design? I looked through the forum again but probably missed it.

Post 1124 has it, page 45 in this thread.
NOTE: This is the new Gen5, it’s not been tested. But the changes made from previous gen (4.5) is minor so there should be no issues.

The SDRAM is untouched, that’s proven to work already in previous boards.
 
Got it open in KiCad! For a minute there it didn't want to work and it was crashing the program, but I changed the import method and it worked fine afterwards.

1717534394466.png


I'll probably start off by removing some GPIOs, maybe routing another SDRAM (later, not yet) and adding the ADV7513. I'll have to get a bootloader chip from somewhere, but I was planning on switching to an ESP32 for managing power sequencing later on. I'll also remove the SD Card since that isn't necessary for my build (due to a USB SSD).
 
Got it open in KiCad! For a minute there it didn't want to work and it was crashing the program, but I changed the import method and it worked fine afterwards.

View attachment 34579

I'll probably start off by removing some GPIOs, maybe routing another SDRAM (later, not yet) and adding the ADV7513. I'll have to get a bootloader chip from somewhere, but I was planning on switching to an ESP32 for managing power sequencing later on.

Bootloader can only be bought at one place, that is here: https://www.pjrc.com/store/ic_mkl02_t4.html
 
So I've been working on a dedicated 24 bit board these past days. A proof of concept that can play (hopefully) videos, music (amplifier onboard) on a 24 bit screen. The idea is to 3D print a case and have a 5" screen with touch running LVGL. Powered by a LiPo battery with charger via USB-C.

It also has SDRAM, CAN-FD and SD Card onboard.

It's the most well organised board I've made and it looks quite good (I usually don't think that about my own designs).
Let's hope it works. (probably wont :LOL:)

1717595623390.png
 
Nice board! I can say with certainty I have not made a board even remotely that good looking.

Do you know how much SDRAM you plan to put on that board? I'm trying to do 2x64 MB but I haven't gotten the design down yet. (In fact, I've only barely started!)
 
Nice board! I can say with certainty I have not made a board even remotely that good looking.

Do you know how much SDRAM you plan to put on that board? I'm trying to do 2x64 MB but I haven't gotten the design down yet. (In fact, I've only barely started!)

Thanks for the kind words.

This one has 1x SDRAM. I have not looked into how to add 2x. What do you need 2x for?
 
Back
Top