1.3. System Design ChecklistΒΆ
This list tries to summarize years of combined experience helping people build Linux systems on TI devices. It is an attempt to help developers think about problems before they occur in order to help maximize success. It is written as a series of questions to raise awareness about common issues.
- Were all hardware design recommendations followed? It is hard to make Linux
run on bad hardware.
- Have you planned to use JTAG? This is very helpful, especially on the first
few boards for board porting of U-Boot and Linux. It also helps find hardware
issues faster.
- How do you plan to update software throughout the design? New features are
added on new software versions. Picking up these features throughout the design
require moving to new software versions. Moving to newer versions throughout
the design process is recommended. This requires a development environment
that clearly separates changes from the TI SDK baseline so that they can
easily be moved from one version to the next.
- How do you plan to program the flash on the board? Do you need to be able to
change the boot settings in order to program boards? Will this be different
for development and production?
For example, if OSPI is eventually your target to boot from, how is it going to be programmed. UART is a common choice, so the board must be able to boot from OSPI and UART, at least. This flow sometimes has to change in a production environment.
- Have you checked the availability of Linux software for the components that
that you plan to use on your board? Are schedules aligned to this availability?
- How do you plan to do Linux development? Real Linux machines with good hardware
capability are recommended to maximize the efficiency of software developers.
Virtual machines are not recommended, especially for firmware developers that
will interact directly with hardware. Ubuntu is the host development
distribution that TI Processor SDKs are tested on.
- Have you compared the features needed in your design to the features supported
by all TI EVMs (or other development boards)? These features are tested on these
boards on a regular basis. Using these features as they are used will help
assure compatibility.
- Do you have a solid automated test plan that will effectively test each interface or feature? Are you running these on a frequent, if not constant basis to catch issues early? Simple test cases, ideally than can also be ran on TI boards, help accelerate support from TI if it becomes necessary.