1) normalmente haverá um deslocamento para cada interface inicializável definida no manual de referência. Por exemplo, você pode inicializar a partir da memória mapeada NOR, NAND, etc. O NOR pode ser 0x1000, NAND 0x4000 por exemplo. O capítulo do manual de referência sobre inicialização irá dizer-lhe.
2) veja 1
3) Muitas vezes, o uboot não pode simplesmente "entrar na RAM". Isso tem que ser feito com um bootloader de primeiro estágio. O U-boot tem o recurso SPL (loader de programa secundário) para fazer isso. O trabalho deste SPL é executado fora do SRAM do processador e para inicializar o DRAM do sistema, para que seja então possível carregar o executável completo do U-boot. U-boot então precisará do LOADADDR adequado para a placa / chip com que você está trabalhando. O U-boot não descompacta o kernel quando está inicializando. Este é tipicamente um trabalho do próprio kernel por razões legadas. Obviamente, seu kernel deve ser capaz de caber em sua memória, e você pode precisar ter certeza de que não está sobrescrevendo outros componentes (rootfs, árvore de dispositivos) quando o kernel se descompacta.
4) Qualquer uma das opções existe e é válida. Se o rootfs for separado, você precisará saber que tipo de sistema de arquivos é. Se for um initramfs, você pode definir onde ele está armazenado em NAND bruto. Se for um sistema de arquivos persistente (ext4), o U-boot precisa saber como processar o mapa de partição. Uma vez feito isso, você realmente passa o caminho do dispositivo, não um endereço para o kernel.