1:LINUX_BOOT_PARAM_ADDR :在启动内核的时候,告诉内核CMDLINE存放的位置
2:CONFIG_CMDLINE_TAG :表示把bootargs(CMDLINE)传递给内核
下面这一段代码在内核启动前,向内核传递参数(以Tag标记的形式),这段代码依赖于很多的宏定义,比如CONFIG_CMDLINE_TAG等,他们通常定义在include/configs/.h中,所以假如要想u-boot给内核传递特定的标记,则必须定义相应的宏。传递标记是通过setup__tag函数完成的,具体能够参考cmd_boot.m里面的实现。
#if defined (CONFIG_SETUP_MEMORY_TAGS) || /
defined (CONFIG_CMDLINE_TAG) || /
defined (CONFIG_INITRD_TAG) || /
defined (CONFIG_SERIAL_TAG) || /
defined (CONFIG_REVISION_TAG) || /
defined (CONFIG_LCD) || /
defined (CONFIG_VFD)
setup_start_tag (bd);
#ifdef CONFIG_SERIAL_TAG
setup_serial_tag (¶ms);
#endif
#ifdef CONFIG_REVISION_TAG
setup_revision_tag (¶ms);
#endif
#ifdef CONFIG_SETUP_MEMORY_TAGS
setup_memory_tags (bd);
#endif
#ifdef CONFIG_CMDLINE_TAG
setup_commandline_tag (bd, commandline);
#endif
#ifdef CONFIG_INITRD_TAG
if (initrd_start && initrd_end)
setup_initrd_tag (bd, initrd_start, initrd_end);
#endif
#if defined (CONFIG_VFD) || defined (CONFIG_LCD)
setup_videolfb_tag ((gd_t *) gd);
#endif
setup_end_tag (bd);
#endif
/* we assume that the kernel is in place */
printf ("/nStarting kernel .../n/n");
#ifdef CONFIG_USB_DEVICE
{
extern void udc_disconnect (void);
udc_disconnect ();
}
#endif