I'm a bit lost regarding the boot concept of a modern system from a serial flash device. Having programmed quite a number of simple micros ranging from 8 bit PICs to 32 bit Power Architecture down on the bare metal (always by reprogramming the normal bus-addressable flash)I wonder how modern SoCs boot from serial devices. I didn't find too much on the net either as every system seems to rely on a combination of sd-card programming tool and a secondary bootloader, both receiving little to no attention.
how does an ARM boot from a sd card?
1.3k Views Asked by Vroomfondel At
1
There are 1 best solutions below
Related Questions in ARM
- Jiobook flashing
- How to flush denormal numbers to zero for apple silicon?
- How to exploit Unified Memory in OpenCL with CL_MEM_ALLOC_HOST_PTR flag?
- ARM Assembly code is not executing in Vitis IDE
- Which version of ARM does the M1 chip run on?
- Vector by Scalar Division with -ffast-math
- Why veneer code generated by gcc for cortex-m0 seems 8-byte aligned?
- Getting almost random time stamp counter on ARM
- Portenta H7 Baremetal Development and a Little Guidance on Embedded System Learning Roadmap
- STM32 RTC3 Mixed Mode: Writing TR resets SSR
- Implementing Quick Sort Algorithm in Visual2 with armv7
- How can I create an Inline assembly command with a multi-variable register offset?
- Inquiry: ARM Compatibility for Puppeteer
- Confusion with thumb instructions while compiling recipe for cortexm4 CPU
- Difficulty understanding virtual LPIs in GICv3
Related Questions in BOOT
- Can't upgrade to newest version of linux-image-6.5.0-26-generic
- Direct boot from USB without changing BIOS setting or selecting from boot manager
- How can I implement a android app which is developed with kotlin in Android studio with my back end in spring boot?
- Android boot animation change in source code
- Pi Pico C++ code doesn't autorun after reset
- fsck error on boot: dev/mapper/ubuntu--vg-ubuntu--lv: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
- Enabling Lazy Initialization Breaks Kafka Listeners Using Spring Cloud Kafka Binder
- Spring Boot App in Docker container - SQL Server Integrated Security
- Rails bootsnap/eventmachine in boot.rb NoMethodError get_hosts_path for module Win32::Resolv
- Bootstrap for a variable after group by (getting confidence intervals for each group)
- Could not determine recommended JdbcType for `com.test.dd.entity.ConsumerRequest
- How to migrate fragment syntax in Thymeleaf 3.x from version 2.x
- Tibco ems service unavailable exception in jdk 17
- Memory Aliasing to a specific Flash Sector
- Spring Boot Integration MQTT DSL - Channel not Autowired
Related Questions in BOOTLOADER
- Seeking for the the method for adding the DL (data register) value to DX register
- x86 Wrote a boot loader that prints a message to the screen but the characters are completely different to what I expected
- Why is there a difference in memory writes when my qemu runs directly and when debugging the img with GDB?
- No BIOS output from sector 1
- x86 BIOS stage 1 boot code halting after loop from interrupt
- Writing my own MBR code to choose between systems
- Error with file size of assembly bootloader
- Bootloader are really in sector 0?
- VTOR not found in STM32F030
- IMX6ULL: [ 75.326643] watchdog: watchdog0: watchdog did not stop! on Linux 6.1.1
- when I try to enable flash encryption in esp32, the bootloader size is large . But I'm unable to find bootloader field in partition table
- "Cannot find bounds of current function" error in GDB while debugging bootloader code
- What's the relation between ss:sp and extended BIOS(int 0x13, ah = 0x42)?
- Confusion regarding CS and DS segment registers during bootloading process
- Loading two .elf files in Renode (bootloader and application)
Related Questions in SYSTEM-ON-CHIP
- Do all Bluetooth LE devices implement the HCI interface?
- Compilers for mpSoC
- Can we add a new arbiter in Gem5 simulator (Garnet 2.0)
- GadgetFS on Allwinner H3 based linux board
- network-on-chip verilog code
- Can I use LDREX/STREX to implement a spin lock without enabling SCU in a multicore ARM Cortex-A9 SoC?
- Nordic nRF51822 + Nordic IoT SDK
- Basic ARM application in Xilinx Zynq SoC
- Can cc2541 be the role of observer and peripheral at the same time?
- How to retrieve SoC model name of an android device?
- Python script for polling Raspberry Pi internal SoC temperature
- how does an ARM boot from a sd card?
- Accessing Platform Device from Userpace
- Libero soc & ide for windows 7 x32
- Can a 32 bit MCU have data lines more than 32?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The 'how' is a mask-PROM based primary-boot loader baked into the SoC. It doesn't need to do much besides initialise the SD card interface and possibly some SDRAM with enormously conservative timings (although some devices have embedded SRAM to use at this point).
It then enumerates the card interface, reads the FAT from the first card it finds, and from whence, copies the secondary boot-loader into SRAM or SDRAM and executes it.
Often there are restrictions such as the secondary bootloader being the first file on the card and the allocated locks being contiguous.
Many systems then load yet another boot-loader at this point, which is the one which boots the operating system.