[STM32F7]

新出的STM32F750成功运行Linux

[复制链接]
16748|46
手机看帖
扫描二维码
随时随地手机跟帖
不爱说话|  楼主 | 2018-12-4 21:57 | 显示全部楼层 |阅读模式
前段时间ST推出了Value Line的STM32F750和H750两个系列,看了一下选型表,F750有LQFP144封装,正好适合我的STM32 linux板子。
于是,双十一买了几片。同时,我对我的linux板做了小幅改版:将SPI Flash容量扩大到32MB并连接到F750的QSPI BANK1,添加了CAN收发器和接口,增加了两个I2C外设(温湿度传感器和气压传感器)。板子做回来后先焊了一片,调试过程还算比较顺利,现在u-boot和Linux都工作起来了,下面是系统启动log,F750速度还是相当快的(427.62 BogoMIPS,F429跑Linux只有35.84 BogoMIPS),QSPI的加载速度也很给力。下一步我准备多测试几种STM32外设的Linux driver,emcraft现在的SDK比两三年前多了不少外设驱动,可以都试试看。

U-Boot 2010.03 (Nov 26 2018 - 21:30:21)

CPU  : STM32F7 (Cortex-M7)
Freqs: SYSCLK=216MHz,HCLK=216MHz,PCLK1=54MHz,PCLK2=108MHz
Board: STM32F750 Rev 1.0, www.emcraft.com
DRAM:  64 MB
In:    serial
Out:   serial
Err:   serial
QSPI:  32 MB mapped at 0x90000000
Net:   miiphy_register done.
eth hw init done.
STM32_MAC
Hit any key to stop autoboot:  0
Booting from QSPI
## Booting kernel from Legacy Image at c0007fc0 ...
   Image Name:   Linux-4.2.0
   Image Type:   ARM Linux Multi-File Image (uncompressed)
   Data Size:    7496295 Bytes =  7.1 MB
   Load Address: c0008000
   Entry Point:  c0008001
   Contents:
      Image 0: 7471388 Bytes =  7.1 MB
      Image 1: 24895 Bytes = 24.3 kB
   Verifying Checksum ... OK
## Flattened Device Tree from multi component Image at C0007FC0
   Booting using the fdt at 0xc0728128
   Loading Multi-File Image ... OK
OK
WARNING: legacy format multi component image overwritten
   Loading Device Tree to c3ff6000, end c3fff13e ... OK

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.2.0 (hw@localhost.localdomain) (gcc version 4.4.1 (Sourcery G++ Lite 2010
q1-189) ) #90 Tue Dec 4 03:32:33 EST 2018
CPU: ARMv7-M [410fc271] revision 1 (ARMv7M), cr=00000000
CPU: WBA data cache, WBA instruction cache
Machine model: EmCraft Systems STM32F7-SOM board
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: stm32_platform=stm32f7-disco console=ttyS0,115200 panic=10 ip=169.25
4.1.10:169.254.1.2:::stm32f7-disco:eth0:off
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 56432K/65536K available (2523K kernel code, 181K rwdata, 588K rodata, 4000K init,
111K bss, 9104K reserved, 0K cma-reserved)
Virtual kernel memory layout:
    vector  : 0x00000000 - 0x00001000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0x00000000 - 0xffffffff   (4095 MB)
    lowmem  : 0xc0000000 - 0xc4000000   (  64 MB)
      .text : 0xc0008000 - 0xc0312000   (3112 kB)
      .init : 0xc0312000 - 0xc06fa000   (4000 kB)
      .data : 0xc06fa000 - 0xc07277c0   ( 182 kB)
       .bss : 0xc072811c - 0xc0743e84   ( 112 kB)
