11.2-RELEASE efi RTC support. arm64

schorsch_76

FreeBSD Fanboy
In den Releasenotes/Errata [1] steht
  • [2017-07-25] FreeBSD/arm64 currently lacks EFI real-time clock (RTC) support, which may cause the system to boot with the wrong time set.
    As a workaround, either enable ntpdate(8) or include ntpd_sync_on_start="YES" in rc.conf(5).

Ähm... FreeBSD/arm64? Efi? :confused::confused::confused: arm64 das ist doch aarch64, aber EFI support unter arm64? Ist das evtl Raspi 3? Was gibt es da noch für arm64 Boards?

[1] https://www.freebsd.org/releases/11.2R/errata.html#errata
 
Ja, die sozusagen "standardisierte" arm64-Plattform für richtige Computer ist dem bei Bastelkiddies aus unverständlichen da meist ideologischen Gründen so verhassten x86 sehr ähnlich. Gebootet wird UEFI, die Hardwarekonfiguration erfolgt per ACPI. Verbaut sind meist Standardkomponenten, also normale NVMe-Controller, Server-NICs und so weiter. Das ist im weiteren Sinne ein ganz normaler Server oder PC, nur eben mit einer ARM- statt x86-CPU. Der große Vorteil liegt darin, dass Betriebssysteme allenfalls kleinere Anpassungen brauchen und nicht, wie bei den ganzen auf irgendwelchen rottigen Smartphone-SoC basierenden Bastelboards, jedes mal aufwändig auf die jeweilige Hardware portiert werden müssen.

Das derzeit beste Board für FreeBSD/arm64 ist aber trotzdem das Raspberry 3B ohne +. Einfach weil sehr günstig und verfügbar ist. Alle Optionen auf standardisierter Hardware sind wesentlich teurer, alle anderen Bastelboards deutlich schlechter unterstützt. Das RPi 3 bootet über eine angepasste UEFI-Implementierung, genauer gesagt Firmware -> U-Boot UEFI -> FreeBSD UEFI-Loader -> Kernel. Die Hardwarekonfiguration erfolgt per FDT. Die alten Cortex A-53 Kerne sind unter dem Strich gesehen Krüppel, aber für den Preis kann man da nicht meckern. Eine aktuelle dmesg:

Code:
KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2018 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.0-CURRENT #0 r335700: Wed Jun 27 14:57:27 CEST 2018
    yamagi@pine.home.yamagi.org:/usr/home/yamagi/raspberry/obj/usr/home/yamagi/raspberry/src/arm64.aarch64/sys/GENERIC-NODEBUG-MMCCAM arm64
