All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Landley <rob@landley.net>
To: Rich Felker <dalias@libc.org>,
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-sh@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [J-core] [PATCH v5 00/22] sh: LANDISK and R2Dplus convert to device tree
Date: Mon, 07 May 2018 15:28:37 +0000	[thread overview]
Message-ID: <9f476147-7370-de56-db4e-6745a325a2ca@landley.net> (raw)
In-Reply-To: <20180507144519.GH1392@brightrain.aerifal.cx>



On 05/07/2018 09:45 AM, Rich Felker wrote:
> On Mon, May 07, 2018 at 01:00:17PM +0200, John Paul Adrian Glaubitz wrote:
>> On 05/07/2018 03:40 AM, Yoshinori Sato wrote:
>>>> @Yoshinori:
>>>>
>>>> Did the HDL-160U LANDISK device you have use u-boot by default or
>>>> did you convert it from lilo?
>>>
>>> Yes.
>>> Replace sh-lilo's second stage with u-boot.
>>> With this method it is unnecessary to rewrite Flash for boot.
>>
>> Great, thank you. I will give it a try on my USL-5P and write down
>> the individual steps once I have figured it out.
> 
> Please let me know once you figure it out. I haven't made much
> progress yet and it would be really helpful to have some simple
> directions/outline of what to do, especially one that's not in terms
> of black box tools ("run this command") but how it all works (where
> the different bootloader components live when installed -- MBRs?
> partition boot records? files in a filesystem (who interprets it?)?
> etc.)

U-boot 101. The workflow you want is usually:

1) get u-boot to load and run on the board, with serial console and a basic
knowledge of where the DRAM is. (This often involves fighting with dram refresh
init, often by convincing u-boot NOT to do it because your stage 1 bootloader
already did, which involves a rolled up newspaper and a lot of swearing because
it ASSUMES. Oh it assumes. Or sometimes there's an sram->dram relocation which
means somewhere, there's a magic linker script you will learn to hate. Well,
Rich might be comfortable with that area, I still stub my toes there a lot.)

2) Getting u-boot reading/writing a flash area it can store its environment
variables in, so they can persist. (It's a driver.)

3) get u-boot talking to the network card, with either dhcp or static IP.
(Another driver, and some magic environment variables the driver consumes.)

4) tftp fetch an ELF kernel (or uimage if you must) into DRAM starting at a
known address. (This is a u-boot command line command. You'll need a tftp server
set up on another machine for it to fetch from.)

5) tftp fetch any other data (initrd.cpio.gz, board.dtb). (Same command,
different parameters.)

6) boot the kernel with all that gorp (a big long command line command) which
will need a kernel command line (generally stored in another persistent
environjment variable).

