Debugging Android kernel: Passing arguments to and

2019-02-16 03:04发布

问题:

I am trying to get kgdb working with Android kernel using http://bootloader.wikidot.com/android:kgdb. I got stucked at following step:

    Configure kernel command line

    Specify ttyGS0 as the kgdboc device. Add the following into the kernel command line (possibly in BoardConfig.mk)

    kgdboc=ttyGS0 kgdbretry=4

    The second option "kgdbretry=4" is a new parameter added to kgdboc.c. 
    It means that if kgdb cannot find the device "ttyGS0" in early boot, 
    it will retry once after the specified number of seconds. 
    This is a work-around if the USB device is not immediately initialized during system boot.

Could anybody please tell me which BoardConfig.mk is it referring? Or is there any other method for passing these arguments to the kernel while booting?

回答1:

An old post, but I've been looking at KGDB recently so thought I'd share:

For Android, I've been passing boot params in via the bootimg.cfg file which can be specified when you create (or update) your boot image. For example, I am updating an existing boot image with a new config file and new kernel using the following:

abootimg -u boot.img -f bootimg.cfg -u zImage-dtb

One of the params within this config file is "cmdline" where you can append your options.

Alternatively, for a quick and dirty modification you can pass the '-c "param=value"' option to abootimg which will allow you to specify new options on the fly.



回答2:

http://www.stlinux.com/u-boot/kernel-booting

You can Change kernel command line like this:

setenv bootargs mem=128M kgdboc=ttyGS0 kgdbretry=4

saveenv

you may need to delete console=ttyAS0,115200 for kgdb to work properly.