Astra linux aspeed ast2500

AST2500 Evaulation Board Build Image

Our final image is lacking OpenBMC features such as SSH, Web GUI, and IPMI We have a AST2500 evaluation board. We are using recommended build environment and setting: export TEMPLATECONF=meta-evb/meta-evb-aspeed/meta-evb-ast2500/conf We are using bitbake to build phosphor image: . oe-init-build-env bitbake obmc-phosphor-image The final image is in: openbmc/build/tmp/deploy/images/evb-ast2500 We put the following image (about 7.5 MB) in our TFTP server fitImage-aspeed-image-initramfs-evb-ast2500—5.3.1+git0+3ad520f93d-r0-evb-ast2500-20191030145446.bin -> evb.bin and then from uboot we can: dhcp evb.bin bootm System boots and we can log in as: root 0penBmc But we only get a minimal OS. There are no OpenBmc features (such as ssh, web server, ipmi stack, etc) in this final image What are we doing wrong? We also get the following tar file: obmc-phosphor-image-evb-ast2500-20191030145446.rootfs.tar.gz When we open the tar file, all these services are in /usr/bin of the tar file. But they are not in the /usr/bin file we loaded to AST2500 evaluation board. There are no error messages. The sshd daemon and other services are just not there. Thanks

We add the following line to b uild/conf/local.conf to create *.mtd build file «require conf/machine/include/obmc-bsp-common.inc». then we used the QEMU and used *.mtd file to start the simulator. It worked fine and /usr/bin has all the phosphor services and ssh. So we try to load *.mtd file to AST2500 evaluation board from UBoot (dhcp evb.mtd ; bootm 83080000) it finds the FIT image and start loading the Kernel. But it hangs after that. This is the output from the COM Port:

ast# bootm 83080000 ## Loading kernel from FIT Image at 83080000 . Using ‘conf@aspeed-ast2500-evb.dtb’ configuration Trying ‘kernel@1’ kernel subimage Description: Linux kernel Type: Kernel Image Compression: uncompressed Data Start: 0x8308012c Data Size: 2732016 Bytes = 2.6 MiB Architecture: ARM OS: Linux Load Address: 0x80001000 Entry Point: 0x80001000 Hash algo: sha256 Hash value: Verifying Hash Integrity . sha256+ OK

## Loading ramdisk from FIT Image at 83080000 . Using ‘conf@aspeed-ast2500-evb.dtb’ configuration Trying ‘ramdisk@1’ ramdisk subimage Description: obmc-phosphor-initramfs Type: RAMDisk Image Compression: uncompressed Data Start: 0x8332208c Data Size: 1115892 Bytes = 1.1 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha256 Hash value: Verifying Hash Integrity . sha256+ OK

## Loading fdt from FIT Image at 83080000 . Using ‘conf@aspeed-ast2500-evb.dtb’ configuration Trying ‘fdt@aspeed-ast2500-evb.dtb’ fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x8331b230 Data Size: 28048 Bytes = 27.4 KiB Architecture: ARM Hash algo: sha256 Hash value: Verifying Hash Integrity . sha256+ OK Booting using the fdt blob at 0x8331b230

Loading Kernel Image . OK Loading Ramdisk to bc24f000, end bc35f6f4 . OK Loading Device Tree to bc245000, end bc24ed8f . OK Starting kernel .

Читайте также:  Удалить полностью libreoffice linux mint

Источник

1 Обзор

Enhanced SerialPeripheral Interface (eSPI) is an interface using pins of SPI, but runsdifferent protocol.

It interfacesupports peripheral, virtual wire, out-of-band, and flash sharing channels.

This controllersupports all 4 channels and operates at max frequency of 66MHz.

It alsosupports up to quad-io[4 IO] mode.

• Supports 66, 50,33, 25, and 20MHz of eSPI clock frequency.

• Supports Quad-,Dual-, and Single-IO mode.

• Supports both alertmode: shared IO or dedicated[ IO].

– Maximum payloadsize is 64 bytes.

– Maximum virtualwire count is 8.

– Support 32 GPIOs.These GPIOs can be connected to physical pins or software mode.

– Maximum payloadsize is 64 bytes.

• Run-time FlashSharing Channel:

– Maximum payloadsize is 64 bytes.

– Supports bothmaster- and slave-attached flash sharing.

Registers :Base Address = 0x1E6E E000

espi_drv.c espi , espiprobe、remove, 。

dev-espi.c aspeedast2500 CPU 。 , 。

5.1

static structresource ast_espi_resource[] =

.end = AST_ESPI_BASE + SZ_256-1,

static structplatform_device ast_espi_device =

5.2 espi

static structplatform_driver ast_espi_driver =

platform_device_register platform_driver_register 。 , platform_driver_register(&ast_espi_driver) , ast_espi_driver->driver.name structplatform_device , device->name 。 。

espi_drv.c static intast_espi_probe(struct platform_device *pdev) 。 platform_driver_register(&ast_espi_driver) , device , ast_espi_driver->probe, ast_espi_probe 。 structplatform_device *pdev , & ast_espi_device。

struct resource *res;

