STM32F429-Discovery 编译 uclinux

STM32F429 Discovery 编译 uclinux

1. 环境要求

1.1 硬件环境

  • STM32F429-Disc1 官方开发板
  • usb mini线
  • usb转串口线(TTL电平)

1.2 软件环境

  • Ubuntu 14.04 64位
  • STM32 ST-LINK Utility烧写工具

2. 安装交叉工具链

tar jxvf arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2
export PATH=$PATH:`pwd`/arm-2010q1/bin

$ arm-uclinuxeabi-gcc -v 会遇到以下问题
arm-uclinuxeabi-gcc: No such file or directory
The toolchain commands are made by 32bit program, and need 32bit running environment.
(My host OS is ubuntu 64bit)

$ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

安装交叉工具链测试正常如下:

lisongze@lisongze-ubuntu14:~/stm32f429_uclinux/stm32f429-linux-builder$ arm-uclinuxeabi-gcc -v
Using built-in specs.
Target: arm-uclinuxeabi
Configured with: /scratch/julian/2010q1-release-uclinux-lite/src/gcc-4.4-2010q1/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-uclinuxeabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='%{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --disable-shared --disable-lto --with-pkgversion='Sourcery G++ Lite 2010q1-189' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-uclinuxeabi/libc --with-build-sysroot=/scratch/julian/2010q1-release-uclinux-lite/install/arm-uclinuxeabi/libc --with-gmp=/scratch/julian/2010q1-release-uclinux-lite/obj/host-libs-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/2010q1-release-uclinux-lite/obj/host-libs-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/julian/2010q1-release-uclinux-lite/obj/host-libs-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/julian/2010q1-release-uclinux-lite/obj/host-libs-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/2010q1-release-uclinux-lite/install/arm-uclinuxeabi/bin --with-build-time-tools=/scratch/julian/2010q1-release-uclinux-lite/install/arm-uclinuxeabi/bin
Thread model: single
gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) 

3. 安装romfs工具

$ sudo apt-get install genromfs

4. stm32f429 linux download, build and install

4.1 下载源码

$ git clone http://github.com/jserv/stm32f429-linux-builder

或者

$ git clone http://github.com/lisongze2016/stm32f429-linux-builder

4.2 编译

$ cd stm32f429-linux-builder
$ make
$ make install

5. 烧写

5.1 用STM32 ST-LINK Utility烧写工具烧写:

addrbin编译生成路径
0x08000000u-boot.binout/uboot/u-boot.bin
0x08020000xipuImage.binout/kernel/arch/arm/boot/xipuImage.bin
0x08120000romfs.binout/romfs.bin

5.2 serial connections.

  • STM32 PC11 --> Cable connector Orange Txd(PC)
  • STM32 PC10 --> Cable connector Yellow Rxd(PC)

5.3 Terminal settings:

  • Baud rate: 115200
  • Data: 8 bit
  • Parity: none
  • Stop: 1 bit
  • Flow control: none

5.4 Booting console output.

U-Boot 2010.03-00003-g934021a (Feb 26 2020 - 22:18:29)

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:    738336 Bytes = 721 kB
   Load Address: 08020040
   Entry Point:  08020041
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Linux version 2.6.33-arm1 (lisongze@lisongze-ubuntu14) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) ) #1 Wed Feb 26 23:16:15 CST 2020
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=ttyS2,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: 6976k/6976k available, 192k 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 - 0x9000e000   (  16 kB)
      .text : 0x08028000 - 0x080c4000   ( 624 kB)
      .data : 0x90008000 - 0x90018460   (  66 kB)
Hierarchical RCU implementation.
NR_IRQS:90
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
Serial: STM32 USART driver
stm32serial.2: ttyS2 at MMIO 0x40004800 (irq = 39) is a STM32 USART Port
console [ttyS2] enabled
brd: module loaded
uclinux[mtd]: ROM probe address=0x8120000 size=0x59000
Creating 1 MTD partitions on "ROM":
0x000000000000-0x000000059000 : "ROMfs"
ARMv7-M VFP Extension supported
VFS: Mounted root (romfs filesystem) readonly on device 31:0.
Freeing init memory: 16K
starting pid 27, tty '/dev/ttyS2': '/bin/login -f root'
Welcome to
          ____ _  _
         /  __| ||_|                 
    _   _| |  | | _ ____  _   _  _  _ 
   | | | | |  | || |  _ \| | | |\ \/ /
   | |_| | |__| || | | | | |_| |/    \
   |  ___\____|_||_|_| |_|\____|\_/\_/
   | |
   |_|

