[U-Boot] No single character output after update to latest u-boot on pandaboard

Lokesh Vutla
2013-11-26T06:52:19Z

Hi Chao,
On Tuesday 26 November 2013 10:32 AM, Chao Xu wrote:
> Thank you! Please see the inline reply.
>
> On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla <lokeshvutla@ti.com> wrote:
>> Hi,
>> On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
>>> Hello Chao,
>>> (cc R.Sricharan from TI)
>>>
>>> Quite frankly, I have no idea why your pandaboard fails to work if
>>> CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From
>>> the logs this patch was committed on 13/June/2012 by R.Sricharan. He might
>>> have a better explanation so I'm adding him to this discussion. The git log
>>> message says this,
>> If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot
>> will be configured. Ideally this configuration should be taken care by kernel. This is the main reason
>> to remove this config option.
>> Due to this reason the following is added to ./doc/feature-removal-schedule.txt
>>
>> "What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL
>> When: Release v2013.07
>>
>> Why: When set these options enable "all" of the pads and clocks found
>> on OMAP4/5 platforms, so that the Linux Kernel does not have to.
>> It has been agreed that this goes against the U-Boot design
>> philosophy and since f3f98bb0 we have not enabled more than is
>> used in U-Boot. The kernel has been updating drivers to enable
>> rather than assume pads/clocks have been enabled already. Our
>> expectation is that by v2013.07 a suitable kernel shall exist that
>> does not need these options set for a reasonable I/O set to function.
>>
>> Who: Tom Rini <trini@ti.com> and Sricharan R <r.sricharan@ti.com>"
>>
>> Please let me know if I am not clear.
>>
> The explanation is crystal clear. So the setup of non-essential pins
> are left to the kernel. Then do I need to enable any linux kernel
> config options to instruct the kernel to take over? I just copied the
> old .config from my v3.7 kernel to build v3.12 kernel.
No need to enable any config in kernel for this. Your dts should contain the required pin mux details.
I am not sure what is in 3.7 kernel. May be its good to use omap2plus_defconfig.

>>>
>>> "ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
>>>
>>> Currently on OMAP4/5 platforms, many kernel drivers are dependent
>>> upon the bootloaders for mux, dpll and clock configurations.
>>> This should not be the case and bootloaders should set only the
>>> minimum required for the uboot functionality and kernel boot.
>>>
>>> Note that this is going to break the kernel drivers. But this
>>> is the only way to get things fixed in the kernel.
>>>
>>> Signed-off-by: R Sricharan <r.sricharan@ti.com>"
>>>
>>> so I'm curious now. Chao - was your problem that uboot refused to start or
>>> were you seeing crashes in the linux kernel? If it's the former, then the
>>> kernel doesn't even come into the picture.
>> Yes even I am not clear at this point. Chao can you please clarify.
>> Ideally the above config will not harm U-Boot to come up on your board.
>>
> I think it's the uboot refused to start. Because there was no single
> character from the serial port. I enabled the early_printk option in
> .config and added it to uEnv.txt. After I added the
> CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting
> Kernel". I then fixed some other issue of the kernel, like copy the
> .dtb to /media/boot, and then kernel booted just fine. I'm curious,
> too. Is there anything I can do to further debugging? Thank you both
> very much!
I think I got the problem.
I grabbed my panda and tried latest mainline. As you said U-Boot didn't come up for me either.
I did a bisect and verified which patch is causing th issue. Below is the patch which breaks omap4.

"6789e84 i2c, omap24xx: convert driver to new mutlibus/mutliadapter framework"
I think because of the linker code added in this patch for omap-common/u-boot-spl.lds

. = ALIGN(4);
.u_boot_list : {
KEEP(*(SORT(.u_boot_list*_i2c_*)));
} >.sram

If I comment out this code, u-boot comes up as usual.
Tom/Heiko, can you give a pointer why this is causing the issue.
Please correct me if I am wrong.