struct ast_espi_dev

void__iomem *reg_base;

espi_dev 。 , espi , 。espi_dev : 。

5.2.1

(1) espi_dev = kzalloc(sizeof(structast_espi_dev), GFP_KERNEL);

(2) res = platform_get_resource(pdev,IORESOURCE_MEM, 0);

(3) res =request_mem_region(res->start, resource_size(res), pdev->name);

(4) espi_dev->reg_base =ioremap(res->start, resource_size(res));

(5) espi_dev->irq =platform_get_irq(pdev, 0);

(1) espi_dev 。 (2) & ast_espi_device res。 (3)(4) 0x1E6EE000 , espi_dev->reg_base。 (5) & ast_espi_device espi_dev->irq。

5.2.2

ret =request_irq(espi_dev->irq, ast_espi_isr, IRQF_SHARED, «ast-espi»,espi_dev);

5.2.3

1) ast_espi_write(espi_dev,ast_espi_read(espi_dev, AST_ESPI_CTRL) | (0x1

This bit must be set to Tx/Rx OOB Channel.

2) ast_espi_write(espi_dev,ESPI_SYS_INT_T0, AST_ESPI_SYS_INT_T0);

0 RW Interrupttype 0 of NMI Out

9 RW Interrupttype 0 of SMI Out

8 RW Interrupttype 0 of Host Reset Warn

6 RW Interrupttype 0 of OOB Reset Warn

5 RW Interrupttype 0 of PLTRSTN

4 RW Interrupttype 0 of Suspend Status

2 RW Interrupttype 0 of S5 Sleep Control

1 RW Interrupttype 0 of S4 Sleep Control

0 RW Interrupttype 0 of S3 Sleep Control

3) ast_espi_write(espi_dev,ESPI_SYS_INT_T1, AST_ESPI_SYS_INT_T1);

10 RW Interrupttype 1 of NMI Out

9 RW Interrupttype 1 of SMI Out

8 RW Interrupttype 1 of Host Reset Warn

6 RW Interrupttype 1 of OOB Reset Warn

5 RW Interrupttype 1 of PLTRSTN

4 RW Interrupttype 1 of Suspend Status

2 RW Interrupttype 1 of S5 Sleep Control

1 RW Interrupttype 1 of S4 Sleep Control

0 RW Interrupttype 1 of S3 Sleep Control

4) ast_espi_write(espi_dev,ESPI_SYS_INT_T2, AST_ESPI_SYS_INT_T2);

10 RW Interrupttype 2 of NMI Out

9 RW Interrupttype 2 of SMI Out

8 RW Interrupttype 2 of Host Reset Warn

6 RW Interrupttype 2 of OOB Reset Warn

5 RW Interrupttype 2 of PLTRSTN

4 RW Interrupttype 2 of Suspend Status

2 RW Interrupttype 2 of S5 Sleep Control

1 RW Interrupttype 2 of S4 Sleep Control

0 RW Interrupttype 2 of S3 Sleep Control

5) ast_espi_write(espi_dev,ESPI_SYS_INT, AST_ESPI_SYS_IER);

10 RW EnableInterrupt of NMI Out

9 RW EnableInterrupt of SMI Out

8 RW Enable Interrupt of Host Reset Warn

6 RW Enable Interrupt of OOB Reset Warn

5 RW Enable Interrupt of PLTRSTN

Читайте также:  Установка dr web enterprise security suite linux

4 RW EnableInterrupt of Suspend Status

2 RW EnableInterrupt of S5 Sleep Control

1 RW EnableInterrupt of S4 Sleep Control

0 RW EnableInterrupt of S3 Sleep Control

6) ast_espi_write(espi_dev,ESPI_SUS_WARN, AST_ESPI_SYS1_INT_T0);

16 RW Interrupttype 0 of Host C10

15: 8 RWInterrupt type 0 of PCH Generic

5 RW Interrupttype 0 of Wireless Lan Sleep Control

4 RW Interrupttype 0 of Lan Sleep Control

3 RW Interrupttype 0 of A# Sleep Control

1 RW Interrupttype 0 of Suspend PowerDown Ack

0 RW Interrupt type 0 of Suspend Warn

System Event 1 fromMaster 。

7) ast_espi_write(espi_dev,0x00000000, AST_ESPI_SYS1_INT_T1);

16 RW Interrupttype 1 of Host C10

15: 8 RWInterrupt type 1 of PCH Generic

5 RW Interrupttype 1 of Wireless Lan Sleep Control

4 RW Interrupttype 1 of Lan Sleep Control

3 RW Interrupttype 1 of A# Sleep Control

1 RW Interrupttype 1 of Suspend PowerDown Ack

0 RW Interrupttype 1 of Suspend Warn

System Event 1 fromMaster 。

8) ast_espi_write(espi_dev,0x00000000, AST_ESPI_SYS1_INT_T2);

16 RW Interrupttype 2 of Host C10

15: 8 RWInterrupt type 2 of PCH Generic

5 RW Interrupttype 2 of Wireless Lan Sleep Control

4 RW Interrupttype 2 of Lan Sleep Control

