关于三星S3C44B0X目标板的uClinux Bootloader

技术分类: 嵌入式系统  | 2005-09-12
来源:电子产品世界 | 作者:盛磊

        params = (struct tag *)0x0C000100;
       params->hdr.tag = ATAG_CORE;
       params->hdr.size = tag_size(tag_core);
       params->u.core.flags = 0;
       params->u.core.pagesize = 0;
       params->u.core.rootdev = 0;
       params = tag_next(params);
  &
nbsp;   
       params->hdr.tag = ATAG_NONE;
       params->hdr.size = 0;

       对应地,在Linux内核源码arch/armnommu/mach-s3c44b0/arch.c中设置内核启动参数在RAM中的基地址:
       MACHINE_START (S3C44B0, "44B0")
      
       BOOT_PARAMS (0x0C000100)
      
       MACHINE_END

       4.调用uClinux Kernel
      
Bootloader调用Kernel的方法是直接跳转到其第一条指令处。对于ARM处理器,在跳转时应当满足下列条件:r0=0;r1=Machine ID;禁止IRQ和FIQ;处理器运行在Supervisor模式;关闭MMU;关闭Data Cache。

       对于S3C44B0X,它没有MMU,其Cache是指令与数据合一的,因此只能全部关闭。各种ARM处理器的Machine ID均由www.arm.linux.org.uk分配;S3C44B0X的Machine ID是178。据此,用C代码实现的Kernel调用示例如下,其中r0和r1的值通过参数传递:
       void (*CallKernel)(int zero, int mach) = (void (*)(int, int))KERNEL_ADDR;
       CallKernel(0, 178);

       5. 辅助功能
       完整的Bootloader还应该允许更新Flash中存放的uClinux Kernel Image以及Bootloader自身。为此,必要的辅助功能包括:从主机下载文件到目标板的RAM;用RAM中的数据烧写Flash;以及实现上述操作所需的人机交互接口,这里就不赘述了。

参考文献:
[1] 李善平,刘文峰等,Linux与嵌入式系统,清华大学出版社,2003年1月
[2] 詹荣开,嵌入式系统Boot Loader技术内幕,2003年12月
[3] ARM Architecture Reference Manual, ARM, 2000
[4] S3C44B0X RISC Microprocessor User's Manual, Samsung, 2002

1】【2】【3】【4
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销