Boot ARM SoC

                                       

VLSI chip design industries are moving toward more and more complex design in single silicon which integrates the multiples cores as well. The ARM CPU will fetch an instruction from either 0x0 or 0xffff0000 (for a Cortex-M, it is data as opposed to an instruction). Typical ARM SOC have some boot rom which uses this mechanism. For an end user, you need to consult a manual to determine how to get your code to run. ie, there is a BIOS built in to many ARM SOC which use the vector, but you need to use something different to get your code to run.

 Typically the ARM SOC will support multiple boot devices. The device is determined by some FUSE or by sampling pins. The pins will be CPU outputs in a running system, but have been pulled up/down to configure a boot device. Each boot device will have peculiar details; ROM is simple, but NAND flash, SPI flash, MMC, etc need some configuration details. These are also often provided by a on-chip FUSE and/or sampling pins.

A small portion of the device maybe read to further configure the device. For a deeply embedded ARM chip, it may only boot from on-board flash and this process is much simpler; but I believe from the context of the question you are referring to more advanced ARM CPUs. More advanced ARM systems have a boot loader. This is because the amount of code a ROM loader will load is often limited and/or restricted. It is also often complex to set up SDRAM and the boot loader may be structured to run from internal static RAM, which configures the SDRAM.

SoC configuration

       The configuration block captures and holds static SoC configuration data. SoC configuration is captured from the AXI master RDATA bus input pads while the SoC is held at reset, sequenced by an off-chip device. The configuration block has two main control inputs, CONFIGINIT and nCONFIGCLR. These inputs are completely independent of other clocks and resets in the design. They enable you to control the configuration block directly.SoC configuration inputs are sampled on the rising edge of CONFIGINIT.

 Use nCONFIGCLR to reset the configuration block to a default configuration.Select test mode by setting the TESTMODE input HIGH. The configuration block is fully scan inserted to enable full control of the configuration inputs. Some configurations must however, be under user control or held static during test. For this purpose, the configuration block has test inputs that enable you to drive configurations directly. Must disable the internal feedback and input dividers to use the PLL to de-skew the off-chip AXI interface to the on-chip SoC clock. Must also enable the PLL, not bypass the VCO, enable de-skew, and set the VCO range correctly to use PLL de-skew mode.

The following signals are brought directly out to pins to enable debug of the development chip:

·     SPIDEN

·     SPNIDEN

·     DBGEN, considered as IDEN

·     NIDEN.

They are synchronized to:

·     the core clock domain for use within the IEM subsystem

·     the AXI clock for use within the Core Sight subsystem.

 

No alt text provided for this image

                                   Figure 1.Boot sequence

BIOS tasks

?     Check CMOS setup for custom settings

?     Load the interrupt handlers and device drivers

?     Initialize registers and power management settings (ACPI)

?     Initializes RAM

?     POST (Power on Self-test)

?     Display BIOS settings

?     Determine which devices are bootable

?     Initiate bootstrap sequence

Bootable devices

?     To boot an operating system, BIOS runtime searches devices that are both active and bootable in the order of preference defined in CMOS settings

?     Bootable device can be:

–    Floppy Drive

–    CD-ROM

–    Partition on HDD

–    Device on network

USB flash memory stick

MBR


No alt text provided for this image
No alt text provided for this image

Kernel initialization



No alt text provided for this image



Sample initialization


void __init trap_init(void)

{

 set_trap_gate(0,&divide_error);

 set_intr_gate(1,&debug);

 set_intr_gate(2,&nmi);

 set_system_gate(4,&overflow);

 set_intr_gate(14,&page_fault);

 set_system_gate(SYSCALL_VECTOR,&system_call);

}

?     Checks for bugs in architecture (check_bugs)

?     Replaces certain assembler instructions – depending on processor type – with faster, modern alternatives.

?     Last two actions of start kernel:

?     rest_init : New thread that performs some more initializations and starts the first user-space program /sbin/init

?     The original kernel thread becomes the idle thread that is called when system has nothing else to do


要查看或添加评论,请登录

Sampath VP的更多文章

  • Deeplearning what does it fits?

    Deeplearning what does it fits?

    There is a huge enthusiasm for cognitive computing , artificial intelligence , machine learning , deep learning and…

  • Switch to Stand out

    Switch to Stand out

    Bharath Semiconductor Society which emphasis on the ESDM, Semiconductor, entrepreneurship,MSMEs and academics. Since…

    1 条评论
  • ASIC RTL vs FPGA RTL

    ASIC RTL vs FPGA RTL

    The biggest difference between RTL design for ASIC and RTL design for FPGA is that ASICs are custom-designed integrated…

  • DV TALK 31ST AUGUST DONT MISS IT!

    DV TALK 31ST AUGUST DONT MISS IT!

    DV TALK Greetings from Bharath Semiconductor society.Bharath Semiconductor Society of India was established in 2022 as…

    3 条评论
  • RTL Coding in FPGA

    RTL Coding in FPGA

    Module designers shall have detailed view of the design down to function/major component level for near-accurate…

  • Transaction layer of PCIe

    Transaction layer of PCIe

    Transaction layer Transaction layer’s primary responsibility is to create PCI Express request and completion…

  • Deep learning designs

    Deep learning designs

    DL designs for training can be a large size due to the shear amount of high precision MACs, memory routing, and…

  • PCIe Equalization phases

    PCIe Equalization phases

    Equalization is a critical aspect of PCIe technology that ensures the integrity of data transmission in increasingly…

  • PCIe Equalization

    PCIe Equalization

    · PCIe 3.0: Gen 3 introduced static equalization, primarily performed by the transmitter using 128/130 encoding.

  • PCIe Enumeration

    PCIe Enumeration

    PCIe enumeration is the process of detecting the devices connected to the PCIe bus. switches and endpoint devices are…

社区洞察

其他会员也浏览了