Willkommen in der Mikrocontroller.net Artikelsammlung. Alle Artikel hier können nach dem Wiki-Prinzip von jedem bearbeitet werden. Zur Hauptseite der Artikelsammlung
Linux auf STM32
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Für dem Einsatz von Linux bzw. ucLinux eignen sich derzeit inbesondere folgende HW-Platformen:
Folgendes youtube video zeigt beim STM32F429I Discovery die Verwendung des Displays mit touch und der seriellen Schnittstelle.
Dieses Linux-Image kann z.B. unter einem Debian (Jessie) Linux-Host wie folgt erstellt und auf das Board installiert werden [1]:
- clone repository
- git clone https://github.com/AdrianHuang/stm32f429-linux-builder
- cd stm32f429-linux-builder/
- git checkout MovingTux
- cd ..
- install toolchain
- wget http://www.codesourcery.com/sgpp/lite/arm/portal/package6503/public/arm-uclinuxeabi/arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2
- sudo tar -xjf arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2
- sudo apt-get install genromfs
- install openocd
- git clone http://git.code.sf.net/p/openocd/code openocd
- cd openocd
- ./bootstrap
- ./configure --prefix=/usr/local --enable-stlink
- echo -e "all:\ninstall:" > doc/Makefile
- make
- sudo make install
- cd ..
- build linux & install on target
- export PATH=`pwd`/arm-2010q1/bin:$PATH
- cd stm32f429-linux-builder/
- make
- sudo env "PATH=$PATH" make install
- cd ..
Um die serielle Konsole zu verwenden benötigt man z.B. noch einen RS232(TTL)/USB Wandler. Dieser wird mit 3 Pins an PA9, PA10 und GND für die Verwendung des USART1 angeschlossen. Ändert man noch in 3 Dateien den seriellen Port von USART3 auf USART1 erhält man nach dem Start (bootet unter 1s) folgendes Bootlog:
U-Boot 2010.03-00003-g934021a-dirty (Nov 06 2015 - 19:19:03) CPU : STM32F4 (Cortex-M4) Freqs: SYSCLK=180MHz,HCLK=180MHz,PCLK1=45MHz,PCLK2=90MHz Board: STM32F429I-DISCOVERY board,Rev 1.0 DRAM: 8 MB Using default environment Hit any key to stop autoboot: 0 ## Booting kernel from Legacy Image at 08020000 ... Image Name: Linux-2.6.33-arm1 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 764256 Bytes = 746.3 kB Load Address: 08020040 Entry Point: 08020041 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Linux version 2.6.33-arm1 (user@debian) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) ) #1 Fri Nov 6 19:21:05 CET 2015 CPU: ARMv7-M Processor [410fc241] revision 1 (ARMv7M) CPU: NO data cache, NO instruction cache Machine: STMicro STM32 Ignoring unrecognised tag 0x54410008 Built 1 zonelists in Zone order, mobility grouping off. Total pages: 1778 Kernel command line: stm32_platform=stm32429-disco mem=7M console=ttyS0,115200n8 consoleblank=0 root=/dev/mtdblock0 rdinit=/sbin/init video=vfb:enable,fbmem:0x90700000,fbsize:0x100000 PID hash table entries: 32 (order: -5, 128 bytes) Dentry cache hash table entries: 1024 (order: 0, 4096 bytes) Inode-cache hash table entries: 1024 (order: 0, 4096 bytes) Memory: 7MB = 7MB total Memory: 6972k/6972k available, 196k reserved, 0K highmem Virtual kernel memory layout: vector : 0x00000000 - 0x00001000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) vmalloc : 0x00000000 - 0xffffffff (4095 MB) lowmem : 0x90000000 - 0x90700000 ( 7 MB) modules : 0x90000000 - 0x90800000 ( 8 MB) .init : 0x9000a000 - 0x9000c000 ( 8 kB) .text : 0x08029000 - 0x080ca000 ( 644 kB) .data : 0x90008000 - 0x900189a0 ( 67 kB) Hierarchical RCU implementation. NR_IRQS:99 Console: colour dummy device 80x30 Calibrating delay loop... 168.34 BogoMIPS (lpj=841728) Mount-cache hash table entries: 512 bio: create slab <bio-0> at 0 Switching to clocksource cm3-systick ROMFS MTD (C) 2007 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered (default) Console: switching to colour frame buffer device 60x53 fb0: Virtual frame buffer device, using 1024K of video memory STM32 Hardware RNG initialized Serial: STM32 USART driver stm32serial.0: ttyS0 at MMIO 0x40011000 (irq = 37) is a STM32 USART Port console [ttyS0] enabled brd: module loaded uclinux[mtd]: ROM probe address=0x8120000 size=0x59000 Creating 1 MTD partitions on "ROM": 0x000000000000-0x000000059000 : "ROMfs" stmpe 2-0041: stmpe811 detected, chip id: 0x811 input: stmpe-ts as /devices/virtual/input/input0 i2c_stm32 i2c_stm32.2: I2C Controller i2c-2 at 40005c00,irq=72 ARMv7-M VFP Extension supported VFS: Mounted root (romfs filesystem) readonly on device 31:0. Freeing init memory: 8K starting pid 29, tty '/dev/ttyS0': '/bin/login -f root' Welcome to ____ _ _ / __| ||_| _ _| | | | _ ____ _ _ _ _ | | | | | | || | _ \| | | |\ \/ / | |_| | |__| || | | | | |_| |/ \ | ___\____|_||_|_| |_|\____|\_/\_/ | | |_| For further information check: http://www.uclinux.org/ Jan 1 00:00:01 login[29]: root login on 'ttyS0' ~ #