b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

文件系统转换 Bootloader之uBoot简介(转)(15)

电脑杂谈  发布时间:2018-02-07 22:32:44  来源:网络整理

bootm,CFG_MAXARGS,1,do_bootm,

“string1”,

“string2”

);

宏U_BOOT_CMD扩展开后就是:

cmd_tbl_t __u_boot_cmd_bootm __attribute__

((unused,section (".u_boot_cmd"))) = {“bootm”, CFG_MAXARGS, 1,

do_bootm, “string1”, “string2”};

对于每个使用U_BOOT_CMD宏来定义的命令,其实都是在".u_boot_cmd"段中定义一个cmd_tbl_t结构。连接脚本u-boot.lds中有这么一段:

__u_boot_cmd_start = .;

.u_boot_cmd : { *(.u_boot_cmd) }

__u_boot_cmd_end = .;

程序中就是根据命令的名字在内存段__u_boot_cmd_start~__u_boot_cmd_end找到它的cmd_tbl_t结构,然后调用它的函数(请参考common/command.c中的find_cmd函数)。

内核的复制和启动,可以通过如下命令来完成:bootm从内存、ROM、NOR

Flash中启动内核,bootp则通过网络来启动,而nboot从NAND

Flash启动内核。它们都是先将内核映像从各种媒介中读出,存放在指定的位置;然后设置标记列表以给内核传递参数;最后跳到内核的入口点去执行。具体实

现的细节不再描述,有兴趣的读者可以阅读common/cmd_boot.c、common/cmd_net.c、common/cmd_nand.c来

了解它们的实现。

(4)为内核设置启动参数。

与15.1.2小节中《Bootloader与内核的交互》所描述的一样,U-Boot也是

通过标记列表向内核传递参数。并且,15.1.2小节中内存标记、命令行标记的示例代码就是取自U-Boot中的setup_memory_tags、

setup_commandline_tag函数,它们都是在lib_arm/armlinux.c中定义。一般而言,设置这两个标记就可以了,在配置文

件include/configs/smdk2410.h中增加如下两个配置项即可:

#define CONFIG_SETUP_MEMORY_TAGS 1

#define CONFIG_CMDLINE_TAG 1

对于ARM架构的CPU,都是通过lib_arm/armlinux.c中的

do_bootm_linux函数来启动内核。这个函数中,设置标记列表,最后通过“theKernel (0,

bd->bi_arch_number,

bd->bi_boot_params)”调用内核。其中,theKernel指向内核存放的地址(对于ARM架构的CPU,通常是

0x30008000),bd->bi_arch_number就是前面board_init函数设置的机器类型ID,而

bd->bi_boot_params就是标记列表的开始地址。

2.5 U-Boot的移植

开发板smdk2410的配置适用于大多数S3C2410单板,或是只需要极少的修改即可使用。但是目前U-Boot中没有对S3C2440的支持,需要我们自己移植。

本书基于的S3C2410、S3C2440两款开发板,它们的外接硬件相同:

BANK0外接容量为1MB,位宽为8的NOR Flash芯片AM29LV800

BANK3外接10M网卡芯片CS8900,位宽为16


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-15.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 李雪
      李雪

      有童年有梦想有希望也需要坚持

    • 岑文本
      岑文本

      人家那演双簧

    热点图片
    拼命载入中...