s3c2440 vivi的启动过程

启动是从文件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     好像还有一件事没有记下来,就是vivi是怎么启动到linux的。这是vivi执行了boot 命令,调用了 vivi/lib/boot_kernel.c 中的command_boot()函数。这样linux就启动了。     到这里main就结束喽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值