FreeBSD clang version 6.0.0 (tags/RELEASE_600/final 326565) (based on LLVM 6.0.0)
VT: init without driver.
Starting CPU 1 (1)
Starting CPU 2 (2)
Starting CPU 3 (3)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
random: unblocking device.
random: entropy device external interface
MAP 8000000 mode 2 pages 8
MAP 39f36000 mode 2 pages 1
MAP 3b3aa000 mode 2 pages 1
MAP 3f100000 mode 1 pages 1
kbd0 at kbdmux0
ofwbus0: <Open Firmware Device Tree>
simplebus0: <Flattened device tree simple bus> on ofwbus0
ofw_clkbus0: <OFW clocks bus> on ofwbus0
clk_fixed0: <Fixed clock> on ofw_clkbus0
clk_fixed1: <Fixed clock> on ofw_clkbus0
regfix0: <Fixed Regulator> on ofwbus0
regfix1: <Fixed Regulator> on ofwbus0
psci0: <ARM Power State Co-ordination Interface Driver> on ofwbus0
local_intc0: <BCM2836 Interrupt Controller> mem 0x40000000-0x400000ff on simplebus0
intc0: <BCM2835 Interrupt Controller> mem 0x7e00b200-0x7e00b3ff irq 20 on simplebus0
gpio0: <BCM2708/2835 GPIO controller> mem 0x7e200000-0x7e2000b3 irq 22,23 on simplebus0
gpiobus0: <OFW GPIO bus> on gpio0
generic_timer0: <ARMv7 Generic Timer> irq 0,1,2,3 on ofwbus0
Timecounter "ARM MPCore Timecounter" frequency 19200000 Hz quality 1000
Event timer "ARM MPCore Eventtimer" frequency 19200000 Hz quality 1000
bcm_dma0: <BCM2835 DMA Controller> mem 0x7e007000-0x7e007eff irq 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 on simplebus0
bcmwd0: <BCM2708/2835 Watchdog> mem 0x7e100000-0x7e100027 on simplebus0
bcmrng0: <Broadcom BCM2835 RNG> mem 0x7e104000-0x7e10400f on simplebus0
mbox0: <BCM2835 VideoCore Mailbox> mem 0x7e00b880-0x7e00b8bf irq 21 on simplebus0
gpioc0: <GPIO controller> on gpio0
uart0: <PrimeCell UART (PL011)> mem 0x7e201000-0x7e201fff irq 24 on simplebus0
uart0: console (115200,n,8,1)
spi0: <BCM2708/2835 SPI controller> mem 0x7e204000-0x7e204fff irq 26 on simplebus0
spibus0: <OFW SPI bus> on spi0
spibus0: <unknown card> at cs 0 mode 0
spibus0: <unknown card> at cs 1 mode 0
iichb0: <BCM2708/2835 BSC controller> mem 0x7e804000-0x7e804fff irq 37 on simplebus0
bcm283x_dwcotg0: <DWC OTG 2.0 integrated USB controller (bcm283x)> mem 0x7e980000-0x7e98ffff,0x7e006000-0x7e006fff irq 43,44 on simplebus0
usbus0 on bcm283x_dwcotg0
sdhci_bcm0: <Broadcom 2708 SDHCI controller> mem 0x7e300000-0x7e3000ff irq 46 on simplebus0
mmc_alloc_device()
fb0: <BCM2835 VT framebuffer driver> on simplebus0
fbd0 on fb0
VT: initialize with new VT driver "fb".
fb0: 1824x984(1824x984@0,0) 24bpp
fb0: fbswap: 1, pitch 5472, base 0x3e6cd000, screen_size 5428224
pmu0: <Performance Monitoring Unit> irq 50 on simplebus0
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
bcm2835_cpufreq0: <CPU Frequency Control> on cpu0
cpu1: <Open Firmware CPU> on cpulist0
cpu2: <Open Firmware CPU> on cpulist0
cpu3: <Open Firmware CPU> on cpulist0
gpioled0: <GPIO LEDs> on ofwbus0
gpioled0: <led0> failed to map pin
gpioled0: <led1> failed to map pin
cryptosoft0: <software crypto>
Timecounters tick every 1.000 msec
iicbus0: <OFW I2C bus> on iichb0
iic0: <I2C generic I/O> on iicbus0
mmc_dev_async(async_code=0x20, path_id=0, target_id=0, lun_id=0
Got AC_PATH_REGISTERED -- whatever...
mmc_dev_async(async_code=0x20, path_id=0, target_id=ffffffff, lun_id=ffffffff
usbus0: 480Mbps High Speed USB v2.0
(noperiph:sdhci_slot0:0:0:0):  Set up the mmcprobe device...
sdhci_bcm0-slot0: Clock => 0
sdhci_bcm0-slot0: VDD => 21
sdhci_bcm0-slot0: ugen0.1: <DWCOTG OTG Root HUB> at usbus0
uhub0: <DWCOTG OTG Root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0
mbox0: mbox response error
bcm2835_cpufreq0: can't get clock rate (id=3)
CS => 0
sdhci_bcm0-slot0: Bus width => 0
sdhci_bcm0-slot0: Power mode => 1
sdhci_bcm0-slot0: Bus mode => 1
sdhci_bcm0-slot0: sdhci_cam_update_ios: power_mode=1, clk=0, bus_width=0, timing=0
bcm2835_cpufreq0: Boot settings:
bcm2835_cpufreq0: current ARM -999MHz, Core 250MHz, SDRAM 400MHz, Turbo OFF
bcm2835_cpufreq0: max/min ARM 1200/600MHz, Core 400/250MHz, SDRAM 450/400MHz
bcm2835_cpufreq0: current Core 1200mV, SDRAM_C 1200mV, SDRAM_I 1200mV, SDRAM_P 1200mV
bcm2835_cpufreq0: max/min Core 1287/1200mV, SDRAM_C 1200/1200mV, SDRAM_I 1200/1200mV, SDRAM_P 1200/1200mV
bcm2835_cpufreq0: Temperature 40.2C
sdhci_bcm0-slot0: Clock => 400000
sdhci_bcm0-slot0: Power mode => 2
sdhci_bcm0-slot0: Timing => 0
sdhci_bcm0-slot0: sdhci_cam_update_ios: power_mode=2, clk=400000, bus_width=0, timing=0
uhub0: 1 port with 1 removable, self powered
sdhci_bcm0-slot0: CS => 1
sdhci_bcm0-slot0: sdhci_cam_update_ios: power_mode=2, clk=400000, bus_width=0, timing=0
Release APs...Starting completion of PROBE_RESET
done
Trying to mount root from ufs:/dev/sdda0s2a [rw]...
mmc_probedone: remaining freezecnt 1
Root mount waiting for:mmc_probedone: remaining freezecnt 1
 usbus0CPU  0: ARM Cortex-A53 r0p4
mmc_probedone: remaining freezecnt 1
 affinity:mmc_probedone: remaining freezecnt 1
  0mmc_probedone: remaining freezecnt 1

 Instruction Set Attributes 0 = <mmc_probedone: remaining freezecnt 1
CRC32mmc_probedone: remaining freezecnt 1
>
mmc_probedone: remaining freezecnt 1
 Instruction Set Attributes 1 = <mmc_probedone: remaining freezecnt 1
>
         Processor Features 0 = <AdvSIMDmmc_probedone: remaining freezecnt 1
,Float,EL3 32,EL2 32,EL1 32,EL0 32>
         Processor Features 1 = <0>
mmc_probedone: remaining freezecnt 1
      Memory Model Features 0 = <mmc_probedone: remaining freezecnt 1
4k Granulemmc_probedone: remaining freezecnt 1
,64k Granule,MixedEndiansdhci_bcm0-slot0: ,S/NS MemBus mode => 2
,16bit ASIDsdhci_bcm0-slot0: ,1TB PAsdhci_cam_update_ios: power_mode=2, clk=400000, bus_width=0, timing=0
>
      Memory Model Features 1 = <mmc_probedone: remaining freezecnt 0
>
      Memory Model Features 2 = <32b CCIDX,48b VAmmc_dev_async(async_code=0x80, path_id=0, target_id=0, lun_id=0
>
             Debug Features 0 = <2 CTX BreakpointsGot AC_FOUND_DEVICE -- whatever...
,4 Watchpoints,6 Breakpoints,PMUv3,Debug v8>
             Debug Features 1 = <0>
sdhci_bcm0-slot0:          Auxiliary Features 0 = <0>
Timing => 1
         Auxiliary Features 1 = <0>
sdhci_bcm0-slot0: CPU  1: ARM Cortex-A53 r0p4sdhci_cam_update_ios: power_mode=2, clk=400000, bus_width=0, timing=1
 affinity:sdhci_bcm0-slot0:   1Clock => 50000000

CPU  2: ARM Cortex-A53 r0p4sdhci_bcm0-slot0:  affinity:sdhci_cam_update_ios: power_mode=2, clk=50000000, bus_width=0, timing=1
  2
CPU  3: ARM Cortex-A53 r0p4sdhci_bcm0-slot0:  affinity:  3
Bus width => 2
sdhci_bcm0-slot0: sdhci_cam_update_ios: power_mode=2, clk=50000000, bus_width=2, timing=1
sdda0 at sdhci_slot0 bus 0 scbus0 target 0 lun 0
sdda0: Relative addr: 00000001
Card features: <Memory High-Capacity SD2.0-Conditions >
Card memory OCR: 40ff8000
sdda0: Serial Number 00000B8
XPT info: CLK 2FAF080, ...
sdda0: SDHC 00000 1.0 SN 00000B8F MFG 10/2017 by 158 BE
Root mount waiting for: usbus0ugen0.2: <vendor 0x0424 product 0x9514> at usbus0

uhub1 on uhub0
uhub1: <vendor 0x0424 product 0x9514, class 9/0, rev 2.00/2.00, addr 2> on usbus0
uhub1: MTT enabled
uhub1: 5 ports with 4 removable, self powered
Root mount waiting for: usbus0
ugen0.3: <vendor 0x0424 product 0xec00> at usbus0
smsc0 on uhub1
smsc0: <vendor 0x0424 product 0xec00, rev 2.00/2.00, addr 3> on usbus0
mountroot: waiting for device /dev/sdda0s2a...
smsc0: chip 0xec00, rev. 0002
miibus0: <MII bus> on smsc0
smscphy0: <SMC LAN8700 10/100 interface> PHY 1 on miibus0
smscphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, autoWarning: no time-of-day clock registered, 
ue0: <USB Ethernet> on smsc0
system time will not be set accurately
ue0: Ethernet address: b8:27:eb:83:59:50
lo0: link state changed to UP
smsc0: chip 0xec00, rev. 0002
ue0: link state changed to DOWN
ue0: link state changed to UP
Das ist ein angepasster Kernel ohne Debugging und mit MMCCAM. Letzteres macht Zugriffe auf die MicroSD-Karte deutlich schneller.
 
@Yamagi: Das ist ja cool! Hab ich daheim so einen Pi3. Werde das mal am Wochenende ausprobieren :)
Wusste gar nicht, dass es ein U-Boot UEFI gibt :apaul:

Unter Linux hab ich auf dem Pi auch schon ein 64Bit Kernel und Userland gehabt. Warum meinst du dass die Cortex A53 Krüppel sind? Ich dachte Cortex A53 == Cortex A53. Ok, ich weiß dass es noch IP Cores gibt die der Hersteller dazu basteln kann.
 
Warum meinst du dass die Cortex A53 Krüppel sind? Ich dachte Cortex A53 == Cortex A53. Ok, ich weiß dass es noch IP Cores gibt die der Hersteller dazu basteln kann.
Naja, es kommt natürlich auf die Sichtweise drauf an und es ist bei modernen CPUs immer schwer ihre Leistung zu beurteilen, ohne das Power- und Abwärme-Budget zu beachten. Und beides ist bei dem RPi 3 ja doch sehr gering. Trotzdem. Die vier Cortex-A53 Kerne mit 1200MHz sehen schon gegen den Bobcat Dualcore mit 1GHz im PC Engines APU1 kein Land. Das APU ist deutlich schneller, bei einem einfachen und vielleicht nicht ganz aussagekräftigen Compile-Benchmark etwa um Faktor 3. Und das bei einem vergleichbaren Stromverbrauch. Der Celeron N3150 mit 4x 1,6GHz im meinem HTPC liegt auch in der Stromverbrauchsklasse und ist noch mal ein ganz anderes Kaliber... Interessant wäre daher ein ein ARM-Board mit deutlich stärkeren Kernen. Aber die bezahlbaren Boards mit Cortex-A72 haben durchgehend krumme litteBIG-Konfigurationen und sind mit Blobs verseucht, daher schon unter Linux gebastel. Und die wesentlich potenteren Cavium ThunderX bewegen sich weit jenseits der 1000€ Marke. Und das ist es nicht wert. Aber mal abwarten, es wird ja langsam.
 
Man darf auch nicht vergessen, dass der Pi3 ohne Kühlung nach kurzer Zeit Last sofort am Drosseln ist. Diese kleinen passiv-Kühler, die bei den Sets immer dabei sind, helfen hier überhaupt nicht und sind mehr Placebo.

Ordentlich gekühlt hat so ein Pi3 auch mehr Leistung. Aber ja, "schnell" ist trotzdem was anderes. Man darf ja auch nicht vergessen, dass der Pi3 im 40nm Verfahren produziert wird. Ein Celeron N3150 liegt hier im 14nm Verfahren vor. Da sieht natürlich der Pi3 echt kein Land mehr.

Kurz gesagt: Der Pi3 ist mittlerweile einfach hoffnungslos veraltet.
 
Zurück
Oben