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
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
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.
On Fri, Jun 10, 2016 at 2:57 PM, Tim Newsham <firstname.lastname@example.org> wrote:
I think you need to add a line in kernel/src/plat/am335x/machine/hardware.cfor this.
On Fri, Jun 10, 2016 at 8:37 AM, Julien Delange <email@example.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?
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 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=