More embedded applications are being implemented on processors that have cache areas of significant size. This paper introduces concepts in developing software to improve performance when running on these processors. The paper starts with basic cache terminology that will lead into discussion of potential pitfalls and some design approaches for using the cache, and concludes with some examples that demonstrate these approaches.