1.3. System Design ChecklistΒΆ
This list was compiled based on years of combined experience helping people build Linux systems on TI devices. The list helps 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. JTAG also helps find hardware issues faster.
How do you plan to update software throughout the design process? New features are added in new software releases. Picking up new features throughout the design process require moving to new software versions. Moving to newer versions throughout the design process is recommended. This requires a development environment that clearly separates developer changes from the TI SDK baseline so that developer changes can easily be moved from one TI software 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 your design is intended to boot from OSPI, how will the OSPI be programmed? UART is a common choice. If the OSPI is programmed over UART, then at a minimum the board must be able to boot from both OSPI and UART. This flow sometimes has to change in a production environment.
Have you checked the availability of Linux software for the components that you plan to use on your board? Are schedules aligned to this availability?
How do you plan to do Linux development? Native 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 Linux Processor SDKs are tested on.
Have you compared the features needed in your design to the features supported by TI EVMs (or other development boards)? Features that are enabled on TI EVMs are tested on a regular basis. Using these features as they are used on development boards will help assure compatibility.
Do you have an automated test plan that effectively tests each interface or feature? Are you running automated tests on a frequent, if not constant basis to catch issues early? Simple test cases that can also be run on TI boards help accelerate support from TI if it becomes necessary.