title: Understanding Linux load address for U-Boot process
body: <p>I'm trying to understand embedded Linux principles and can't figure out addresses at u-boot output.</p>
  
  <p>For example, I have UDOO board based on i.MX6 quad processor and I got following output from U-Boot:</p>
  
  
  
  <pre><code>U-Boot 2013.10-rc3 (Jan 20 2014 - 13:33:34)
  
  CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
  Reset cause: POR
  Board: UDOO
  DRAM:  1 GiB
  MMC:   FSL_SDHC: 0
  No panel detected: default to LDB-WVGA
  Display: LDB-WVGA (800x480)
  In:    serial
  Out:   serial
  Err:   serial
  Net:   using phy at 6
  FEC [PRIME]
  Warning: FEC MAC addresses don't match:
  Address in SROM is         00:c0:08:88:a5:e6
  Address in environment is  00:c0:08:88:9c:ce
  
  Hit any key to stop autoboot:  0 
  Booting from mmc ...
  4788388 bytes read in 303 ms (15.1 MiB/s)
  ## Booting kernel from Legacy Image at 12000000 ...
     Image Name:   Linux-3.0.35
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4788324 Bytes = 4.6 MiB
     Load Address: 10008000
     Entry Point:  10008000
     Verifying Checksum ... OK
     Loading Kernel Image ... OK
  
  Starting kernel ...
  </code></pre>
  
  <p>I don't understand the value of Load address 0x10008000. According to documentation for this particular processor, at address zone 0x10000000 - 0xffffffff is mapped main memory. But what is 0x8000 offset? I can't figure out reason for this value.</p>
  
  <p>I also don't understand address 0x12000000, where the kernel image is loaded from. Is there mapped memory region for SD card?</p>
  
  <p>Please, can you give me some explanation for these addresses or even better, some references to resources about this topic. My goal is to learn how to port u-boot and Linux kernel to another boards.</p>
  
  <p>Thank you!</p>