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.