Hello
I am trying to add am335x support to the pico TCP/IP stack and currently working on the following file:
projects/global-components/components/Ethdriver/include/plat/am335x/plat/eth_devices.h.
Current contents of this file (I am creating it step by step, thus it might be incomplete):
#pragma once
#define HARDWARE_ETHERNET_COMPONENT
#define HARDWARE_ETHERNET_INTERFACES \
consumes Dummy EthDriver; \
emits Dummy dummy_source;
#define HARDWARE_ETHERNET_COMPOSITION \
connection seL4DTBHardware ethernet_conn(from dummy_source, to EthDriver);
#define HARDWARE_ETHERNET_CONFIG \
EthDriver.dtb = dtb({ "path" : "/ocp/ethernet@4a100000" }); \
EthDriver.generate_interrupts = 1;
I test the implementation by using the picoserver CAmkES application. However, on boot I receive the following error:
ELF-loader started on CPU: ARM Ltd. Cortex-A8 r3p2
paddr=[82000000..8262e037]
No DTB found!
Looking for DTB in CPIO archive...
Found dtb at 820c1b84
Loaded dtb from 820c1b84
paddr=[80034000..8003cfff]
ELF-loading image 'kernel'
paddr=[80000000..80033fff]
vaddr=[f0000000..f0033fff]
virt_entry=f0000000
ELF-loading image 'capdl-loader'
paddr=[8003d000..8059afff]
vaddr=[10000..56dfff]
virt_entry=1e4dc
ELF loader relocated, continuing boot...
Enabling MMU and paging
Jumping to kernel-image entry point...
Bootstrapping kernel
Booting all finished, dropped to user space
create_object@main.c:726 device frame/untyped, paddr = 0x48040000, size = 12 bits
create_object@main.c:726 device frame/untyped, paddr = 0x48042000, size = 12 bits
create_object@main.c:726 device frame/untyped, paddr = 0x4a100000, size = 12 bits
create_object@main.c:726 device frame/untyped, paddr = 0x4a101200, size = 12 bits
create_object@main.c:730 [Cond failed: err != seL4_NoError]
Failed to find device frame/untyped at paddr = 0x4a101200
seL4 root server abort()ed
Debug halt syscall from user thread 0xffefd600 "rootserver"
halting...
Kernel entry via Unknown syscall, word: 65
The am335x.dtb contains the following line in ethernet@4a100000:
reg = <0x4a100000 0x00000800 0x4a101200 0x00000100>;
If I am correct the hardware block isn't enabled but I don't know exactly how to do this.
Could anyone help me out here or give me some hints?
Best Regards,
Kap Benjamin