第四部分嵌入式软件素材.pptVIP

  • 2
  • 0
  • 约7.13千字
  • 约 66页
  • 2016-08-20 发布于湖北
  • 举报
板级初始化(Boot)的主要内容 信息与软件工程学院 * 处理函数:romInit(),上电后执行的第一个函数 处理过程:以vxWorks为例 关中断 设置哑堆栈(dummy stack,也称虚拟堆栈) 保存启动类型(冷启动和热启动)到堆栈上 清Cache 初始化CPU内的寄存器 硬件初始化,主要是初始化SDRAM接口 调用romStart() romInit()示例 信息与软件工程学院 * …… // 定义等 cli /* 关中断 */ movl SP_ARG1(%esp),%ebx /* esp+SP_ARG1的值给ebx:开始类型 */ jmp warm // 段内相对跳转到warm /* 切换到保护模式 */ mov %cr0,%eax /* CR0中含有系统控制标志 */ .byte 0x66 /* next inst has 32bit operand */ or $0%eax /* set the PE bit */ mov %eax,%cr0 /* move EAX to CR0 */ jmp romInit1 /* 跳转到romInit1 */ ...... /* 初始化 DS, ES, FS, GS, SS段寄存器 */ romInit1: mov $0x0010,%eax /* set data segment 0x10 is 3rd one */ mov %ax,%ds /* set DS */ mov %ax,%es /* set ES */ mov %ax,%fs /* set FS */ mov %ax,%gs /* set GS */ mov %ax,%ss /* set SS */ .byte 0x66 /* next inst has 32bit operand */ mov $ ROM_STACK,%esp /* set lower mem stack pointer */ …… 关中断:cli 信息与软件工程学院 * ResetHandler: MRS r0, CPSR ORR r0, r0, #(PSR_I_BIT|PSR_F_BIT) MSR CPSR_c, r0 @ Disable IRQ FIQ 0x80 0x40 __ENTRY: f s x c 27 31 N Z C V Q 28 6 7 I F T mode 16 23 15 5 4 0 24 U n d e f i n e d J 0I、F位置1 系统引导 信息与软件工程学院 * 系统引导(Load)的主要内容 信息与软件工程学院 * 处理函数:romStart(),执行的第一个C程序 处理过程: 完成必要的硬件初始化:sysHwInit() 把ROM代码和数据段拷贝并重定位到RAM   - 代码段未驻留在ROM中,拷贝代码段和数据段   - 代码段是驻留在ROM中的,只拷贝数据段 未用的内存(RAM)清零 需要时,要进行解压缩 跳转到sysInit() 这部分可以在以后处理:usrInit romstart()示例 信息与软件工程学院 * #ifdef??ROM_RESIDENT ?? void?romStart???(?FAST?int?startType??????/*?start?type?*/???)?? ???? {?? ???? /*?relocate?the?data?segment?into?RAM?*/?? copyLongs?((UINT?*)ROM_DATA_ADRS,? (UINT?*)UNCACHED(RAM_DATA_ADRS),? ((UINT)end?-?(UINT)RAM_DATA_ADRS)?/?sizeof?(long));?? ?? /*?If?cold?booting,?clear?memory?to?avoid?parity?errors?*/?? ?? #ifdef?ROMSTART_BOOT_CLEAR ?? ???? if?(startType??BOOT_CLEAR)?? ???????? bootClear();?? #endif ?? ?? /*?jump?to?the?entry?*/?? ? sysInit?(startType);?? ???? }?? #endif??/*?ROM_R

文档评论(0)

1亿VIP精品文档

相关文档