Thanks and regards,
Lokesh
>> Thanks and regards,
>> Lokesh
>>>
>>> Also, if you could try a simple experiment? Instead of defining that in the
>>> common file, could you define it in the omap4_panda.h file and tell us if
>>> uboot comes up? ( I'm just hesitant to make changes to a common file if the
>>> issue is on only one board)
>>>
> I will try to do it tmr.
>>> Puzzled,
>>> Abraham V.
>>>
>>>
>>> On Tue, Nov 26, 2013 at 9:14 AM, Chao Xu <caesarxuchao@gmail.com> wrote:
>>>
>>>> Hi Abraham,
>>>>
>>>> I finally got it working by adding "#define
>>>> CONFIG_SYS_ENABLE_PADS_ALL" in u-boot/include/configs/omap4_common.h!
>>>> This is removed by default in v2013.10. Do you know why? Thank you!
>>>>
>>>> On Sun, Nov 24, 2013 at 10:11 PM, Abraham V.
>>>> <abraham.varricatt@vvdntech.com> wrote:
>>>>> Hello Chao,
>>>>>
>>>>> That sounds odd. Can you try downloading the latest mainline uboot
>>>> sources
>>>>> and compiling those for your board?
>>>>>
>>>>> ftp://ftp.denx.de/pub/u-boot/
>>>>>
>>>>> At least, for the pandaboard I have, the 2013.10 release works well,
>>>>> following your instructions. Only difference is that I'm using linaro's
>>>>> cross-compiler.
>>>>>
>>>>> Puzzled,
>>>>> Abraham V.
>>>>>
>>>>>
>>>>> On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu <caesarxuchao@gmail.com> wrote:
>>>>>>
>>>>>> Hi Abraham,
>>>>>>
>>>>>> Thank you very much for your detailed reply! But I think I can rule
>>>>>> out the three possible problems you mentioned.
>>>>>> 1. The cross compiler should be fine. Because I use it all the time to
>>>>>> compile kernel for pandaboard and it has never been a problem
>>>>>> 2. I'm doing exactly what you suggested, i.e. the SD card is
>>>>>> partitioned by a pre-built image.
>>>>>> 3. The serial cable is fine because the pre-built image was working
>>>>>> properly with the serial cable. Only after I update the u-boot comes
>>>>>> the no-output problem.
>>>>>> Could you think of any other possible problem? I suspect maybe I need
>>>>>> to modify other files (uEnv.txt, boot.scr) in the /boot partition?
>>>>>> These files came along with the pre-built image. Thanks again.
>>>>>>
>>>>>> On Fri, Nov 22, 2013 at 3:17 AM, Abraham V.
>>>>>> <abraham.varricatt@vvdntech.com> wrote:
>>>>>>> My company is designing a custom board that can be thought of as a
>>>>>>> derivative of the pandaboard. I believe we have Rev B1 with us in the
>>>>>>> office.
>>>>>>>
>>>>>>> Considering that you are not getting any debug messages on your serial
>>>>>>> console, I suspect one of the following;
>>>>>>> * your cross-compiler might have issues
>>>>>>> * you haven't partitioned the SD card properly
>>>>>>> * your serial cable might be damaged.
>>>>>>>
>>>>>>> Just short the TX and RX lines of your serial cable to test the last
>>>>>>> point.
>>>>>>> If you can see echo messages, then good, at least the cable is
>>>> working.
>>>>>>>
>>>>>>> Next worry about the partitions - to boot from SD card, the omap4 on
>>>> the
>>>>>>> pandaboard expects it in a certain format. Try using pre-build
>>>> binaries.
>>>>>>> For
>>>>>>> example;
>>>>>>>
>>>>>>> http://www.omappedia.com/wiki/Android_Panda_Pre_Built
>>>>>>> http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
>>>>>>>
>>>>>>> They have instructions on how to format your SD card. Assuming they
>>>>>>> work,
>>>>>>> then good! Last point is to check your cross-compiler. Just replace
>>>> the
>>>>>>> existing MLO and u-boot.bin (or u-boot.img; it depends on what version
>>>>>>> you
>>>>>>> have) on the SD card with your compiled ones and you'll be in a good
>>>>>>> position to narrow down bugs.
>>>>>>>
>>>>>>> All the best,
>>>>>>> Abraham V.
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu <caesarxuchao@gmail.com>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The
>>>>>>>> SD card was originally loaded with a working version of 12.04
>>>>>>>> linaro-unbunt-developer image. Early printk is enabled in the
>>>> original
>>>>>>>> image.
>>>>>>>>
>>>>>>>> I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot
>>>> )
>>>>>>>> and here is what I did:
>>>>>>>> 1. export ARCH=arm
>>>>>>>> 2. export CROSS_COMPILE=arm-linux-gnueabi-
>>>>>>>> 3. make omap4_panda_config
>>>>>>>> 4.make
>>>>>>>> 5. cp MLO u-boot.img /SDCARD/boot/
>>>>>>>>
>>>>>>>> But when switching on my Panda, there is no output from the serial
>>>>>>>> port. And the heartbeat LED is always off. (When every thing works,
>>>> it
>>>>>>>> is on when booting, and blinks after booting finished).
>>>>>>>>
>>>>>>>> I don't have any former experience with u-boot. So please let me know
>>>>>>>> if there is any more info I should provide.
>>>>>>>>
>>>>>>>> Any help would be much appreciated! Thank you!
>>>>>>>>
>>>>>>>> --
>>>>>>>> Regards,
>>>>>>>> Chao Xu
>>>>>>>> _______________________________________________
>>>>>>>> U-Boot mailing list
>>>>>>>> U-Boot at lists.denx.de
>>>>>>>> http://lists.denx.de/mailman/listinfo/u-boot
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> Chao Xu
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Chao Xu
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> U-Boot mailing list
>>> U-Boot at lists.denx.de
>>> http://lists.denx.de/mailman/listinfo/u-boot
>>>
>>
>
>
>