ucinux的启动主要经历三个阶段.首先,必须完成cpu与存储器的硬件初始化,在系统ram中建立程序堆栈与数据段,建立程序的运行时的环境.初始化完成之后,uclinux内核就取得了cpu的控制权,开始操作系统自身的初始化,这包括建立ram中断矢量表.加载设备驱动程序.内存管理模块等等.这一切完成后,uclinux启动一个最初的init线程,进入到第三阶段,这时内核已经正常运行,外围模块也都就绪,开始执行一些脚本文件(如/etc/rc脚本文件). 【程序编程相关:Eclipse快速上手】 uclinux的执行过程 【推荐阅读:简单RS232通信程序】 【扩展信息:在FC3上安装php-multishop】 一.kernel代码段之前的系统初始化1. uclinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.s 开发板从上电开始,最开始执行的程序放在uclinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.s中. (1) 切换模式,关闭中断. (line 96 ) (2) 首先程序要先给syscfg,extdbwth,romcon0等一系列系统控制寄存器赋值,此时flash地址在 0x0,dram地址在0x1000000.(line 141 ) (3) 点亮i/o口的指示灯. (line 152 ) (4) 把在flash上的image复制到dram上.(line 161 ) (5) 执行remap,把flash地址映射为0x1000000,dram地址映射为0.(line 172 ) (6) 打开cache与write buffer.(line 196 ) (7) 设置好64k堆栈.(line 204 ) (8) 跳转到decompress_kernel函数(line 217 ),此处的跳转为带返回的跳转,以便于执行完此函数跳转回来.2. uclinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/misc.c 此时的函数decompress_kernel是用c语言写的,line 297 . (1) makecrc();进行crc校验.... 下一页