noPC
FAQ

What is noPC?
noPC was borne out of a need to display characters and graphics on a conventional VGA LCD monitor. Initial tests with the LPC2106 thumbnail module proved successful although at the time it was teamed up with a 16-bit application cpu which handled the application. With the introduction of the LPC2138/2148 it was decided that the ARM cpu could handle both video timing generation and application code on the one chip. By also teaming up other devices to the cpu such as PS/2 keyboard, SD Flash, serial coms etc the noPC design was born. As noPC already had a DAC and generated 32Khz timing for the video it was a relatively simple matter to get it to play wav files.

How does it produce VGA output without a video chip?
VGA generation is normally left to hardware timing registers and external RAM to produce the high-speed waveforms required. However, by using the PWM to generate the horizontal synchronization and also interrupt the ARM it is possible due to the high-speed Flash of the Philips version to respond and read pixel information from internal RAM and feed this to the I/O pins as RGB data. The vertical synchronization routine simply counts lines and asserts itself at the proper time.

How much useful processing time is left after generating video and audio timing?
When the CPU is displaying video data it is so busy pumping the pixels that there is absolutely no time left for anything else. But there are blanking periods between lines plus there are also many blanking lines per frame where no video data is required. It is in this period that the cpu is performing it's normal processing tasks. Further look-ahead optimization skips normal video lines which are blank, adding a further boost to application processing speed.

How are applications written for noPC?
Interactively, the way I like it. Using a top-down bottom-up approach you can test the primitives interactively and in the process discover something new about the hardware and what may be possible. Obviously, it is easier to edit the software on your PC with your favourite editor (I recommend PFE) and copy/paste or download directly into the terminal (try TeraTerm). The application is compiled into RAM initially but after you are happy enough you can burn it into Flash with a simple BURN command. The code itself is relocatable, only the kernel needs to remain where it is. Setting the AUTO variable with the startup address before burning will ensure that the application is fully turnkey.

If possible, leave the console port (COM0) available for debugging and run your application in a task or two. That way you can check and change parameters on the fly and find out what is going on without the need for JTAGing.

How fast are the applications written in IVOS?
From fast to very fast, even with the VGA pixel pumping and displaying happening. Obviously, this does depend upon the application but the BREAKOUT demonstration has to put the game task to sleep to regulate ir otherwise the ball would be flying around at supersonic speeds :)

Can I use C code on noPC?
Yes, you may choose to use your favorite compiler to generate code. All the source code for the kernel is available for integration into user code although some additional work would still be needed for compatibility.

What do I need to get going with noPC?
As it is supplied no other software is required other than a host PC or similar with source code editing facilities and a terminal emulation program.