Wireless Embedded Uclinux Platform

Wireless Embedded uClinux Platform Based On The STM32F103xx Controller
===============================================================================
Abstract:
We’re building a wireless embedded linux platform based on the STM32F103xx microcontroller and the TIWI-R2 wireless module (Bluetooth and WLAN).
The STM32 includes onboard flash, that will be used for the bootloader. In addition there will be 16Mbyte of external PSRAM (Pseudo Static RAM), SD Card, USB, SPI and UART.
The uclinux source code for the STM32 platform exists, as well as for the TIWI-R2 module.
The code must be tailored to fit to the platform and a bootloader to initialize the system must be written.

Documentation:
Available documents and source code from ST for the STM32F103xx microprocessor development board:
an3012 (uCLinux port with description based on uclinux 20080808)
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/APPLICATION_NOTE/CD00242717.pdf
We will use this microcontroller with external PSRAM (see below), SD Card, USB, SPI, UART
Available documents and source code from LSR / TI
TIWIR2 Radio from LSR using the WL1271 Bluetooth WLAN chip from TI.
http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=summary
tiwir2 from lsr.com http://www.lsr.com/products/radio_modules/802.11_bgn_bt/tiwi-r2.aspx
Toolchain as proposed in an3012
Available datasheet from Micron
PSRAM MT45W8MW16BGX
http://download.micron.com/pdf/datasheets/psram/128mb_burst_cr1_5_p26z.pdf

Deliverables:
#1 Bootloader:
Simple bootloader with the following functionality:
1) Initializes the STM32F103XX with external PSRAM
2) Initialize SD Card
3) Check consistency of available linux kernel on sd card, if broken, use fallback kernel also stored on sd card
4) Loads the kernel image from SD Card (dedicated partition) into the PSRAM.
5) Execute the kernel

#2 Wireless uCLinux platform:
1) Upgrade ST uclinux to latest uClinux-dist-20090618 with all recent patches
2) Add support for PSRAM, starting kernel from PSRAM (over bootloader mechanism)
3) Add support for TIWIR2 bluetooth (bluez) including all features for RFCOMM (cable replacement). Programming of low level SPI driver interfacing the TIWI2 required.
4) Add support for TIWIR2 WLAN including all features to access a wlan access point, unencrypted and encrypted for TCP / IP connection (dhcp-client included). Programming of low level SPI driver interfacing the TIWI2 required.
5) Provide basic uCLinux driver for reading and writing over SPI on external interrupt, driver must provide soft realtime capability (jitter < 1ms). This is a simple driver template for us.
No real time linux extension is required (if jitter < 1ms is a problem, the interrupt routine can be changed to priorize events from that SPI port).
6) Provide driver for power management to throttle cpu power consumption (put CPU to sleep as long as possible), when idle.
7) Provide driver for SD Card (should be included in STM32 port)
8) Provide driver for USB full speed connection (2.0) for the following purposes: see 9) and 10) (should be included in STM32 port)
9) Driver (or userland application) to access the unused partition of the sdcard (not used by kernel) as a windows compatible disk over USB.
Linux userland applications must be able to read / write access the disk concurrently to PC access over USB.
10) Driver to access the embedded linux console over USB (such as rs232c emulation) from a PC (Linux). This feature shall be activated if the system is bootet and an gpio pin is externally pulled low.
11) Instructions (tools if required) howto partition / copy linux image to sd card

#3 Testing:
One the final hardware is finished (Q1 or Q2 2011) the hardware is provided for testing and final bug fixing (Q1 2011)
1) Bug fixing #1 and #2
2) Stability test of the platform with wireless communication (>24hours)

General:
All source code are provided together with a description of the addions / modifications that were made.

Leave a Reply

Your email address will not be published. Required fields are marked *