public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: u-boot@lists.denx.de
Subject: [PATCH 4/5] x86: edison: Generate an image suitable for xFSTK
Date: Fri, 4 Sep 2020 12:39:48 +0300	[thread overview]
Message-ID: <20200904093948.GJ1891694@smile.fi.intel.com> (raw)
In-Reply-To: <20200904012856.1175506-5-sjg@chromium.org>

On Thu, Sep 03, 2020 at 07:28:55PM -0600, Simon Glass wrote:
> It is useful to be able to flash Edison directly without relying on the
> installed U-Boot being functional.
> 
> Add a binman image for this. It includes a master-boot record, U-Boot
> binary and an environment.

master-boot record -> OSIP header

It's a part of DnX (Download'n'Execute) protocol. Let's say it's coincidence it
looks like MBR.

With above and below changes made,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> 
>  arch/x86/cpu/tangier/Kconfig              |   1 +
>  arch/x86/dts/edison.dts                   |  34 +++++++++++++++
>  board/intel/edison/edison-environment.txt |  48 ++++++++++++++++++++++

>  board/intel/edison/edison-mbr.dat         | Bin 0 -> 512 bytes

mbr -> osip

>  4 files changed, 83 insertions(+)
>  create mode 100644 board/intel/edison/edison-environment.txt
>  create mode 100644 board/intel/edison/edison-mbr.dat
> 
> diff --git a/arch/x86/cpu/tangier/Kconfig b/arch/x86/cpu/tangier/Kconfig
> index d2b7edecd60..571470c74b2 100644
> --- a/arch/x86/cpu/tangier/Kconfig
> +++ b/arch/x86/cpu/tangier/Kconfig
> @@ -12,6 +12,7 @@ config INTEL_TANGIER
>  	imply MMC_SDHCI_TANGIER
>  	imply USB
>  	imply USB_DWC3
> +	imply BINMAN
>  
>  if INTEL_TANGIER
>  
> diff --git a/arch/x86/dts/edison.dts b/arch/x86/dts/edison.dts
> index df24aa0d26a..b5aac6b7349 100644
> --- a/arch/x86/dts/edison.dts
> +++ b/arch/x86/dts/edison.dts
> @@ -22,6 +22,10 @@
>  		serial2 = &serial2;
>  	};
>  
> +	binman: binman {
> +		multiple-images;
> +	};
> +
>  	chosen {
>  		stdout-path = &serial2;
>  	};
> @@ -130,3 +134,33 @@
>  		};
>  	};
>  };
> +
> +&binman {
> +	u-boot-edison {
> +		filename = "u-boot-edison.img";
> +
> +		/* This is Master-Boot Record */
> +		blob {
> +			filename = "edison-mbr.dat";
> +		};
> +
> +		u-boot {
> +			offset = <0x200>;
> +		};
> +
> +		u-boot-env {
> +			offset = <0x200200>;
> +			filename = "edison-environment.txt";
> +			size = <0x10000>;
> +			fill-byte = [ff];
> +		};
> +
> +		u-boot-env2 {
> +			type = "u-boot-env";
> +			offset = <0x500200>;
> +			filename = "edison-environment.txt";
> +			size = <0x10000>;
> +			fill-byte = [ff];
> +		};
> +	};
> +};
> diff --git a/board/intel/edison/edison-environment.txt b/board/intel/edison/edison-environment.txt
> new file mode 100644
> index 00000000000..afe00920461
> --- /dev/null
> +++ b/board/intel/edison/edison-environment.txt
> @@ -0,0 +1,48 @@
> +partitions=uuid_disk=${uuid_disk};name=u-boot0,start=1MiB,size=2MiB,uuid=${uuid_uboot0};name=u-boot-env0,size=1MiB,uuid=${uuid_uboot_env0};name=u-boot1,size=2MiB,uuid=${uuid_uboot1};name=u-boot-env1,size=1MiB,uuid=${uuid_uboot_env1};name=factory,size=1MiB,uuid=${uuid_factory};name=panic,size=24MiB,uuid=${uuid_panic};name=boot,size=32MiB,uuid=${uuid_boot};name=rootfs,size=1536MiB,uuid=${uuid_rootfs};name=update,size=768MiB,uuid=${uuid_update};name=home,size=-,uuid=${uuid_home};
> +do_dfu_alt_info_mmc=setenv dfu_alt_info "ifwi${hardware_id} raw 0 8192 mmcpart 1;ifwib${hardware_id} raw 0 8192 mmcpart 2;u-boot0 part 0 1;u-boot-env0 part 0 2;u-boot1 part 0 3;u-boot-env1 part 0 4;boot part 0 7;rootfs part 0 8;update part 0 9;home part 0 10;vmlinuz fat 0 7;initrd fat 0 7"
> +dfu_alt_info_ram=kernel ram ${loadaddr} 0x800000
> +do_dfu_alt_info_ifwi=setenv dfu_alt_info "ifwi${hardware_id} raw 0 8192 mmcpart 1;ifwib${hardware_id} raw 0 8192 mmcpart 2"
> +dfu_alt_info_reset=reset ram 0x0 0x0
> +bootargs_console=console=ttyMFD2 earlyprintk=ttyMFD2,keep
> +bootargs_debug=loglevel=4
> +do_bootargs_rootfs=setenv bootargs_rootfs rootwait root=PARTUUID=${uuid_rootfs} rootfstype=ext4
> +first_install_retry=0
> +first_install_max_retries=3
> +ota_update_retry=0
> +ota_update_max_retries=3
> +audio_codec_name=audio_codec="dummy"
> +do_audio_support=setenv audio_support platform_mrfld_audio.${audio_codec_name}
> +do_compute_target=if itest.b ${first_install_retry} -gt ${first_install_max_retries} || itest.b ${ota_update_retry} -gt ${ota_update_max_retries}; then echo "Switch to Rescue target"; setenv bootargs_target rescue; saveenv; fi
> +mmc-bootargs=run do_bootargs_rootfs; run do_audio_support; setenv bootargs ${bootargs_rootfs} ${bootargs_console} ${bootargs_debug} g_multi.ethernet_config=${bootargs_ethconfig} systemd.unit=${bootargs_target}.target hardware_id=${hardware_id} g_multi.iSerialNumber=${serial#} g_multi.dev_addr=${usb0addr} ${audio_support}
> +loadaddr=0x100000
> +load_kernel=fatload mmc 0:7 ${loadaddr} vmlinuz
> +do_partition_done=0
> +do_partition=if itest.b ${do_partition_done} -eq 1; then echo "Partitioning already done..."; else run do_force_partition ; fi
> +do_force_partition=echo "Partitioning using GPT"; gpt write mmc 0 ${partitions} ; mmc rescan; setenv do_partition_done 1 ; saveenv
> +do_flash_ifwi=run do_dfu_alt_info_ifwi ; dfu 0 mmc 0 $dfu_to_sec
> +do_flash_os=if itest.b ${do_flash_os_done} -eq 1 ; then echo "Flashing already done..." ; else run do_force_flash_os; fi
> +do_force_flash_os=run do_dfu_alt_info_mmc ; sleep 1 ; setenv do_flash_os_done 1 ; saveenv ; dfu 0 mmc 0 $dfu_to_sec
> +do_flashall=run do_partition;run do_flash_ifwi;run do_flash_os
> +do_dnx=setenv dfu_alt_info ${dfu_alt_info_ram};dfu 0 ram 0 ram;run bootcmd
> +init_dfu=run do_dfu_alt_info_mmc ; saveenv
> +bootcmd=echo "Target:${target_name}"; run do_partition; run do_handle_bootargs_mode;
> +do_handle_bootargs_mode=run do_preprocess_bootargs_mode; if itest.s $bootargs_mode == "ota" ; then run do_ota; fi; if itest.s $bootargs_mode == "boot" ; then run do_boot; fi; if itest.s $bootargs_mode == "flash"; then run do_flash; fi; run do_fallback; exit;
> +do_preprocess_bootargs_mode=if env exists bootargs_mode ; then ; else setenv bootargs_mode "boot" ;fi;
> +do_fallback=echo "Unknown boot mode: $bootargs_mode"; env delete -f bootargs_mode; saveenv; echo "Resetting to default boot mode and reboot..."; reset;
> +do_boot=run boot_target_cmd;
> +do_flash=run do_force_flash_os;
> +ota_done=0
> +ota_script_addr=0x100000
> +do_ota_init=setenv ota_status 1 ; env delete -f bootargs_mode
> +do_load_ota_scr=if fatload mmc 0:9 $ota_script_addr ota_update.scr ; then setenv ota_status 0 ; else setenv ota_status 1 ; fi
> +do_source_ota_scr=if test $ota_status -eq 0 ; then if source $ota_script_addr ; then setenv ota_status 0 ; else setenv ota_status 2 ; fi ; fi
> +do_ota_clean=saveenv ; reset
> +do_ota=run do_ota_init ; run do_load_ota_scr ; run do_source_ota_scr ; run do_ota_clean
> +target_name=blank
> +bootdelay=1
> +do_flash_os_done=1
> +bootargs_target=multi-user
> +bootargs_ethconfig=cdc
> +dfu_to_sec=3
> +do_probe_dfu=run do_dfu_alt_info_mmc ; dfu 0 mmc 0 $dfu_to_sec
> +boot_target_cmd=run do_flash_os;run do_probe_dfu;run do_compute_target;run mmc-bootargs;run load_kernel;zboot ${loadaddr}
> diff --git a/board/intel/edison/edison-mbr.dat b/board/intel/edison/edison-mbr.dat
> new file mode 100644
> index 0000000000000000000000000000000000000000..c984e99f247c54253f1d950ece602d44c10cb6eb
> GIT binary patch
> literal 512
> zcmY%K4_0AdU}R!sv|zvqI6yK2j0^%mY{0<459IwH1p^uah`4$OWHN%d4;C{cM2TaC
> Gt^xr56@#Pz
> 
> literal 0
> HcmV?d00001
> 
> -- 
> 2.28.0.526.ge36021eeef-goog
> 

-- 
With Best Regards,
Andy Shevchenko

  reply	other threads:[~2020-09-04  9:39 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-04  1:28 [PATCH 0/5] edison: Support for writing an xFSTK image Simon Glass
2020-09-04  1:28 ` [PATCH 1/5] x86: Use multiple images Simon Glass
2020-09-04  9:30   ` Andy Shevchenko
2020-09-04  1:28 ` [PATCH 2/5] binman: Show an error when a file is missing Simon Glass
2020-09-04  9:33   ` Andy Shevchenko
2020-09-07  1:43     ` Simon Glass
2020-09-07  9:05       ` Andy Shevchenko
2020-09-07 13:57         ` Simon Glass
2020-09-04  1:28 ` [PATCH 3/5] binman: Support adding a U-Boot environment Simon Glass
2020-09-04  9:37   ` Andy Shevchenko
2020-09-04  1:28 ` [PATCH 4/5] x86: edison: Generate an image suitable for xFSTK Simon Glass
2020-09-04  9:39   ` Andy Shevchenko [this message]
2020-09-04  1:28 ` [PATCH 5/5] x86: edison: Add documentation for using am xFSTK image Simon Glass
2020-09-04  9:43   ` Andy Shevchenko
2020-09-04  9:46 ` [PATCH 0/5] edison: Support for writing an " Andy Shevchenko
2020-09-05  3:23   ` Simon Glass
2020-09-07  8:04     ` Andy Shevchenko
2020-09-07 13:57       ` Simon Glass
2020-09-07 14:12         ` Tom Rini
2020-09-07 14:15           ` Simon Glass
2020-09-07 15:10             ` Andy Shevchenko
2020-09-22  7:11 ` Bin Meng
2020-09-22 22:03   ` Simon Glass
2020-09-24  3:22     ` Bin Meng
2020-09-24  3:27       ` Bin Meng
2020-09-25  1:00         ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200904093948.GJ1891694@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox