The solution that we use is to create a "mux" CAmkES component to configures the pins. Dependent components then send an RPC to this component, which returns only once the MUX configuration has completed.
Of course, it is likely that the mux device memory will also need to be exported as a frame cap for this platform via changes to kernel/src/plat/am335x/machine/hardware.c
Alternatively, one could modify void platform_init(void){} within the elfloader-tool to include the manual manipulation:
*(volatile uint32_t*)0x44E10980 = 0x30
*(volatile uint32_t*)0x44E10984 = 0x00
- AlexK
________________________________________
From: Devel [devel-bounces@sel4.systems] on behalf of Jeff Hieb [jlhieb01@louisville.edu]
Sent: Saturday, 11 June 2016 09:06
To: devel@sel4.systems
Subject: Re: [seL4] Beaglebone black/CAmkES issue
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/...).
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
Ignoring call to sys_rt_sigprocmask Ignoring call to sys_gettid sys_tkill assuming self kill
_______________________________________________ Devel mailing list Devel@sel4.systemsmailto:Devel@sel4.systems https://sel4.systems/lists/listinfo/develhttps://urldefense.proofpoint.com/v2/url?u=https-3A__sel4.systems_lists_listinfo_devel&d=AwMFaQ&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=MGwV9yE3Lj-QU0UntmkIzrms26F8fDzA5Qzvk9IrTS0&s=DaDr7rfeonVlo85YWw34Fz637peI234w5Pt-qM3RfrY&e= -- Tim Newsham | https://urldefense.proofpoint.com/v2/url?u=http-3A__www.thenewsh.com_-7Enewsham&d=AwMFaQ&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=MGwV9yE3Lj-QU0UntmkIzrms26F8fDzA5Qzvk9IrTS0&s=Cjc7dPZwf0158fR2amZ2xCr_dDFoLAcPjjHnVtmNCZk&e= www.thenewsh.com/~newshamhttp://www.thenewsh.com/~newsham | @newshtwit | thenewsh.blogspot.comhttps://urldefense.proofpoint.com/v2/url?u=http-3A__thenewsh.blogspot.com&d=AwMFaQ&c=SgMrq23dbjbGX6e0ZsSHgEZX6A4IAf1SO3AJ2bNrHlk&r=vxDfYJYhOaaufTHzA3yxVVn--9Yf3Ig5TrUiTFGL8pc&m=MGwV9yE3Lj-QU0UntmkIzrms26F8fDzA5Qzvk9IrTS0&s=DIUb0PJN4Ew4zS3H66GvnNKjVk9AjcRLJtgvpcF_vm8&e= _______________________________________________ Devel mailing list Devel@sel4.systemsmailto: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= ________________________________ 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.