Loading ...
Sorry, an error occurred while loading the content.

avr with u-boot on ls hg

Expand Messages
  • Michael Weiser
    Hi experts, I m trying to install u-boot on my LinkStation HG. I ve got everything working but one detail: When running u-boot as a RAM build using uloader.o
    Message 1 of 3 , Feb 18, 2007
    • 0 Attachment
      Hi experts,

      I'm trying to install u-boot on my LinkStation HG. I've got everything
      working but one detail: When running u-boot as a RAM build using
      uloader.o the AVR isn't initialized by either u-boot or the booted
      kernel. It can't be initialized manually either. Commands sent to
      it are ignored and the machine reboots after about 5 minutes.

      Is this supposed to happen and will be all right once the flash build is
      flashed or is something wrong with my setup? I'm reluctant to try
      flashing it because I don't have a serial console or JTAG for the box.

      My setup:

      - current Gentoo ~ppc with glibc-2.3.6 and gcc-4.1.1
      - kernel 2.6.20 ppc-based started using loader.o
      - uloader.o for stock kernel 2.4.20_mvl31-ppc_linkstation compiled using
      gcc-2.95.3
      - kernel 2.6.19.2 ppc-based
      - kernel 2.6.20 powerpc-fdt-based
      - u-boot-1.1.4 with LS patch 2.1.0
      - u-boot-86xx git current with Guennadi Liakhovetski's patches

      What I've tried so far:

      - ppc-based kernel with u-boot-1.1.4
      - powerpc-based kernel with u-boot-86xx-git
      - powerpc-based kernel with u-boot-86xx-git compiled using gcc-3.4.6
      - flboot of stock kernel using u-boot-86xx-git
      - sending commands to different ttys (ttyS0 [no change], ttyS2 [i/o
      error])

      In all cases the power led keeps blinking rapidly, commands sent to the
      AVR are ignored and the machine reboots after a few minutes. Also the
      minimal console using the power button doesn't work. Otherwise
      everything behaves as expected: netconsole works in u-boot, loading of
      uImage kernels works for ppc-based and powerpc-fdt-based kernels,
      netconsole works for the kernel and the system runs normally.

      I've seen that the RAM build doesn't initialise the UARTs in
      early_init.S. Does this have something to do with my observations?

      Any help would be greatly appreciated because this is the last obstacle
      in switching to u-boot.
      --
      bye, Micha
      I like Kaba!
    • Michael Weiser
      ... Addendum: When loading a 2.6.20 ppc-based kernel using loader.o, the avr can be initialised manually using echo -n [[[[ /dev/ttyS1 and the like. The
      Message 2 of 3 , Feb 19, 2007
      • 0 Attachment
        On Sun, Feb 18, 2007 at 10:23:46PM +0100, Michael Weiser wrote:

        > In all cases the power led keeps blinking rapidly, commands sent to the
        > AVR are ignored and the machine reboots after a few minutes. Also the
        > minimal console using the power button doesn't work. Otherwise

        Addendum: When loading a 2.6.20 ppc-based kernel using loader.o, the avr
        can be initialised manually using echo -n "[[[[" >/dev/ttyS1 and the
        like. The problem seems to be uboot-specific, not hardware-related.
        --
        bye, Micha
      • Michael Weiser
        ... What appears to happen to your setup is that the AVR receives the reboot command from the kernel before passing the control to u-boot. Once the reboot
        Message 3 of 3 , Feb 23, 2007
        • 0 Attachment
          On Mon, Feb 19, 2007 at 01:05:32PM +0100, Michael Weiser wrote:

          > > In all cases the power led keeps blinking rapidly, commands sent to the
          > > AVR are ignored and the machine reboots after a few minutes. Also the
          > > minimal console using the power button doesn't work. Otherwise
          > Addendum: When loading a 2.6.20 ppc-based kernel using loader.o, the avr
          > can be initialised manually using echo -n "[[[[" >/dev/ttyS1 and the
          > like. The problem seems to be uboot-specific, not hardware-related.

          Private mail from linuxnotincluded gives the answer:

          ---
          What appears to happen to your setup is that the AVR receives the reboot
          command from the kernel before passing the control to u-boot. Once the
          reboot command is issued to the AVR, there is no going back. The AVR
          _will_ reboot the LinkStation. The power LED blinking fast is what shows
          that the AVR is in this state.

          The problem with uloader is that it attempts to leave as much as
          possible from the shutdown to happen in order for the disks to be shut
          down properly but before the reboot string is sent to the AVR. Depending
          on the original kernel, the assumptions made by uloader may be
          incorrect.

          I will have to look again at the sources about the UART initialisation
          but, as I said before, the AVR will ignore any commands once it receives
          the reboot command. This is why the minimal console doesn't work. The
          buttons are read by the AVR which passes the information to u-boot (or
          to the kernel).

          This doesn't happen when u-boot is in flash because u-boot takes over
          the LinkStation when the AVR has been re-armed and ready to accept
          commands.

          If the AVR is your only problem and everything else works for you, then
          the risk of flashing u-boot is small. Lots of people have done it and I
          haven't heard of any problems. Unfortunately, there are no absolute
          guarantees. Even if you u-boot build is fine, there is always the risk
          of power loss during the flash and there have been reports of defective
          flash chips, fortunately not in the u-boot area.

          If you take the chance and something goes wrong, you can still find
          somebody in your area willing to fix your box for you. You can post the
          question in the Linstationwiki forums and see if there is anyone in your
          area.
          ---

          So I patched uloader:

          --- uloader_mod.c.orig 2006-08-26 15:07:23.000000000 +0200
          +++ uloader_mod.c 2007-02-22 00:18:41.000000000 +0100
          @@ -207,7 +207,8 @@

          if((err = read_file(uboot, &uboot_buf)))
          goto out;
          - register_reboot_notifier(&uloader_notifier);
          + //register_reboot_notifier(&uloader_notifier);
          + load_uboot(va2pa(load_uboot), va2pa(uboot_buf), laddr);
          return 0;
          out:
          free_saved_pages();

          and tried again. The RAM build worked nicely then, so I was comfortable
          flashing the flash build. I've got the box running now with Guennadi's
          powerpc-based 2.6.20 kernel and everything seems to be just fine.
          --
          Micha
          Don't panic!
        Your message has been successfully submitted and would be delivered to recipients shortly.