Camkes MMIO Driver Failed to find device frame
I am working on a UART device driver in camkes for AM335x. When I load the image on the board I get this error: Creating object frame_drv_group_bin_42 in slot 596, from untyped 1f6... device frame, paddr = 0x48022000, size = 12 bits capDL-loader :: << Error: Failed to find device frame at paddr = 0x48022000
I am reasonably confident the address is correct, (https://github.com/seL4/libplatsupport/blob/master/plat_include/am335x/plats...) Looking at the source It seems capDL-Loader wants to find this device frame in bootinfo https://github.com/seL4/capdl-loader-app/blob/master/src/main.c#L731 Any help on how capDL-loader builds bootinfo would be appreciated. Jeff -- Jeffrey L. Hieb Department of Engineering Fundamentals University of Louisville Louisville Kentucky 40292 (502) 852 0465
Hi Jeff, seL4 populates the bootinfo structure for the root process. MMIO frame production is a data driven process using the following data structure: https://github.com/seL4/seL4/blob/master/src/plat/am335x/machine/hardware.c#... FYI, the physical address of device frames are defined here: https://github.com/seL4/seL4/blob/master/include/plat/am335x/plat/machine/de... If the uart device that you are attempting to use is not in the list, feel free to add it. - Alex ________________________________________ From: Devel [devel-bounces@sel4.systems] on behalf of Jeff Hieb [jlhieb01@louisville.edu] Sent: Sunday, 27 September 2015 23:07 To: devel@sel4.systems Subject: [seL4] Camkes MMIO Driver Failed to find device frame I am working on a UART device driver in camkes for AM335x. When I load the image on the board I get this error: Creating object frame_drv_group_bin_42 in slot 596, from untyped 1f6... device frame, paddr = 0x48022000, size = 12 bits capDL-loader :: << Error: Failed to find device frame at paddr = 0x48022000
I am reasonably confident the address is correct, (https://github.com/seL4/libplatsupport/blob/master/plat_include/am335x/plats...) Looking at the source It seems capDL-Loader wants to find this device frame in bootinfo https://github.com/seL4/capdl-loader-app/blob/master/src/main.c#L731 Any help on how capDL-loader builds bootinfo would be appreciated. Jeff -- Jeffrey L. Hieb Department of Engineering Fundamentals University of Louisville Louisville Kentucky 40292 (502) 852 0465 _______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel ________________________________ The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.
Alex, Thanks, that worked to fix the device frame error. Still working on the driver. It seems like the device frame is not "bound" to the physical memory? Here is what is printed while the kernel is loading that relates to the frame (I think). (pd_drv_group_bin, pt_drv_group_bin_2, 300000, 0) (frame_drv_group_bin_42, pd_drv_group_bin, rights=3, vaddr=300000, vm_attribs=2). I checked that 300000 is what camkes passed through to my component as "mem", but I am so far unable to get the UART to respond using reads and writes to mem + offset. Is there some additional code I need to add somewhere or should reads and writes to (mem + offset) write to physical memory? Thanks, Jeff Jeffrey L. Hieb Department of Engineering Fundamentals University of Louisville Louisville Kentucky 40292 (502) 852 0465 On 9/27/2015 9:34 AM, Alexander Kroh wrote:
Hi Jeff,
seL4 populates the bootinfo structure for the root process.
MMIO frame production is a data driven process using the following data structure: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_seL4_seL4_blob_master_src_plat_am335x_machine_hardware.c-23L43&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=PE4Vs_EGQB_z2P9KgLYL6Af6ZPkogMq6FGz3RmEPyeY&e=
FYI, the physical address of device frames are defined here: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_seL4_seL4_blob_master_include_plat_am335x_plat_machine_devices.h&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=iQYNaJIbR5OLyOVMwKZpK0SV1yoBHcUcOP8jLxlQjog&e=
If the uart device that you are attempting to use is not in the list, feel free to add it.
- Alex
________________________________________ From: Devel [devel-bounces@sel4.systems] on behalf of Jeff Hieb [jlhieb01@louisville.edu] Sent: Sunday, 27 September 2015 23:07 To: devel@sel4.systems Subject: [seL4] Camkes MMIO Driver Failed to find device frame
I am working on a UART device driver in camkes for AM335x.
When I load the image on the board I get this error:
Creating object frame_drv_group_bin_42 in slot 596, from untyped 1f6... device frame, paddr = 0x48022000, size = 12 bits
capDL-loader :: << Error: Failed to find device frame at paddr = 0x48022000
I am reasonably confident the address is correct, (https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_seL4_libplatsupport_blob_master_plat-5Finclude_am335x_platsupport_plat_serial.h-23L15&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=BmKsuwNLcBX2ucG5br_2EA3628PcqbPWzIh-yLbsVM0&e= )
Looking at the source It seems capDL-Loader wants to find this device frame in bootinfo
Any help on how capDL-loader builds bootinfo would be appreciated.
Jeff
-- Jeffrey L. Hieb Department of Engineering Fundamentals University of Louisville Louisville Kentucky 40292 (502) 852 0465
_______________________________________________ Devel mailing list Devel@sel4.systems https://urldefense.proofpoint.com/v2/url?u=https-3A__sel4.systems_lists_listinfo_devel&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=rKkqGJPIQpRtHhsDyxjrcUE5EBpZ9S3AHoMVeHB707s&e=
________________________________
The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.
Hi Jeff,
The address looks like the right place to where the device memory should be mapped. Just double check the .camkes file, make sure you are using the correct hardware connector and the device address and size in the configuration part is correct.
We have an example UART app in the "apps" directory, it works with qemu emulator(KZM), check that out. It would be good to put a probe on the UART cable, check if there is any hardware issue.
Good luck
- Siwei
On 3 Oct 2015 8:46 am, Jeff Hieb
Hi Jeff,
seL4 populates the bootinfo structure for the root process.
MMIO frame production is a data driven process using the following data structure: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_seL4_seL4_blob_master_src_plat_am335x_machine_hardware.c-23L43&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=PE4Vs_EGQB_z2P9KgLYL6Af6ZPkogMq6FGz3RmEPyeY&e=
FYI, the physical address of device frames are defined here: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_seL4_seL4_blob_master_include_plat_am335x_plat_machine_devices.h&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=iQYNaJIbR5OLyOVMwKZpK0SV1yoBHcUcOP8jLxlQjog&e=
If the uart device that you are attempting to use is not in the list, feel free to add it.
- Alex
________________________________________ From: Devel [devel-bounces@sel4.systems] on behalf of Jeff Hieb [jlhieb01@louisville.edu] Sent: Sunday, 27 September 2015 23:07 To: devel@sel4.systems Subject: [seL4] Camkes MMIO Driver Failed to find device frame
I am working on a UART device driver in camkes for AM335x.
When I load the image on the board I get this error:
Creating object frame_drv_group_bin_42 in slot 596, from untyped 1f6... device frame, paddr = 0x48022000, size = 12 bits
capDL-loader :: << Error: Failed to find device frame at paddr = 0x48022000
I am reasonably confident the address is correct, (https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_seL4_libplatsupport_blob_master_plat-5Finclude_am335x_platsupport_plat_serial.h-23L15&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=BmKsuwNLcBX2ucG5br_2EA3628PcqbPWzIh-yLbsVM0&e= )
Looking at the source It seems capDL-Loader wants to find this device frame in bootinfo
Any help on how capDL-loader builds bootinfo would be appreciated.
Jeff
-- Jeffrey L. Hieb Department of Engineering Fundamentals University of Louisville Louisville Kentucky 40292 (502) 852 0465
_______________________________________________ Devel mailing list Devel@sel4.systems https://urldefense.proofpoint.com/v2/url?u=https-3A__sel4.systems_lists_listinfo_devel&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=rKkqGJPIQpRtHhsDyxjrcUE5EBpZ9S3AHoMVeHB707s&e=
________________________________
The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.
_______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
note that the am335x port does not enable all
of the hardware blocks by default. Some of
the hardware blocks are enabled by the bootloader
before sel4 runs, but not all of them.
See the attached patch, which includes code
in enableTimers for powering on addtional timer
hardware blocks (required for running the refos port
on am335x). You may need to use similar
code to enable your uart block if it is not enabled.
Tim
On Fri, Oct 2, 2015 at 12:42 PM, Jeff Hieb
Alex,
Thanks, that worked to fix the device frame error. Still working on the driver.
It seems like the device frame is not "bound" to the physical memory?
Here is what is printed while the kernel is loading that relates to the frame (I think).
(pd_drv_group_bin, pt_drv_group_bin_2, 300000, 0) (frame_drv_group_bin_42, pd_drv_group_bin, rights=3, vaddr=300000, vm_attribs=2).
I checked that 300000 is what camkes passed through to my component as "mem", but I am so far unable to get the UART to respond using reads and writes to mem + offset.
Is there some additional code I need to add somewhere or should reads and writes to (mem + offset) write to physical memory?
Thanks,
Jeff
Jeffrey L. Hieb Department of Engineering Fundamentals University of Louisville Louisville Kentucky 40292 (502) 852 0465
On 9/27/2015 9:34 AM, Alexander Kroh wrote:
Hi Jeff,
seL4 populates the bootinfo structure for the root process.
MMIO frame production is a data driven process using the following data structure:
FYI, the physical address of device frames are defined here:
If the uart device that you are attempting to use is not in the list, feel free to add it.
- Alex
________________________________________ From: Devel [devel-bounces@sel4.systems] on behalf of Jeff Hieb [ jlhieb01@louisville.edu] Sent: Sunday, 27 September 2015 23:07 To: devel@sel4.systems Subject: [seL4] Camkes MMIO Driver Failed to find device frame
I am working on a UART device driver in camkes for AM335x.
When I load the image on the board I get this error:
Creating object frame_drv_group_bin_42 in slot 596, from untyped 1f6... device frame, paddr = 0x48022000, size = 12 bits
capDL-loader :: << Error: Failed to find device frame at paddr = 0x48022000
I am reasonably confident the address is correct, ( https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_seL4_libplatsupport_blob_master_plat-5Finclude_am335x_platsupport_plat_serial.h-23L15&d=AwIFAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=xES3WJjaY0BbvKig8sNNQD6C8RdHjP2OrtyIzDDzCSQ&s=BmKsuwNLcBX2ucG5br_2EA3628PcqbPWzIh-yLbsVM0&e= )
Looking at the source It seems capDL-Loader wants to find this device frame in bootinfo
Any help on how capDL-loader builds bootinfo would be appreciated.
Jeff
-- Jeffrey L. Hieb Department of Engineering Fundamentals University of Louisville Louisville Kentucky 40292 (502) 852 0465
_______________________________________________ Devel mailing list Devel@sel4.systems
________________________________
The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.
_______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
-- Tim Newsham | www.thenewsh.com/~newsham | @newshtwit | thenewsh.blogspot.com
participants (4)
-
Alexander Kroh
-
Jeff Hieb
-
Siwei Zhuang
-
Tim Newsham