7) make a "go" script that does all that in one commend. There's a command to
run an environment variable's contents as a set of semicolon-separated command
line commands (that's how u-boot implements scripts), and there's a magic
environment variable whose contents get run on startup (bootup? startup? I
forget, it's in the source and docs and a buncha examples out there). It's
cleaner to have the magic one do "run $othervar" rather than putting a lot of
plumbing in the magic one. And you will totally want a "wait 3 seconds for a key
to be pressed and do a shell prompt if it is" header on that or you have to
reflash the bootloader to get your shell prompt back, which is sad.

8) Once you've got tftp working, there's a copy command to copy flash memory to
dram, and a corresponding "write to flash from dram" command with dram start
address and flash start address and length arguments. This is how the boot
without tftp is implemented in u-boot, and how updating the saved image it
auto-boots to if you don't press a key is implemented.

(You can usually configure/build uboot in a couple different ways, with a
brain-dead built in shell or with busybox hush glued into it. Depends on how big
you want the image to be. Not sure how much of that is upstream and how much is
vendor forks I've used, though. Been a while.)

> Rich

Rob

WARNING: multiple messages have this Message-ID (diff)
From: Rob Landley <rob@landley.net>
To: Rich Felker <dalias@libc.org>,
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-sh@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [J-core] [PATCH v5 00/22] sh: LANDISK and R2Dplus convert to device tree
Date: Mon, 7 May 2018 10:28:37 -0500	[thread overview]
Message-ID: <9f476147-7370-de56-db4e-6745a325a2ca@landley.net> (raw)
In-Reply-To: <20180507144519.GH1392@brightrain.aerifal.cx>



On 05/07/2018 09:45 AM, Rich Felker wrote:
> On Mon, May 07, 2018 at 01:00:17PM +0200, John Paul Adrian Glaubitz wrote:
>> On 05/07/2018 03:40 AM, Yoshinori Sato wrote:
>>>> @Yoshinori:
>>>>
>>>> Did the HDL-160U LANDISK device you have use u-boot by default or
>>>> did you convert it from lilo?
>>>
>>> Yes.
>>> Replace sh-lilo's second stage with u-boot.
>>> With this method it is unnecessary to rewrite Flash for boot.
>>
>> Great, thank you. I will give it a try on my USL-5P and write down
>> the individual steps once I have figured it out.
> 
> Please let me know once you figure it out. I haven't made much
> progress yet and it would be really helpful to have some simple
> directions/outline of what to do, especially one that's not in terms
> of black box tools ("run this command") but how it all works (where
> the different bootloader components live when installed -- MBRs?
> partition boot records? files in a filesystem (who interprets it?)?
> etc.)

U-boot 101. The workflow you want is usually:

1) get u-boot to load and run on the board, with serial console and a basic
knowledge of where the DRAM is. (This often involves fighting with dram refresh
init, often by convincing u-boot NOT to do it because your stage 1 bootloader
already did, which involves a rolled up newspaper and a lot of swearing because
it ASSUMES. Oh it assumes. Or sometimes there's an sram->dram relocation which
means somewhere, there's a magic linker script you will learn to hate. Well,
Rich might be comfortable with that area, I still stub my toes there a lot.)

2) Getting u-boot reading/writing a flash area it can store its environment
variables in, so they can persist. (It's a driver.)

3) get u-boot talking to the network card, with either dhcp or static IP.
(Another driver, and some magic environment variables the driver consumes.)

4) tftp fetch an ELF kernel (or uimage if you must) into DRAM starting at a
known address. (This is a u-boot command line command. You'll need a tftp server
set up on another machine for it to fetch from.)

5) tftp fetch any other data (initrd.cpio.gz, board.dtb). (Same command,
different parameters.)

6) boot the kernel with all that gorp (a big long command line command) which
will need a kernel command line (generally stored in another persistent
environjment variable).

