文档详情

嵌入式软件设计基础第三次实验报告.docx

发布:2017-05-22约4.35千字共13页下载文档
文本预览下载声明
信息工程实习报告 专 业:电子信息工程 姓 名: 齐治望 班 级:071142 指 导 老 师:杨勇 实验目的: 用STM32F103ZE实现 外部中断或事件。 在线程模式下将主栈切换为进程栈。 在线程模式下将特权等级切换为非特权等级。 在线程模式下切换为非特权等级后,访问Systerm Control Space register such as NVIC and SysTick。 在中断中将非特权等级切换为特权等级。 二、嵌入式系统设计方案 1.嵌入式操作系统选择 第一是应用。如果你想开发的嵌入式设备是一个和网络应用密切相关或者就是一个网络设备,那么你应该选择用嵌入式 Linux或者mCLinux,而不是mC/OS-II.第二是实时性。没有一个绝对的数字可以告诉你什么是硬实时,什么是软实时,它们之间的界限也是十 分模糊的,这与你选择什么样的ARM CPU,它的主频、内存等参数有一定的关系。如果你使用加入实时补丁等技术的嵌入式Linux,如MontaVista Linux(2.4.17版本),最坏的情况只有436微秒,而99.9%的情况是195微秒。考虑到最新的Linux在实时性方面的改进。它可以适合于 90~95%的各种嵌入式系统应用。当然,你如果希望更快的实时响应,如高速的A/D转换需要几个微秒以内的中断延时,可能采用mC/OS-II是合适 的。当然,你采用象Vxworks这样传统的嵌入式操作系统也可以满足这样的强实时性要求。  第三是开发工具。显然,目前mC/OS- II、mCLinux和嵌入式Linux的开发工具与商业嵌入式操作系统工具还有一些差距,目前在ARM CPU上广泛流行和使用的是ARM公司SDT/ADS工具链,产品无论在功能、稳定性和众多的第三方厂商支持方面都很好,唯一不足的是缺少对嵌入式 Linux操作系统的支持,SDT/ADS的升级产品RealView计划支持GCC和嵌入式Linux,但目前还没有看到,mC/OS-II可以使用 ARM SDT/ADS,但没有操作系统调试功能。 嵌入式处理器的选择 基于 相关外部设备的选择   在CORTEX-M3中,优先级对于异常来说很关键的,它会影响一个异常是否能被响应,以及何时可以响应。优先级的数值越小,则优先级越高。CORTEX-M3支持中断嵌套,使得高优先级异常会抢占低优先级异常。在复位后,对于所有优先级可编程的异常,其优先级都被初始化为0。而对于不可屏蔽中断和硬故障,把它们的优先级定为-2和-1(高于任何其它异常)。在编程优先级寄存器时,我们可以利用它们能按字节访问的好处,以简化程序代码。? 系统架构 各模式间的转换图: 实验设计: 在主程序中首先完成对中断的配置。在中断中设置特权等级。因为进入主程序后会默认为线程模式,栈为MSP指针所指向的栈,所以接下来在主程序中将栈由主栈切换到进程栈,切换完成后在将特权等级改为非特权等级。如果有中断发生,在中断中会改为特权级,这样在中断结束返回时就还是会是特权等级。三.硬件资源使用情况 1.嵌套向量中断控制器 特性 ● 68个可屏蔽中断通道(不包含16个CortexTM-M3的中断线); ● 16个可编程的优先等级(使用了4位中断优先级);● 低延迟的异常和中断处理;● 电源管理控制; ● 系统控制寄存器的实现; 嵌套向量中断控制器(NVIC)和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地 处理晚到的中断。 嵌套向量中断控制器管理着包括内核异常等中断。更多关于异常和NVIC编程的说明请参考 《STM32F10xxx Cortex-M3编程手册》。 2.系统嘀嗒(SysTick)校准值寄存器 系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值),产生1ms时间 基准。 3.外部中断/事件控制器(EXTI) 对于互联型产品,外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,对于其它 产品,则有19个能产生事件/中断请求的边沿检测器。每个输入线可以独立地配置输入类型(脉冲 或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏 蔽。挂起寄存器保持着状态线的中断请求。 四.软件流程分析 主函数 (1)功能描述:嵌入式系统外部中断/事件控制器(EXTI)配置,在线程模式下主栈和进程栈的配置及切换,线程模式下访问等级的切换。在非特权等级下访问SysTick和NVIC寄
显示全部
相似文档