bfgmatik Posted February 3, 2019 Posted February 3, 2019 Hello everyone, Around July 2018 I was able to successfully build an Armbian image for NanoPi Duo using provided documentation: https://docs.armbian.com/Developer-Guide_Build-Preparation/ The reason I decided to build the image was that I needed it with legacy kernel 3.4.113. For some reason there were significant problems with using the mainline kernel with direwolf application which is an amateur radio APRS modem. The device hanged with mainline kernel after few hours of operation without any reason and this was not an overheat problem (temperatures below 50 degrees and a huge heatsink). I believe that it is some problem with audio driver for H2 which seems to be rewriten in mainline kernel, I don't see any other possibility as direwolf doesn't use any other peripherals and when it is not running or even running without soundcard, the device does not hang. Anyway, on July 2018 I was able to build it with kernel 3.4.113. I had to make a proper fex file for nanopiduo, because it is not available in sources. The resulting image file worked flawlessly for many months (Armbian_5.55_Nanopiduo_Ubuntu_xenial_default_3.4.113.img). Today I wanted to make the build again using the Ubuntu Bionic which seems to be now the only supported environment. I believe that I made everything like before, added the same fex file for nanopiduo and got a proper img file (Armbian_5.74_Nanopiduo_Ubuntu_xenial_default_3.4.113.img). But... the device does not even boot. Looks like something must have changed in the software, maybe U-boot version, maybe some configuration. Do you have any clue what may be wrong? Is the legacy kernel going to be no longer supported? On Monday I'm going to check via serial console, maybe it will give some output helping to understand what's going on. But it looks like I have a problem.
martinayotte Posted February 3, 2019 Posted February 3, 2019 12 hours ago, bfgmatik said: On Monday I'm going to check via serial console, maybe it will give some output helping to understand what's going on That will help a lot, since without logs, it is impossible to figure out...
bfgmatik Posted February 3, 2019 Author Posted February 3, 2019 Below is a dump from serial console. Unfortunately this doesn't help my anything as this output is very similar to a working build from June 2018. The difference is that after "Starting kernel" there are no more output and kernel is probably not loaded, LAN leds do not blink, heartbeat LED does not blink. I also tried to build Orange Pi Zero image (which is a very similar hardware and in June 2018 worked with NanoPi Duo board). Result is the same, there is no output after "Starting kernel". U-Boot 2018.11-armbian (Feb 03 2019 - 20:07:15 +0100) Allwinner Technology CPU: Allwinner H3 (SUN8I 1680) Model: FriendlyARM NanoPi DUO Air DRAM: 256 MiB MMC: SUNXI SD/MMC: 0 Loading Environment from EXT4... ** File not found /boot/boot.env ** ** Unable to read "/boot/boot.env" from mmc0:1 ** In: serial Out: serial Err: serial Net: No ethernet found. 230454 bytes read in 35 ms (6.3 MiB/s) Unknown command 'bmp' - try 'help' starting USB... No controllers found Autoboot in 1 seconds, press <Space> to stop switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found U-Boot script /boot/boot.scr 3798 bytes read in 14 ms (264.6 KiB/s) ## Executing script at 43100000 U-boot loaded from SD Boot script loaded from mmc 144 bytes read in 11 ms (12.7 KiB/s) 5222019 bytes read in 419 ms (11.9 MiB/s) 4654944 bytes read in 377 ms (11.8 MiB/s) Found legacy kernel configuration 35400 bytes read in 31 ms (1.1 MiB/s) ## Loading init Ramdisk from Legacy Image at 43300000 ... Image Name: uInitrd Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 5221955 Bytes = 5 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Starting kernel ...
martinayotte Posted February 3, 2019 Posted February 3, 2019 12 minutes ago, bfgmatik said: The difference is that after "Starting kernel" there are no more output and kernel is probably not loaded In /boot/armbianEnv.txt, set "verbosity=7" and change "console=both" to "console=serial", you will see more logs and probably get a hint about what is wrong ...
bfgmatik Posted February 3, 2019 Author Posted February 3, 2019 I mounted the img file, modified "boot/armbianEnv.txt" setting verbosity to 7 (console=serial was already present). Then I unmounted and burned the image to SD Card. Unfortunately the serial output is absolutely the same as with verbosity=1...
bfgmatik Posted February 4, 2019 Author Posted February 4, 2019 Ok, friends, I really need some help from you to resolve the issue as I spent many hours with it. I added some debuging information to boot.scr: Found U-Boot script /boot/boot.scr 4051 bytes read in 14 ms (282.2 KiB/s) ## Executing script at 43100000 U-boot loaded from SD Boot script loaded from mmc 144 bytes read in 10 ms (13.7 KiB/s) load mmc 0 0x43300000 /boot/uInitrd 5222048 bytes read in 422 ms (11.8 MiB/s) load mmc 0 0x42000000 /boot/zImage 4755248 bytes read in 387 ms (11.7 MiB/s) Found legacy kernel configuration load mmc 0 0x43000000 /boot/script.bin 35400 bytes read in 32 ms (1.1 MiB/s) bootz 0x42000000 0x43300000 ## Loading init Ramdisk from Legacy Image at 43300000 ... Image Name: uInitrd Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 5221984 Bytes = 5 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Starting kernel ... (no more output) Looks like script.bin is correctly loaded to 0x43000000, init Ramdisk is loaded to 0x43300000, kernel is loaded to 0x42000000, If I understand correctly, legacy kernel gets all its configuration from script.bin. My questions are: what parameters are passed to the kernel from u-boot? Looks like there is no bootargs variable. How do kernel know where in memory to search for script.bin? I even tried to copy the whole /boot directory from a working older image (with kernel, ramdisk and script.bin) and still the kernel doesn't give any output via serial console. I believe that something changed with a new U-boot 2018.11 and some parameters are not passed to kernel or they are incorrect.
bfgmatik Posted February 4, 2019 Author Posted February 4, 2019 In case anyone is interested. I was able to find a workaround by overwriting the 2018.11 u-boot in the .IMG file with older u-boot 2018.05 from my earlier image. The rest of the image is up-to-date with latest ARMBIAN 5.74. Looks like everything works now, but it seems that u-boot 2018.11 does not work correctly with legacy kernels, at least for NanoPi Duo and OrangePi Zero.
Recommended Posts