Programming Guidelines for the EE 522R Robot

- Use standard C only (no C++). You can use C++ style comments.

- Do not use any standard library functions. Instead of printf() use
  print(), PrintInt(), PrintWord(), etc.

- Do not use free(). You can allocate memory using the function void
  *MemAlloc(unsigned numBytes) but cannot free it.

- The processor is 32-bit, but to avoid ambiguity and increase
  portability you can use the types defined in SystemTypes.h (int8,
  uint8, int16, uint16, int32, uint32).

- Avoid using floating point (float, double) unless you NEED the
  dynamic range it provides. Use fixed point arithmetic instead (see
  FixedPoint.*).

- Be memory conscious of your code size, data size, and stack
  usage. You can allocate lots of memory with MemAlloc() but you
  should keep code small and use statically allocated memory only for
  small pieces of data.

- Download the sample project to see what functions are available to
  you. Any uC/OS-II function is potentially available as well as those
  in Utils.*, FixedMath.*, Wireless.*, FrameBuffer.*, MemecIO.*, and
  Timer.*.

- If you plan on being able to reset the robot (via the reset button)
  then you must initialize global variables in initialization
  functions rather than statically. Otherwise they will not be
  initialized after a reset. Also, static local variables must be
  avoided because there is no way to initialize them after a
  reset. This is because global and static variables are set to their
  initial values only when the code and data is loaded (i.e., when the
  code is downloaded to the robot).