vivi启动过程------s3c2440

启动是从文件vivi/arch/s3c2440/head.S开始的 
1. 在这个文件中,做了这样的工作: 
 (1) 关闭看门狗 
 (2) 禁止所有中断 
 (3) 初始化system clock 
 (4) 初始化串口 
 (5) 初始化nand flash相关的控制寄存器 
 (6) 把vivi copy 到 SDRAM上,最后把pc指向ram 
 (7) 设置堆栈 
 (8) call 一个叫做main的函数。这个函数是c写的 
  
2. main()这个函数在vivi/init/main.c中 
 (1) 程序正常跳转到这里后,首先打印一些进本信息 
 (2) 调用若干个初始化的函数 
  <1> reset_handler() vivi/lib/reset_handler.c中 
   (主要做了clear memory的工作) 
  <2> board_init() (没找到) 
  <3> mem_map_init()  vivi/arch/mmu.c中 
   (如果使用nand flash,会在这里使它看起来线性化;清空cache;invalidate I & D tlb) 
      mmu_init  vivi/arch/mmu.c中 
   (初始化cache,load页表指针,mmu 使能等等) 
  <4> heap_init 初始化堆 vivi/lib/heap.c 
   (这里好像malloc了一段空间,具体的没看懂) 
  <5> mtd_dev_init vivi/driver/mtd/mtdcore.c中 
    mtd_init()  在vivi/driver/mtd/maps/s3c2440_flash.c 中,这里根据所使用的flash,做相应的cpu控制初始化,分配内存 
   add_command(&flash_cmd) 注册了flash这个用户命令 
  <6> init_priv_data() vivi/lib/priv_data/rw.c中 
   读出boot的基本参数  
  <7> misc() (没找到) 
      init_builtin_cmds() vivi/lib/command.c中 
   (注册用户的基本命令,包括boot, bon, load, help 等等) 
  <8> boot_or_vivi() 就在main.c中,等待用户输入,有输入进入vivi_shell,没有输入,超时后启动linux 
      到这里main结束  
      vivi是怎么启动到linux的。这是vivi执行了boot命令,调用了 vivi/lib/boot_kernel.c 中的command_boot()函数。这样linux就启动了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值