Thanks a lot! Do you have by any change an sample project that uses CAmkES on UART1? Something I could also try on my own?

Also, what other devices are you supporting? Do you have support for the eth by any chance?

Thanks a lot!

Julien.


On Fri, Jun 10, 2016 at 7:06 PM, Jeff Hieb <jlhieb01@louisville.edu> wrote:

Julien

I am using UART1 (and 2 and 4) on BBB with Camkes.

I think you need to set the pin mux on the board.  Linux does this with something called device tree overlays (https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/device-tree-overlays). 


Sel4 and Camkes don't provide away to  set the mux for the pins (that I am aware of), So you have do it before booting the kernel.

I haven't found a particularly clean way to do this yet.  Currently I am just using UBoot to set the pin muxes.

Before booting your kernel, at the UBoot command line try these two lines:

mw.l 0x44E10980 0x30

mw.l 0x44E10984 0x00


This should correctly turn on the UART 1 Rx and Tx lines.


Also.  I you want to turn on the fifos, the reference manual seems to gloss over part of how to do that.  Here is my code to

// config to fifo with interrupt but no DMA
    *UART_REG(LCR) = 0xBF;
    *UART_REG(EFR) = 0x10;
    *UART_REG(LCR) = 0x80;
    *UART_REG(SCR) = 0x01;
    *UART_REG(MCR) = 0x40;
    *UART_REG(TLR) = 0x11;
 
    *UART_REG(MCR) = 0x00;
    *UART_REG(FCR) = 0x07;




Jeffrey L. Hieb
Department of Engineering Fundamentals
University of Louisville
Louisville Kentucky 40292
(502) 852 0465
On 6/10/2016 3:05 PM, Julien Delange wrote:
Yep, I did this. The code boots correctly and the device is recognized. The serial is still not working, I assume this is a matter of code right now.

Thanks!

Julien,

On Fri, Jun 10, 2016 at 2:57 PM, Tim Newsham <tim.newsham@gmail.com> wrote:
I think you need to add a line in kernel/src/plat/am335x/machine/hardware.c
for this.

On Fri, Jun 10, 2016 at 8:37 AM, Julien Delange <julien.delange@gmail.com> wrote:
I am using the second serial interface of the beaglebone black. According to the source code (in libsel4platsupport/plat_include/am335x/sel4platsupport/plat/hw/soc_AM335x.h), the address is 0x48022000). The following line is found in the source

#define SOC_UART_1_REGS                      (0x48022000)

So, in CAmkES, I configure the hardware component that represents the serial hardware component with the following attributes:

drv.mem_attributes       = "0x48022000:0x1000";

The application compiles fine. However, when launching the image on the target, I have the following issue. Any idea about how to solve this? Does anybody successfully used UART1 on the beaglebone black? Or have any idea/suggestion to investigate?

Thanks.

Julien.


Creating object conn1_frame__timer_0 in slot 728, from untyped 29b...
 device frame, paddr = 0x48040000, size = 12 bits
Creating object conn2_frame__Cons_PingMe_0 in slot 729, from untyped 29b...
 device frame, paddr = 0x48022000, size = 12 bits

capDL-loader :: << Error: Failed to find device frame at paddr = 0x48022000
 >>
Ignoring call to sys_rt_sigprocmask
Ignoring call to sys_gettid
sys_tkill assuming self kill


_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel




--



_______________________________________________ Devel mailing list Devel@sel4.systems
https://urldefense.proofpoint.com/v2/url?u=https-3A__sel4.systems_lists_listinfo_devel&d=AwICAg&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=MGwV9yE3Lj-QU0UntmkIzrms26F8fDzA5Qzvk9IrTS0&s=DaDr7rfeonVlo85YWw34Fz637peI234w5Pt-qM3RfrY&e=


_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel