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.

  1. Were all hardware design recommendations followed? It is hard to make Linux run on bad hardware.

  2. 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.

  3. 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.

  4. 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.

  5. 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?

  6. 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.

  7. 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.

  8. 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.