Trying to Understand Interrupts, Not in Source, from the am335x Manual


I know the am335x is not a m4 processor but…

Some considerations should be made to represent chips in specific categories as having some type of likeness.

For instance…

  1. The PRCM has many PLL (phase lock loop) clocks, including a m3 for management.
    a. AM335x and AMIC110 Sitara™ Processors Technical Reference Manual (Rev. Q) (
  2. I cannot describe to myself how to incorporate this instantiation in source from the referenced clocks available…
    a. Firstly, there are many and some are interconnected via busses.
    b. Secondly, using a simplistic chip like the m4, when it is matched to the am335x, is not configured verbatim like was thought.


So, I think of source production like this idea from what I have read thus far.

  1. Setting up bus frequency and PLL frequency to start in source along with configurations and other labeling variables in #define directives.
  2. Labeling variables for the interconnects, busses, and interface clocks and functional clocks.

The point I am trying to reiterate is that complex TRMs like this should have some sort of reference guiding. I would hope something with expertise in this field in the .org or a non-affiliated user like myself will identify. So, in hindsight, my initialization source is suffering so far due to which, what, how to pick clocks, crystals, busses, and interconnects.


P.S. I am learning about IRQs now, i.e. not FIQs for reference.

Anyway, so far and for instance here:

#include "PLL_Try.h"

#define PLL_Clk (*((volatile unsigned long *)0x4200048)) // Some abstract value

int PLL_Init(void) {
    while(1) {
    return 0;

Anyway, as you can tell, I am more than rusty for 32-bit processing w/ the am335x.

Oh and this is my fault so far but I have not come across many tutorials on basic programming on the am335x and it has been out a while. Maybe some tutorials on std=c11 would be nice and in regards to communicating to the system instead of libraries being used would be awesome. I know it is not so easy and once figured out, explaining is 50 times as difficult.

None of this stuff is relevant for userspace programming, PRCM and interrupts are managed by the linux kernel and, like much of the TRM, is only relevant to kernel developers.

While it’s theoretically possible to do baremetal programming on the AM335x similar to what you’d do on a Cortex-M microcontroller, there are very limited resources available and attempting to do this should be regarded as a very advanced topic, and not the subject of any “basic tutorial”.

1 Like