电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

eCos系统的启动——补充版本

eCos系统的启动——补充版本_第1页
1/8
eCos系统的启动——补充版本_第2页
2/8
eCos系统的启动——补充版本_第3页
3/8
eCos系统启动流程 张龙 2010-9-24 通过调研,总结了eCos系统的启动流程,我认为可以分为以下两大步: 1. HAL 的启动; 2. 内核的启动。 一.HAL的启动 HAL 是对硬件进行初始化操作, 当然跟硬件平台有关,不过大致流程是相似的,这里以基于 PC 的硬件平台为例,图 1.1 是 HAL 的启动流程图。 Hardware PowerupReset_vector_startHal_cpu_initHal_hardware_initSetup interrupt stackHal_mon_initClear bss sectionSetup C function call stackHal_platform_initHal_MMU_initHal_enable_cachesHal_IRQ_initCyg_hal_invoke_constructorsInitialize_stubCyg_start On to Kernal startup.. 图1.1 HAL 启动流程图 下面具体解说一下流程图1.1: 1. 系统启动的开端是电复位,一般是从0X0 开始; 2. 电复位之后,跳转到reset_vector,在arch 文件夹下的文件vectors.S 中,这个文件包含所有HAL 包的启动点,reset vector 应用最小的处理器寄存器配置来使得系统进行初始化操作; 3. Reset vector 跳转到_start 函数处,这个函数仍然存在于vectors.S 文件中,_start 是整个HAL 初始化的开始处; 4. 跳转到hal_cpu_init 子程序,这个函数存在于variant.inc 或者是arch.inc 文件中,这个函数设置处理器特定的寄存器,如禁用指令和数据高速缓存,以确保处理器在其余的初始化过程中是一个已知的状态; 5. 跳转到hal_hardware_init 子程序,进行cache 配置、设置中断寄存器到一个默认的状态,关闭看门狗,设置实时时钟寄存器,和进行基于特殊硬件平台的芯片选择寄存器的配置等操作; 6. 建立中断堆栈区域,当出现中断时用来保存处理器的状态信息; 7. 进行hal_mon_init 程序,它位于文件variant.inc 或platform.inc 中,为了能够正确地访问 RAM, ROM 和 I/O 设备,设立所有的CPU 内存控制器。除非完成了这个动作,否则不可能访问到RAM。当然这个对于不同的存储器会存在差异; 8. 清空 BSS 段,它包含了所有未初始化的局部和全局变量,还包括静态存储类; 9. 设置堆栈,为执行C 语言代码做好准备,通常可以把 SP 的值设置在上面所分配的RAM 空间的最顶端(堆栈向下生长); 10. 执行hal_platform_init 程序,位于hal_aux.c 文件中,进行平台初始化,这个要根据硬件平台的不同,初始化的操作也有所不同,如进行I/O 接口的初始化、PCI 的初始化等等; 11. 初始化MMU,...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

eCos系统的启动——补充版本

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部