vivi启动过程------s3c2440
2009-10-20 10:11
176 查看
启动是从文件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) 关闭看门狗
(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就启动了。
相关文章推荐
- s3c2440内核启动过程
- s3c2440 nandflash启动过程分析
- S3C2410-2440启动代码内数据复制过程的分析
- Ubuntu14.04下安装 Jlink 往S3C2440 开发板下载程序过程的 安装、使用
- u-boot启动过程源码分析之第二阶段(S3C24XX系列)
- 2440启动过程分析
- fl2440——u-boot启动过程的简要分析
- 2440的nor flash与nand flash启动过程区别
- s3c2440 vivi的启动过程
- s3c2440笔记1(启动)
- GT2440启动过程
- nandflash 启动,s3c2440
- TQ2440 学习笔记—— 31、移植U-Boot【U-Boot 的启动过程第二阶段源码分析】
- u-boot启动过程源码分析之第一阶段(S3C24XX系列)
- s3c2440 地址分配硬件连接及其启动原理分析
- U-Boot启动过程完全分析
- 【ARM学习笔记】三、S3C2440A的存储控制器及启动过程
- Linux内核启动过程
- Uboot 启动过程
- 开机启动到加载os内核的过程