From: Eric Nelson <eric@nelint.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] imx_common: check for Serial Downloader in spl_boot_device
Date: Fri, 11 Dec 2015 07:40:45 -0700 [thread overview]
Message-ID: <566AE06D.9000102@nelint.com> (raw)
In-Reply-To: <1449841219-22857-1-git-send-email-sbabic@denx.de>
Hi Stefano,
On 12/11/2015 06:40 AM, Stefano Babic wrote:
> Check for bmode before reading the boot device
> to check if a serial downloader is started,
> and returns UART if the serial downloader is set,
> letting SPL to wait for an image if
> CONFIG_SPL_YMODEM_SUPPORT is set.
>
> This allows to load again a SPL based board
> with imx_usb_loader together with a tool
> such as kermit.
>
> Signed-off-by: Stefano Babic <sbabic@denx.de>
> CC: Tim Harvey <tharvey@gateworks.com>
> CC: Fabio Estevam <Fabio.Estevam@freescale.com>
> CC: Eric Nelson <eric.nelson@boundarydevices.com>
> ---
>
> Changes in v2:
> - Add documentation (S. Roese)
> - Check just bits 24-25 because reserved bits are set on some variants
> (E. Nelson)
> - Set boot device to UARt if USB is set to let bmode working as
> suggested by Eric
>
> arch/arm/imx-common/spl.c | 8 ++++++++
> doc/README.imx6 | 51 +++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 59 insertions(+)
>
> diff --git a/arch/arm/imx-common/spl.c b/arch/arm/imx-common/spl.c
> index ac6e40e..a8f2492 100644
> --- a/arch/arm/imx-common/spl.c
> +++ b/arch/arm/imx-common/spl.c
> @@ -20,7 +20,15 @@ u32 spl_boot_device(void)
> struct src *psrc = (struct src *)SRC_BASE_ADDR;
> unsigned int gpr10_boot = readl(&psrc->gpr10) & (1 << 28);
> unsigned reg = gpr10_boot ? readl(&psrc->gpr9) : readl(&psrc->sbmr1);
> + unsigned int bmode = readl(&psrc->sbmr2);
>
> + /*
> + * Check for BMODE if serial downloader is enabled
> + * BOOT_MODE - see IMX6DQRM Table 8-1
> + */
> + if ((((bmode >> 24) & 0x03) == 0x01) || /* Serial Downloader */
I think Marek will have a problem with the yoda conditional:
> + (gpr10_boot && (1 == reg)))
> + return BOOT_DEVICE_UART;
> /* BOOT_CFG1[7:4] - see IMX6DQRM Table 8-8 */
> switch ((reg & 0x000000FF) >> 4) {
> /* EIM: See 8.5.1, Table 8-9 */
> diff --git a/doc/README.imx6 b/doc/README.imx6
> index 437af2f..5aa41f2 100644
> --- a/doc/README.imx6
> +++ b/doc/README.imx6
> @@ -84,3 +84,54 @@ Address:
> Reading bank 4:
>
> Word 0x00000002: 9f027772 00000004
> +
> +2. Using imx_usb_loader for first install with SPL
> +--------------------------------------------------
> +
> +imx_usb_loader is a very nice tool by BoundaryDevice that
> +allow to install U-Boot without a JTAG debugger, using
> +the USB boot mode as described in the manual. It is
> +a replacement for Freescale's MFGTOOLS.
> +
> +The sources can be found here:
> +
> + https://github.com/boundarydevices/imx_usb_loader.git
> +
> +Booting in USB mode, the i.MX6 announces itself to the Linux Host as:
> +
> +Bus 001 Device 111: ID 15a2:0061 Freescale Semiconductor, Inc.
> +
> +imx_usb_loader is able to download a single file (u-boot.imx)
> +to the board. For boards without SPL support, it is enough to
> +issue the command:
> +
> + sudo ../imx_usb_loader/imx_usb -v u-boot.imx
> +
s/requires to use two communications/requires two downloads/
> +Getting U-Boot when SPL support is active, it requires to use
> +two communications. imx_usb_loader downloads the SPL into
> +OCRAM and starts it. SPL will check for a valid u-boot.img, and
> +because it is not found, it will wait for it using the y-modem
> +protocol via the console.
> +
I think "by combining" would be clearer:
> +A first install is then possible combining imx_usb_loader with
> +another tool such as kermit.
> +
> +sudo ../imx_usb_loader/imx_usb -v SPL
> +kermit kermit_uboot
> +
> +and kermit_uboot contains something like this (set line should be adjusted):
> +
> +set line /dev/ttyUSB1
> +set speed 115200
> +SET CARRIER-WATCH OFF
> +set flow-control none
> +set handshake none
> +set prefixing all
> +set file type bin
> +set protocol ymodem
> +send u-boot.img
> +c
> +
> +The last "c" command tells kermit (from ckermit package in most distros)
> +to switch from command line mode to communication mode, and when the
> +script is finished, the U-Boot prompt is shown in the same shell.
>
By the way, besides the couple of nit-picks above, this documentation is
really nice!
Otherwise:
Reviewed-By: Eric Nelson <eric@nelint.com>
Tested-By: Eric Nelson <eric@nelint.com>
next prev parent reply other threads:[~2015-12-11 14:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-11 13:40 [U-Boot] [PATCH v2] imx_common: check for Serial Downloader in spl_boot_device Stefano Babic
2015-12-11 14:40 ` Eric Nelson [this message]
2015-12-11 14:58 ` Stefano Babic
2015-12-11 17:33 ` Marek Vasut
2015-12-11 19:49 ` Eric Nelson
2015-12-11 20:45 ` Marek Vasut
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=566AE06D.9000102@nelint.com \
--to=eric@nelint.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.