For further information check:
http://www.uclinux.org/

Jan  1 00:00:01 login[27]: root login on 'ttyS2'
~ # ls
bin        etc        proc       root       sys        usr
dev        lib        ramfs.img  sbin       tmp        var
~ #  date
Thu Jan  1 00:00:52 UTC 1970
~ # 

5.5 lcd 显示如下:

stm32f429_display

6.参考链接

https://pantherpardus.blogspot.com/2016/04/stm32f429-discovery-on-uclinux.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: STM32是一种基于ARM Cortex-M处理器的微控制器,Linux是一种开源操作系统。STM32可以运行Linux操作系统,但需要在STM32上安装Linux内核并配置文件系统。使用STM32运行Linux操作系统需要具备一定的编程和系统管理知识。 ### 回答2: Linux STM32是针对ST公司的STM32系列MCU开发的一种开发环境。STM32系列是一款广泛使用的32位ARM Cortex-M微控制器,其特点是性能高、功耗低、集成度高、易用性强等。 使用Linux STM32,开发者可以利用Linux的强大功能来进行STM32 MCU的开发。首先,通过Linux的驱动程序可以轻松地对STM32系列MCU进行各种外设的控制,如GPIO、UART、SPI、I2C等。其次,Linux STM32提供了丰富的开源软件包,如uClinux、RT-Thread等,可以大大简化开发过程,提高开发效率。此外,Linux STM32还支持多线程和多进程的并发执行,方便开发者编写多任务应用程序。 通过使用Linux STM32,开发者可以利用Linux成熟的开发工具链,如GCC编译器、GDB调试器等,进行STM32 MCU的编译、调试工作。同时,Linux STM32还支持多种开发语言,如C、C++、Python等,灵活满足不同开发者的需求。 总的来说,Linux STM32是一个强大的开发平台,为开发者提供了丰富的资源和工具来简化STM32 MCU的开发工作。通过使用Linux STM32,开发者可以更加高效地开发出功能强大、稳定可靠的STM32应用程序。 ### 回答3: Linux是一种自由和开放源代码的操作系统,而STM32是一种由意法半导体(STMicroelectronics)推出的32位微控制器系列。下面我将使用300字回答关于Linux和STM32的相关内容。 Linux是一种跨平台的操作系统,可以运行在各种硬件设备上,包括个人电脑、服务器、嵌入式设备等。它具有高度的灵活性和可定制性,以及强大的稳定性和安全性。Linux操作系统提供了许多功能强大的工具和程序库,方便开发人员进行软件开发和调试工作。 STM32是一种流行的嵌入式系统芯片,广泛应用于各种嵌入式设备中,如家电、智能手机、汽车电子、医疗设备等。STM32系列微控制器提供了强大的计算和控制能力,以及丰富的外设接口和通信功能。开发人员可以使用C/C++等编程语言编写应用程序,并通过编译、下载和调试工具将程序烧录到STM32芯片中。 对于Linux和STM32的结合,开发人员可以利用Linux的强大的功能和丰富的工具生态系统来开发嵌入式应用程序。通过在Linux操作系统上运行嵌入式应用程序,可以实现对设备的控制和管理,以及与其他设备和网络的通信。开发人员可以使用Linux提供的的驱动程序和协议栈来实现与STM32芯片的通信和数据交换。 此外,利用STM32系列芯片的低功耗特性,可以有效地结合Linux操作系统来实现嵌入式设备的能耗优化。通过合理地利用Linux的电源管理功能,可以进一步降低设备的功耗,延长设备的使用时间。 综上所述,Linux和STM32的结合为开发嵌入式设备提供了一个强大的平台。开发人员可以充分利用Linux操作系统的功能和STM32系列芯片的性能,实现高效、稳定和安全的嵌入式应用程序的开发和部署。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值