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
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.cfor 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=