7) make a "go" script that does all that in one commend. There's a command to
run an environment variable's contents as a set of semicolon-separated command
line commands (that's how u-boot implements scripts), and there's a magic
environment variable whose contents get run on startup (bootup? startup? I
forget, it's in the source and docs and a buncha examples out there). It's
cleaner to have the magic one do "run $othervar" rather than putting a lot of
plumbing in the magic one. And you will totally want a "wait 3 seconds for a key
to be pressed and do a shell prompt if it is" header on that or you have to
reflash the bootloader to get your shell prompt back, which is sad.

8) Once you've got tftp working, there's a copy command to copy flash memory to
dram, and a corresponding "write to flash from dram" command with dram start
address and flash start address and length arguments. This is how the boot
without tftp is implemented in u-boot, and how updating the saved image it
auto-boots to if you don't press a key is implemented.

(You can usually configure/build uboot in a couple different ways, with a
brain-dead built in shell or with busybox hush glued into it. Depends on how big
you want the image to be. Not sure how much of that is upstream and how much is
vendor forks I've used, though. Been a while.)

> Rich

Rob

  reply	other threads:[~2018-05-07 15:28 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-03 16:46 [PATCH v5 00/22] sh: LANDISK and R2Dplus convert to device tree Yoshinori Sato
2016-07-03 16:46 ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 01/22] sh: Add sh-specific early_init_dt_reserve_memory_arch Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-04  2:03   ` Rich Felker
2016-07-04  2:03     ` Rich Felker
2016-07-06 13:53     ` Yoshinori Sato
2016-07-06 13:53       ` Yoshinori Sato
2016-07-06 14:50       ` Rich Felker
2016-07-06 14:50         ` Rich Felker
2016-07-03 16:46 ` [PATCH v5 02/22] sh: More early unflatten device tree Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 03/22] sh: set preset_lpj Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 04/22] sh: Use P1SEGADDR Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-04  1:48   ` Rich Felker
2016-07-04  1:48     ` Rich Felker
2016-07-06 14:11     ` Yoshinori Sato
2016-07-06 14:11       ` Yoshinori Sato
2016-07-06 14:53       ` Rich Felker
2016-07-06 14:53         ` Rich Felker
2016-07-03 16:46 ` [PATCH v5 05/22] sh: command line passing chosen/bootargs in devicetree Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 06/22] sh: FDT address save before bank change Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 07/22] sh: Passing FDT address on zImage Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 08/22] sh: Disable board specific code on device tree mode Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 09/22] sh: Use GENERIC_IOMAP " Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 10/22] sh: Add board specific initialize of of-generic Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-04  1:35   ` Rich Felker
2016-07-04  1:35     ` Rich Felker
2016-07-06 14:27     ` Yoshinori Sato
2016-07-06 14:27       ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 11/22] sh: SH7750/51 CPG Driver Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
     [not found] ` <1467564402-2649-1-git-send-email-ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>
2016-07-03 16:46   ` [PATCH v6 12/22] sh: Add PCI host bridge driver for SH7751 Yoshinori Sato
2016-07-03 16:46     ` Yoshinori Sato
2016-07-03 16:46     ` Yoshinori Sato
2016-07-05 15:53     ` Rob Herring
2016-07-05 15:53       ` Rob Herring
2016-07-06 16:19       ` Yoshinori Sato
2016-07-06 16:19         ` Yoshinori Sato
     [not found]     ` <1467564402-2649-13-git-send-email-ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>
2016-07-22 22:59       ` Bjorn Helgaas
2016-07-22 22:59         ` Bjorn Helgaas
2016-07-22 22:59         ` Bjorn Helgaas
2016-07-03 16:46   ` [PATCH v5 13/22] sh: irqchip: SH7751 IRQCHIP Driver Yoshinori Sato
2016-07-03 16:46     ` Yoshinori Sato
2016-07-03 16:46     ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 14/22] sh: SH7751 core dtsi Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 15/22] sh: Move common PCI stuff to arch/sh/kernel Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-04  1:55   ` Rich Felker
2016-07-04  1:55     ` Rich Felker
2016-07-06 16:17     ` Yoshinori Sato
2016-07-06 16:17       ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 16/22] pci: pci_config_window move to linux/pci.h Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 17/22] pci: PCI_HOST_GENERIC enable for SH Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 18/22] sh: Add separate DTB build rule Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 19/22] sh: IO-DATA HDL-U (a.k.a landisk) IRQCHIP driver Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-11 14:02   ` Rob Herring
2016-07-11 14:02     ` Rob Herring
2016-07-03 16:46 ` [PATCH v5 20/22] sh: IO-DATA HDL-U (a.k.a landisk) DeviceTree Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 19:00   ` Sergei Shtylyov
2016-07-03 19:00     ` Sergei Shtylyov
2016-07-06 16:18     ` Yoshinori Sato
2016-07-06 16:18       ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 21/22] sh: Renesas RTS7751R2Dplus (a.k.a R2Dplus) IRQCHIP Driver Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2016-07-03 16:46 ` [PATCH v5 22/22] sh: Renesas RTS7751R2Dplus (a,k.a R2Dplus) DeviceTree Yoshinori Sato
2016-07-03 16:46   ` Yoshinori Sato
2017-11-17 10:37 ` [PATCH v5 00/22] sh: LANDISK and R2Dplus convert to device tree John Paul Adrian Glaubitz
2017-11-17 10:37   ` John Paul Adrian Glaubitz
2017-11-17 17:39   ` [J-core] " Rob Landley
2017-11-17 17:39     ` Rob Landley
2017-11-17 17:49     ` John Paul Adrian Glaubitz
2017-11-17 17:49       ` John Paul Adrian Glaubitz
2017-11-17 19:17       ` Rich Felker
2017-11-17 19:17         ` Rich Felker
2017-11-17 19:54         ` John Paul Adrian Glaubitz
2018-01-05 21:28           ` Rich Felker
2018-01-05 21:28             ` Rich Felker
2018-01-05 21:47             ` John Paul Adrian Glaubitz
2018-01-05 21:47               ` John Paul Adrian Glaubitz
2018-01-05 22:00               ` Rich Felker
2018-01-05 22:00                 ` Rich Felker
2018-01-05 22:10                 ` John Paul Adrian Glaubitz
2018-01-05 22:10                   ` John Paul Adrian Glaubitz
2018-05-03  1:37             ` Rich Felker
2018-05-03  1:37               ` Rich Felker
2018-05-03  2:33               ` Rich Felker
2018-05-03  2:33                 ` Rich Felker
2018-05-03 10:07                 ` John Paul Adrian Glaubitz
2018-05-03 10:07                   ` John Paul Adrian Glaubitz
2018-05-03 15:41                   ` Rich Felker
2018-05-03 15:41                     ` Rich Felker
2018-05-07  1:40                   ` Yoshinori Sato
2018-05-07  1:40                     ` Yoshinori Sato
2018-05-07 11:00                     ` John Paul Adrian Glaubitz
2018-05-07 11:00                       ` John Paul Adrian Glaubitz
2018-05-07 13:40                       ` Rob Landley
2018-05-07 13:40                         ` Rob Landley
2018-05-07 13:50                         ` John Paul Adrian Glaubitz
2018-05-07 13:50                           ` John Paul Adrian Glaubitz
2018-05-07 14:05                           ` Geert Uytterhoeven
2018-05-07 14:05                             ` Geert Uytterhoeven
2018-05-07 14:43                         ` Rich Felker
2018-05-07 14:43                           ` Rich Felker
2018-05-07 15:13                           ` Rob Landley
2018-05-07 15:13                             ` Rob Landley
2018-05-07 15:52                             ` Rich Felker
2018-05-07 15:52                               ` Rich Felker
2018-05-07 14:45                       ` Rich Felker
2018-05-07 14:45                         ` Rich Felker
2018-05-07 15:28                         ` Rob Landley [this message]
2018-05-07 15:28                           ` Rob Landley
2018-05-07 15:55                           ` Rich Felker
2018-05-07 15:55                             ` Rich Felker
2018-05-07 20:01                             ` Rob Landley
2018-05-07 20:01                               ` Rob Landley
2018-05-08 12:05                       ` Yoshinori Sato
2018-05-08 12:05                         ` Yoshinori Sato
2018-05-15  1:41                     ` Rich Felker
2018-05-15  1:41                       ` Rich Felker
2018-05-16  6:42                       ` Yoshinori Sato
2018-05-16  6:42                         ` Yoshinori Sato
2018-05-18  7:51                         ` John Paul Adrian Glaubitz
2018-05-18  7:51                           ` John Paul Adrian Glaubitz

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=9f476147-7370-de56-db4e-6745a325a2ca@landley.net \
    --to=rob@landley.net \
    --cc=dalias@libc.org \
    --cc=glaubitz@physik.fu-berlin.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=ysato@users.sourceforge.jp \
    /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.