Overview 
This is the Linux BSP (Board Support Package) for the Emcraft Systems STM32F4 System-On-Module (SOM) Starter Kit. 
The BSP provides a software development environment for evaluation and development of Linux (uClinux) on the Cortex-M4 processor core of the STM32F4 microcontroller using the Emcraft Systems STM32F4 SOM Starter Kit as a hardware platform. 
Supported Features 
The following list summarizes the features and capabilities of this release of the STM32F4 SOM Starter Kit BSP: 
- U-Boot firmware:                                                                           
- U-Boot v2010.03;
 
- Target initialization from power-on / reset;
 
- Runs from the internal eNVM and internal SRAM (no external memory required for standalone operation);
 
- Serial console;
 
- Ethernet driver for loading images to the target;
 
- Serial driver for loading images to the target;
 
- Device driver for built-in Flash (eNVM) and self-upgrade capability;
 
- Device driver for storing environment and Linux images in external Flash;
 
- Autoboot feature, allowing boot of OS images from Flash or other storage with no operator intervention;
 
- Persistent environment in Flash for customization of target operation;
 
- Sophisticated command interface for maintenance and development of the target.
 
 
 
- Linux:                                                                              
- uClinux kernel v2.6.33;
 
- Ability to run critical kernel code from integrated Flash of STM32F4;
 
- Serial device driver and Linux console;
 
- Ethernet device driver and networking (ping, NFS, Telnet, FTP, NTPD, etc.);
 
- busybox v1.17;
 
- POSIX pthreads;
 
- Process to kernel and process to process protection using the Memory Protection Unit (MPU) of the STM32F4 core;
 
- Hardened exception handling; an exception triggered by a process affects only the offending process;
 
- Loadable kernel modules;
 
- Support for the hardware FPU;
 
- Secure shell (ssh) daemon;
 
- Web server;
 
- MTD-based Flash partitioning and persistent JFFS2 Flash file system for external Flash;
 
- Device driver for the DMA interface;
 
- USB Host device driver;
 
- I2C device driver;
 
- SPI controller master-mode device driver;
 
- GPIO device driver.
 
 
 
- Development tools:                                                                             
- ARMv7-optimized GNU toolchain from CodeSourcery (2010q1) is used for development of U-Boot, Linux and user-space applications (toolchain must be downloaded separately from the CodeSourcery web site);
 
- Cross GDB for debugging user-space applications;
 
- mkimage tool used by the Linux kernel build process to create a Linux image bootable by U-Boot.
 
 
 
- Development environment:                                                                               
- Linux-hosted cross-development environment;
 
- Development of multiple projects (embedded applications) from a single installation;
 
- hello sample project ("Hello, world!" single-process configuration);
 
- networking sample project (basic shell, networking, USB, and Flash management tools demonstration);
 
- developer sample project (template project that can be used to jump-start development of custom user-space applications and loadable kernel modules).
 
 
 
 
New and Changed Features 
This section lists new and changed features of this release: 
- Support SD Card in Linux STM32F4.
 ID: RT 107790. 
- Improve STM32 I2C driver for errors handling.
 ID: RT 108659. 
- Support hardware FPU code in pthreaded applications in uClinux on Cortex-M.
 ID: RT 110109. 
- Configure STM32F4-SOM for 180 MHz. Initial support for FDT.
 ID: RT 112561. 
 
Known Problems & Limitations 
This section lists known problems and limitations of this release: 
- CONFIG_KERNEL_IN_ENVM requires disabling CONFIG_ARM_UNWIND and CONFIG_EARLY_PRINTK. 
  ID: RT 74683.  Workaround: When enabling CONFIG_KERNEL_IN_ENVM in the kernel, disable CONFIG_ARM_UNWIND and CONFIG_EARLY_PRINTK. 
- JTAG debugging rates are limited to 1 KHz.
 ID: RT 101140.  Workaround: If you require running JTAG at higher frequencies, interrupt the Linux autoboot sequence by resetting the target and pressing any key on the serial console, thus entering the U-Boot command line interface. The Linux kernel is configured to enter a low-power mode by executing a wfi instructions whenever the system enters the so called idle loop (there are no active tasks to execute), which interferes with running JTAG at high-rate frequencies. 
  
 |