NR_IRQS:16 nr_irqs:16 16
/interrupt-controller@40013c00: 24 External IRQs detected
clocksource: arm_system_timer: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 27651335
8 ns
ARM System timer initialized as clocksource
/soc/timer@40000000: STM32 clockevent driver initialized (32 bits)
sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns
Calibrating delay loop... 427.62 BogoMIPS (lpj=2138112)
pid_max: default: 4096 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
devtmpfs: initialized
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275
0000 ns
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
stm32-pinctrl pin-controller: nbanks = 11
stm32-pinctrl pin-controller: nfunctions = 20
stm32-pinctrl pin-controller: ngroups = 23
stm32-pinctrl pin-controller: GPIOA bank added.
stm32-pinctrl pin-controller: GPIOB bank added.
stm32-pinctrl pin-controller: GPIOC bank added.
stm32-pinctrl pin-controller: GPIOD bank added.
stm32-pinctrl pin-controller: GPIOE bank added.
stm32-pinctrl pin-controller: GPIOF bank added.
stm32-pinctrl pin-controller: GPIOG bank added.
stm32-pinctrl pin-controller: GPIOH bank added.
stm32-pinctrl pin-controller: GPIOI bank added.
stm32-pinctrl pin-controller: GPIOJ bank added.
stm32-pinctrl pin-controller: GPIOK bank added.
stm32-pinctrl pin-controller: Function[0         name:i2c_1,    groups:1]
stm32-pinctrl pin-controller: Function[1         name:i2c_2,    groups:1]
stm32-pinctrl pin-controller: Function[2         name:i2c_3,    groups:1]
stm32-pinctrl pin-controller: Function[3         name:mac,      groups:2]
stm32-pinctrl pin-controller: Function[4         name:sdio,     groups:1]
stm32-pinctrl pin-controller: Function[5         name:spi_2,    groups:1]
stm32-pinctrl pin-controller: Function[6         name:spi_4,    groups:1]
stm32-pinctrl pin-controller: Function[7         name:spi_5,    groups:1]
stm32-pinctrl pin-controller: Function[8         name:usart1,   groups:1]
stm32-pinctrl pin-controller: Function[9         name:usart6,   groups:1]
stm32-pinctrl pin-controller: Function[10        name:usart7,   groups:1]
stm32-pinctrl pin-controller: Function[11        name:usb_fs,   groups:1]
stm32-pinctrl pin-controller: Function[12        name:usb_hs,   groups:1]
stm32-pinctrl pin-controller: Function[13        name:can_1,    groups:1]
stm32-pinctrl pin-controller: Function[14        name:adc1_in0_pin,     groups:1]
stm32-pinctrl pin-controller: Function[15        name:dac_out2_pin,     groups:1]
stm32-pinctrl pin-controller: Function[16        name:ltdc,     groups:1]
stm32-pinctrl pin-controller: Function[17        name:sai_2,    groups:1]
stm32-pinctrl pin-controller: Function[18        name:i2c_4,    groups:1]
stm32-pinctrl pin-controller: Function[19        name:gpio,     groups:3]
stm32-dma 40026000.dma: STM32 DMA driver registered
stm32-dma 40026400.dma: STM32 DMA driver registered
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
soc:phy_hs supply vcc not found, using dummy regulator
soc:phy_fs supply vcc not found, using dummy regulator
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
Advanced Linux Sound Architecture Driver Initialized.
Bluetooth: Core ver 2.20
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
clocksource: Switched to clocksource arm_system_timer
NET: Registered protocol family 2
TCP established hash table entries: 1024 (order: 0, 4096 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Power Management for STM32
futex hash table entries: 16 (order: -5, 192 bytes)
jffs2: version 2.2. (NAND) (SUMMARY)  漏 2001-2006 Red Hat, Inc.
fuse init (API version 7.23)
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
io scheduler noop registered
io scheduler cfq registered (default)
stm32-pinctrl pin-controller: maps: function gpio group pwms num 2
stm32-pwm pwm0: basing on TIM3.1(x16)
stm32-pinctrl pin-controller: maps: function ltdc group ltdc-0 num 29
stm32_lcdfb 40016800.ltdc: fb0: fb device registered successfully
STM32 USART driver initialized
stm32-pinctrl pin-controller: maps: function usart1 group usart1-0 num 3
40011000.serial: ttyS0 at MMIO 0x40011000 (irq = 34, base_baud = 6750000) is a stm32-usar
t
console [ttyS0] enabled
stm32-pinctrl pin-controller: maps: function usart6 group usart6-0 num 3
40011400.serial: ttyS5 at MMIO 0x40011400 (irq = 35, base_baud = 6750000) is a stm32-usar
t
nbd: registered device at major 43
stm32-pinctrl pin-controller: maps: function dac_out2_pin group dac-0 num 2
stm32_dac 40007400.dac: dac1: no timer assigned, DMA functionality is not available
stm32_dac 40007400.dac: created 1 character devices with MAJOR 248
2 ofpart partitions found on MTD device physmap-stm-flash.0
Creating 2 MTD partitions on "physmap-stm-flash.0":
0x000000000000-0x000000020000 : "stm_flash_uboot"
0x000000040000-0x000000100000 : "stm_flash_unused"
stm32-pinctrl pin-controller: maps: function spi_5 group spi_5-0 num 4
stm32-spi 40015000.spi: SPI Controller 4 at 40015000,irq=38,hz=108000000
CAN device driver interface
stm32-pinctrl pin-controller: maps: function can_1 group can_1-0 num 3
stm32-can 40006400.can: device registered (reg=40006400, irq=31)
stm32-pinctrl pin-controller: maps: function mac group mac_rmii num 10
stmmac - user ID: 0x10, Synopsys ID: 0x35
Ring mode enabled
DMA HW capability register supported
Enhanced/Alternate descriptors
        Enabled extended descriptors
RX Checksum Offload Engine supported (type 2)
TX Checksum insertion supported
Wake-Up On Lan supported
Enable RX Mitigation via HW Watchdog Timer
stm32-dwmac 40028000.ethernet eth0: No MDIO subnode found
libphy: stmmac: probed
eth0: PHY ID 0007c0f1 at 0 IRQ POLL (stmmac-0:00) active
PPP generic driver version 2.4.2
PPP BSD Compression module registered
PPP Deflate Compression module registered
usbcore: registered new interface driver rt2800usb
stm32-pinctrl pin-controller: maps: function usb_hs group usb_hs-0 num 3
dwc2 40040000.usb: DWC OTG Controller
dwc2 40040000.usb: new USB bus registered, assigned bus number 1
dwc2 40040000.usb: irq 56, io mem 0x00000000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: DWC OTG Controller
usb usb1: Manufacturer: Linux 4.2.0 dwc2_hsotg
usb usb1: SerialNumber: 40040000.usb
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
stm32-pinctrl pin-controller: maps: function usb_fs group usb_fs-0 num 3
50000000.usb supply vusb_d not found, using dummy regulator
50000000.usb supply vusb_a not found, using dummy regulator
dwc2 50000000.usb: EPs: 6, dedicated fifos, 512 entries in SPRAM
dwc2 50000000.usb: DCFG=0x08200000, DCTL=0x00000002, DIEPMSK=0000000b
dwc2 50000000.usb: GAHBCFG=0x00000000, GHWCFG1=0x00000000
dwc2 50000000.usb: GRXFSIZ=0x000000a0, GNPTXFSIZ=0x004000a0
dwc2 50000000.usb: DPTx[1] FSize=32, StAddr=0x000000e0
dwc2 50000000.usb: DPTx[2] FSize=64, StAddr=0x00000100
dwc2 50000000.usb: DPTx[3] FSize=512, StAddr=0x00000800
dwc2 50000000.usb: DPTx[4] FSize=512, StAddr=0x00000a00
dwc2 50000000.usb: DPTx[5] FSize=512, StAddr=0x00000c00
dwc2 50000000.usb: ep0-in: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep0-out: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep1-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep1-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep2-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep2-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep3-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep3-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep4-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep4-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep5-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: ep5-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb
dwc2 50000000.usb: DVBUSDIS=0x000017d7, DVBUSPULSE=000005b8
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver uas
usbcore: registered new interface driver usb-storage
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
dwc2 50000000.usb: bound driver g_serial
i2c /dev entries driver
stm32-pinctrl pin-controller: maps: function i2c_4 group i2c_4-0 num 3
bmp085 3-0077: Successfully initialized bmp085!
stm32f7-i2c 40006000.i2c: I2C Controller i2c-3 at 40006000,irq=58
Driver for 1-wire Dallas network protocol.
usbcore: registered new interface driver btusb
stm32-pinctrl pin-controller: maps: function sdio group sdio-0 num 7
mmci-pl18x 40012c00.sdi: Got CD GPIO
mmci-pl18x 40012c00.sdi: mmc0: PL180 manf 80 rev4 at 0x40012c00 irq 37,0 (pio)
stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 3 - was already request
ed
mmci-pl18x 40012c00.sdi: DMA channels RX dma1chan3, TX dma1chan3
stm32_gpio_to_irq: Event line 3 now points to fire interrupts from bank G
stm32-pinctrl pin-controller: maps: function gpio group outs num 2
hidraw: raw HID events driver (C) Jiri Kosina
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
stm32-pinctrl pin-controller: maps: function adc1_in0_pin group adc1-0 num 2
stm32f4-adc 40012000.adc: registered
stm32-pinctrl pin-controller: maps: function sai_2 group sai_2-0 num 5
stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 4 - was already request
ed
stm32-asoc-card sound: failed to find codec platform device
stm32-asoc-card: probe of sound failed with error -22
NET: Registered protocol family 17
can: controller area network core (rev 20120528 abi 9)
NET: Registered protocol family 29
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
hctosys: unable to open rtc device (rtc0)
vmmc: disabling
ALSA device list:
  No soundcards found.
Freeing unused kernel memory: 4000K (c0312000 - c06fa000)
init started: BusyBox v1.24.2 (2018-11-22 20:35:58 EST)
/ # amixer: Mixer attach default error: No such file or directory
stm32-dwmac 40028000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx

/ # free
             total       used       free     shared    buffers     cached
Mem:         60432       8140      52292          0          0       4792
-/+ buffers/cache:       3348      57084
/ #


dongnanxibei| | 2018-12-4 22:50 | 显示全部楼层
不会玩Linux啊,楼主给个攻略啊,怎么在单片机上玩这个

使用特权

评论回复
mmuuss586| | 2018-12-4 22:52 | 显示全部楼层
牛人

使用特权

评论回复
不爱说话|  楼主 | 2018-12-5 09:30 | 显示全部楼层
dongnanxibei 发表于 2018-12-4 22:50
不会玩Linux啊,楼主给个攻略啊,怎么在单片机上玩这个

先用ST Flash Loader或者ST-LINK把u-boot烧到STM32的片内flash。
然后用串口和网线连接板子和电脑,上电,u-boot转起来有命令行界面后就好办了,下载,烧写linux,调试程序就都可以做了,仿真器调试器都不需要了。

使用特权

评论回复
xynsy123| | 2018-12-5 11:16 | 显示全部楼层
M系列没有内存管理单元MMU,这个跑的是ucLinux么?

使用特权

评论回复
不爱说话|  楼主 | 2018-12-5 11:21 | 显示全部楼层
xynsy123 发表于 2018-12-5 11:16
M系列没有内存管理单元MMU,这个跑的是ucLinux么?

总有人问这个问题,我再根据我所了解的回答一遍。

uClinux是十几年前的东西了。那时的Linux内核不支持没有MMU的处理器,国外有大神把Linux代码改写重新实现了一遍,以适应无MMU的处理器(那时主要是ARM7),这个版本的Linux起名叫做uClinux并发布了(现在www.uclinux.org还有)。
我用的emcraft linux是在Linux4.2内核基础上增加了更适应Cortex-M的支持(比如增加STM32外设驱动等),你可以把它也叫做uClinux,但是和十几年前的已经不是一个东西了,唯一相同点就是都在没有MMU的处理器上运行。

现在Linux主线内核直接支持no-MMU选项,感兴趣的可以上网下载linux内核源码看看。所以不用单独为了单片机再出一个分支了。

使用特权

评论回复
wangjianf5| | 2018-12-5 12:45 | 显示全部楼层
强,真强

使用特权

评论回复
tlled| | 2018-12-5 15:06 | 显示全部楼层
源码是在哪里下载的   

使用特权

评论回复
zdx818| | 2018-12-5 15:29 | 显示全部楼层
楼主厉害啊,仰望

使用特权

评论回复
caijie001| | 2018-12-5 16:53 | 显示全部楼层
6666666666

使用特权

评论回复
colin2135| | 2018-12-5 20:25 | 显示全部楼层
不爱说话 发表于 2018-12-5 11:21
总有人问这个问题,我再根据我所了解的回答一遍。

uClinux是十几年前的东西了。那时的Linux内核不支持没 ...

谢谢分享,长见识了,希望楼主多分享些经验。

使用特权

评论回复
dirtwillfly| | 2018-12-5 21:00 | 显示全部楼层
不爱说话 发表于 2018-12-5 11:21
总有人问这个问题,我再根据我所了解的回答一遍。

uClinux是十几年前的东西了。那时的Linux内核不支持没 ...

感谢讲解

使用特权

评论回复
wenleileilei| | 2018-12-5 21:16 | 显示全部楼层
只能仰望

使用特权

评论回复
千古无痕| | 2018-12-5 22:21 | 显示全部楼层
围观大佬

使用特权

评论回复
zhangmangui| | 2018-12-5 23:06 | 显示全部楼层
牛    我准备在zynq上跑ubuntu

使用特权

评论回复
评论
申小林一号 2018-12-6 12:27 回复TA
你用的ZYNQ是哪个系列的?带实时核么? 
dongnanxibei| | 2018-12-5 23:48 | 显示全部楼层
多谢楼主给我答疑解惑。懂了,第一次听说这个系统。我去看看

使用特权

评论回复
dongnanxibei| | 2018-12-5 23:50 | 显示全部楼层
https://emcraft.com/products/503#software

STM32F746G发现板
Linux BSP发布材料
Emcraft支持Linux(uClinux)作为STM32F7 Discovery板的操作系统。此页面提供STM32F7 Discovery板Linux BSP(板级支持包)和Linux软件开发环境的发行文件。

使用特权

评论回复
JLennon| | 2018-12-6 00:04 | 显示全部楼层
不爱说话 发表于 2018-12-5 11:21
总有人问这个问题,我再根据我所了解的回答一遍。

uClinux是十几年前的东西了。那时的Linux内核不支持没 ...

又学到了一点新知识。

使用特权

评论回复
xch| | 2018-12-6 07:33 | 显示全部楼层
系统占用多少存储资源?

使用特权

评论回复
lihui567| | 2018-12-6 08:48 | 显示全部楼层
不爱说话 发表于 2018-12-5 11:21
总有人问这个问题,我再根据我所了解的回答一遍。

uClinux是十几年前的东西了。那时的Linux内核不支持没 ...

ucLinux,这个问题我也想咨询,好多都说stm32只能跑这个,那这个和实际运行的linux就是没有mmu的区别吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:飞翼电子工作室 http://shop68798667.taobao.com/

114

主题

882

帖子

34

粉丝