This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM64X: r5f boot vector arm instruction

Part Number: PROCESSOR-SDK-AM64X


Tool/software:

Hi, 

in fsbl there is one step called init ATCM, 

so we will load this table into ATCM

const uint32_t bootloader_gSOC_r5fVectors[18] =
{
    0xE59FF018,
    0xE59FF018,
    0xE59FF018,
    0xE59FF018,
    0xE59FF018,
    0xE59FF018,
    0xE59FF018,
    0xE59FF018,
    0x00000040,
    0x00000040,
    0x00000040,
    0x00000040,
    0x00000040,
    0x00000040,
    0x00000040,
    0x00000040,
    0xE320F003, /* WFI */
    0xEBFFFFFD, /* loop back to WFI */
};
0xE59FF018     059 means ldr  PC #0x18     Am I under stand correctly.

1. but how about 0x00000040  what are they stand for ?
Why we need to do that?  set to  0xE59FF018


2. later we will load our application and rewite these entry, right?

eg:

put 
undef_trap   0x0
svc_trap       0x4



bl .start 0x20

3.is there documentation related to this specifiic area? as far as I know,   0 - 0x20  is reserved for the interrupt handler,    then our application can boot from 0x20.  am I correct?

Thanks
  • Then in later steps, I saw your bootloader code overwrite the ATCM

    status = config->fxns->imgReadFxn((void *)(uintptr_t)(section.addr), section.size, config->args);

    previous bootloader_gSOC_r5fVectors loaded to ATCM AT 0x78000000  was overwriten again by the config->args->
    curOffset. 


    that was new data looks like. 
    "EA000006 EA00009B EAFFFFFE EAFFFFFE EA000091 E320F000 EA0000BB EA0000E6 E3A00000 E3A01000 E3A02000 E3A03000 E3A04000 E3A05000 E3A06000 E3A07000 E3A08000 E3A09000 E3A0A000 E3A0B000 E3A0C000 F1020011 E3A08000 E3A09000 E3A0A000 E3A0B000 E3A0C000 E3A0E000 E59FD1D4 E10F1000 E16FF001 F1020012 E3A0E000 E59FD1C4 E10F1000 E16FF001 F1020013 E3A0E000 E59FD1B0 E10F1000 E16FF001 F1020017 E3A0E000 E59FD190 E10F1000 E16FF001 F102001B E3A0E000 E59FD180 E10F1000 E16FF001 F102001F E3A0E000 E59FD178 E10F1000 E16FF001 EE112F50 E382260F EE012F50 F57FF06F EEF82A10 E3822101 EEE82A10 E3A01000 EC411B10 EC411B11 EC411B12 EC411B13 EC411B14 EC411B15 EC411B16 EC411B17 EC411B18 EC411B19 EC411B1A EC411B1B EC411B1C EC411B1D EC411B1E EC411B1F EE112F10 E3C22005 E3C22A01 F57FF04F EE012F10 F57FF06F EE112F30 E3822802 E3822801 E3C22902 E3822302 E3822301 E3822402 E3C22020 E3C22010 E3C22008 EE012F30 F57FF04F E3A00000 F57FF04F"



    • E3A00000MOV R0, #0   I recognize it , it is where my start symbol. 
    • E3A01000MOV R1, #0
    • E3A02000MOV R2, #0
    • E3A03000MOV R3, #0
    question. 1 why,   was previous steps reset ATCM step redundant. since we load start up assembly into the atcm anyway in this step? Thanks