3 RW Interrupttype 2 of A# Sleep Control

1 RW Interrupttype 2 of Suspend PowerDown Ack

0 RW Interrupttype 2 of Suspend Warn

System Event 1 fromMaster 。

9) ast_espi_write(espi_dev,ESPI_SUS_WARN, AST_ESPI_SYS1_IER);

3 RW EnableInterrput of A# Sleep Control

1 RW EnableInterrput of Suspend PowerDown Ack

0 RW Enable Interrput of Suspend Warn

System Event 1 from Master 。

10) ast_espi_write(espi_dev,0xFFFFFFFF, AST_ESPI_IER);

31 RW Enable of Hardware Reset Event

21 RW Enable of Flash Channel Tx Error

20 RW Enable of OOB Channel Tx Error

19 RW Enable of Flash Channel Tx Abort

18 RW Enable of OOB Channel Tx Abort

17 RW Enable of Peripheral Channel Non-Posted Tx Abort

16 RW Enable of Peripheral Channel Posted Tx Abort

15 RW Enable of Flash Channel Rx Abort

14 RW Enable of OOB Channel Rx Abort

13 RW Enable of Peripheral Channel Non-Posted Rx Abort

12 RW Enable of Peripheral Channel Posted Rx Abort

11 RW Enable of Peripheral Channel Non-Posted Tx Error

10 RW Enable of Peripheral Channel Posted Tx Error

9 RW Enable of Virtual Wire GPIO Event

8 RW Enable of Virtual Wire System Event

7 RW Enable of Flash Channel Tx Complete

6 RW Enable of Flash Channel Rx Complete

5 RW Enable of OOB Channel Tx Complete

4 RW Enable of OOB Channel Rx Complete

3 RW Enable of Peripheral Channel Non-Posted Tx Complete

1 RW Enable of Peripheral Channel Posted Tx Complete

0 RW Enable of Peripheral Channel Posted Rx Complete

5.2.4

Suspend Ack Slave BootDone 。

espi_dev pdev。pdev & ast_espi_device。espi , , ( )。

5.3 ast_espi_isr

5.3.1 ESPI_ISR_HW_RESET(bit31)

31 RWHardware Reset Event

Setwhen Hardware Reset de-asserted.

5.3.2 ESPI_ISR_VIRTW_SYS(bit8)

8 RWVirtual Wire System Event

Setwhen System Event from Master is trigged.

5.3.3 ESPI_ISR_VIRTW_SYS1(bit22)

22 RWVirtual Wire System Event 1

Setwhen System Event 1 from Master is trigged.

Источник

ASPEED’s AST2500 Display To Be Supported By Linux 4.11’s DRM

ASPEED’s AST2500 Display To Be Supported By Linux 4.11’s DRM

Phoronix: ASPEED’s AST2500 Display To Be Supported By Linux 4.11’s DRM

Читайте также:  Linux unknown filesystem type lvm2 member

David Airlie sent in another pull request of DRM material for Linux 4.11, which follows last week’s main DRM feature update for Linux 4.11.

Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

So on which side of the display is this driver living? Don’t forget that we are talking host-cpu vs motherboard controller cpu, both running linux, the latter emulating a VGA card to the host.

Comment

By looking at the commit descriptions here, it seems a driver for the Linux running on the x86 processor(s), not for the BMC itself.

Although it seems that one of the commits allows the host system (Linux on x86 processor) to fully initialize the GPU on its own, in case the BMC firmware or the vBIOS didn’t initialize it.

This is used when the BMC isn’t running any code and thus has to be initialized by the host. The code originates from Aspeed (Y.C. Chen) and has been cleaned up for coding style purposes by Be.

Same for older gens, there is a commit that fixes the initialization of the GPU in case the BMC firmware didn’t initialize it https://github.com/ozbenh/linux-ast/. 3bd4d11450ee06

I’m a bit puzzled about how in the heck this thing works. It seems the GPU is actually shared and the host system can actually access it to pretty low level if it can initialize it from a cold state.

Comment

It has video-over-ip, maybe that’s why you can initialize it remotely. Sort of like wake on lan? Anyway, just guessing.

Comment

It has video-over-ip, maybe that’s why you can initialize it remotely. Sort of like wake on lan? Anyway, just guessing.

The code in those patches isn’t doing anything remotely. It’s acting on a local GPU, as if both host CPU and BMC CPU have same access to that GPU.

Comment

I’m a bit puzzled about how in the heck this thing works. It seems the GPU is actually shared and the host system can actually access it to pretty low level if it can initialize it from a cold state.

Afaik, the host thing is legit, and the BMC just can read the config and the VRAM is just shared memory. I really love those BMC’s, especially when I have ssh root access to them because then I can put my own serial console clients (picocom) on them instead of the crap IPMI implementations.
Anyway: having reviewed the binaries of the «remote KVM» (10 years ago 😉 )it is just a mangled version of VNC. It would have been nice if the BMC side had a H.264 encoder so it could do some more interesting stuff.
These days the BMC’s are unfortunately locked down and license riddled.

Источник

Оцените статью
Adblock
detector