Thank you everyone! I appreciate the responses.

After days of trial and error I managed to setup the IVT and configure one 
of the timers to fire an interrupt on overflow. For me, I found this 
resource pretty helpful: 
https://android.googlesource.com/kernel/lk/+/upstream-master/platform/am335x 
- it appears to be the embedded android kernel ported to the beaglebone. 
They have some good interrupt stuff in there, as well as device-specific 
peripheral drivers.

I'm struggling now with "de-triggering" an interrupt after it fired. So my 
timer fires one interrupt and then the IRQSTATUS_RAW keeps its value, no 
matter how many ways I try to reset it. So I am only handling it once.

I feel I'm close though. Hopefully the resources shared + the anrdoid 
kernel I found will shed some light on how to correctly process an 
interrupt.

Cheers!

On Monday, March 8, 2021 at 8:23:10 AM UTC-8 lazarman wrote:

> Yes I agree. Make sure to look at startup assembler language file many 
> times vectors are in it. Start or start-up. Asm 
>
> Sent from Yahoo Mail on Android 
> <https://overview.mail.yahoo.com/mobile/?.src=Android>
>
> On Mon, Mar 8, 2021 at 9:56 AM, Graham Stott
> <gbcs...@comcast.net> wrote:
>
> You could look at the TI starterware code  for examples of setting  up the 
> interrupt table and the code at the tables.
>
>  
>
> Graham
>
>  
>
> *From:* 'Mark Lazarewicz' via BeagleBoard [mailto:
> beagl...@googlegroups.com] 
> *Sent:* Sunday, March 07, 2021 12:30 PM
> *To:* beagl...@googlegroups.com
> *Subject:* Re: [beagleboard] Re: BBB Setting up the Interrupt Vector Table
>
>  
>
> Your handler needs the keyword interrupt to save the registers so when the 
> vector occurs whatever was running isn't corrupted
>
>  
>
> Besides interrupt vector table don't forget exceptions they need a vector 
> as well as in bus error or address error
>
>  
>
> Here's a brief reference you should look for interrupt code to verify and 
> the correct arm programming guide
>
>  
>
>  
>
>
> https://community.arm.com/developer/tools-software/tools/f/armds-forum/13621/need-interrupt-handling-code-for-arm-cortex-a9
>
>  
>
>  
>
> Sent from Yahoo Mail on Android 
> <https://go.onelink.me/107872968?pid=InProduct&c=Global_Internal_YGrowth_AndroidEmailSig__AndroidUsers&af_wl=ym&af_sub1=Internal&af_sub2=Global_YGrowth&af_sub3=EmailSignature>
>
>  
>
> On Sun, Mar 7, 2021 at 12:01 PM, Josh Cole
>
> <three...@gmail.com> wrote:
>
> Update! 
>
>  
>
> I've solved my own problem and thought I'd share for any lost soul in the 
> future who seeks these answers.
>
>  
>
> If you look at the technical reference manual for the am355x section 26-3 
> it shows an interrupt vector table which exists wildly far away from your 
> application entrypoint. Upon closer inspection, I realized some entries are 
> listed twice. This is because the interrupt vector table is actually a 
> bunch of indirection.
>
>  
>
> If you want to set the IRQ branch *address* you specify the address at 
> location 0x4030_CE38
>
> If you want to set the pre-fetch abort *address* you specify the address 
> at location  0x4030_CE2C
>
>  
>
> Example code:
>
> // Set the IRQ handler to the entrypoint of the application + 24 bytes
>
> *(0x4030_CE38 as *mut u32) = 0x402F_0400 + 0x18;
>
>  
>
> I assumed I needed to write an actual branch *instruction* to those 
> locations. Which is where my confusion started. So if you are building a 
> low-level kernel and are working with interrupts, just remember that the 
> vector table can be updated by simply writing the correct *address* to 
> your handler based on the vector table in the reference manual (*not *an 
> actual branch instruction).
>
>  
>
> On Friday, March 5, 2021 at 6:12:00 AM UTC-8 Josh Cole wrote:
>
> Hi everyone,
>
>  
>
> I'm working on a low-level kernel for the Beaglebone Black. I've gotten to 
> a point in my project where I want to specify an IRQ handler and enable 
> interrupts.
>
>  
>
> According to the technical reference manual 
> <http://www.sal.wisc.edu/st5000/datasheets/tq-systems/spruh73p.pdf>(section 
> 26.1.4), there are two primary locations you can load a disk image to. The 
> first is what they call "Public ROM" which seems pretty straightforward. 
> You load your image to address 0x20000 and the interrupt vector table is 
> the first thing which gets encountered.
>
>  
>
> The second location you can load an image is "Public RAM" (which I'm 
> using). This starts executing at 0x402F0400 and you get 109kb of space for 
> your application. The weird part is, *the interrupt vector table 
> appears to be located super far away from the entrypoint*, at location 
> 0x4030CE00. This is more than 109kb away, so it can't be included in the 
> image which gets flashed to the device.
>
>  
>
> I am at a loss about how to get an instruction to that particular location 
> in memory since my image fundamentally can't be that size. Any guidance on 
> how to setup the IVT for Public RAM would be greatly appreciated.
>
>  
>
> Thank you for your time!
>
> -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to beagleboard...@googlegroups.com.
> To view this discussion on the web visit 
>
>
> https://groups.google.com/d/msgid/beagleboard/b63bc711-fcda-497b-b4e5-ee35c0081176n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/beagleboard/b63bc711-fcda-497b-b4e5-ee35c0081176n%40googlegroups.com?utm_medium=email&utm_source=footer>
>
> .
>
> -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to beagleboard...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beagleboard/1482309015.269358.1615148982352%40mail.yahoo.com
>  
> <https://groups.google.com/d/msgid/beagleboard/1482309015.269358.1615148982352%40mail.yahoo.com?utm_medium=email&utm_source=footer>
> .
>
> -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to beagleboard...@googlegroups.com.
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beagleboard/001001d71433%248d59d000%24a80d7000%24%40comcast.net
>  
> <https://groups.google.com/d/msgid/beagleboard/001001d71433%248d59d000%24a80d7000%24%40comcast.net?utm_medium=email&utm_source=footer>
> .
>
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/aef01716-d628-4857-a5b8-a32064d2f697n%40googlegroups.com.

Reply via email to