Skip to content
  • Eero Nurkkala's avatar
    b128ce33
    mpfs: introduce OpenSBI · b128ce33
    Eero Nurkkala authored
    
    
    OpenSBI may be compiled as an external library. OpenSBI commit d249d65
    (Dec. 11, 2021) needs to be reverted as it causes memcpy / memcmp to
    end up in the wrong section. That issue has yet no known workaround.
    
    OpenSBI may be lauched from the hart0 (e51). It will start the U-Boot
    and eventually the Linux kernel on harts 1-4.
    
    OpenSBI, once initialized properly, will trap and handle illegal
    instructions (for example, CSR time) and unaligned address accesses
    among other things.
    
    Due to size size limitations for the mpfs eNVM area where the NuttX
    is located, we actually set up the OpenSBI on its own section which
    is in the bottom of the DDR memory. Special care must be taken so that
    the kernel doesn't override the OpenSBI. For example, the Linux device
    tree may reserve some space from the beginning:
    
      opensbi_reserved: opensbi@80000000 {
          reg = <0x80000000 0x200000>;
          label = "opensbi-reserved";
      };
    
    The resulting nuttx.bin file is very large, but objcopy is used to
    create the final binary images for the regions (eNVM and DDR) using
    the nuttx elf file.
    
    Co-authored-by: default avatarPetro Karashchenko <petro.karashchenko@gmail.com>
    Signed-off-by: default avatarEero Nurkkala <eero.nurkkala@offcode.fi>
    b128ce33
    mpfs: introduce OpenSBI
    Eero Nurkkala authored
    
    
    OpenSBI may be compiled as an external library. OpenSBI commit d249d65
    (Dec. 11, 2021) needs to be reverted as it causes memcpy / memcmp to
    end up in the wrong section. That issue has yet no known workaround.
    
    OpenSBI may be lauched from the hart0 (e51). It will start the U-Boot
    and eventually the Linux kernel on harts 1-4.
    
    OpenSBI, once initialized properly, will trap and handle illegal
    instructions (for example, CSR time) and unaligned address accesses
    among other things.
    
    Due to size size limitations for the mpfs eNVM area where the NuttX
    is located, we actually set up the OpenSBI on its own section which
    is in the bottom of the DDR memory. Special care must be taken so that
    the kernel doesn't override the OpenSBI. For example, the Linux device
    tree may reserve some space from the beginning:
    
      opensbi_reserved: opensbi@80000000 {
          reg = <0x80000000 0x200000>;
          label = "opensbi-reserved";
      };
    
    The resulting nuttx.bin file is very large, but objcopy is used to
    create the final binary images for the regions (eNVM and DDR) using
    the nuttx elf file.
    
    Co-authored-by: default avatarPetro Karashchenko <petro.karashchenko@gmail.com>
    Signed-off-by: default avatarEero Nurkkala <eero.nurkkala@offcode.fi>
This project is licensed under the Apache License 2.0. Learn more
Loading