- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于VXWORKS的嵌入式开发设计讲义
嵌入式系统简介
嵌入式系统的基本特征
专用的嵌入式CPU
该CPU具有高效率、低功耗、体积小和集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部完成,有利于嵌入式系统设计趋于小型化,移动能力增强,与网络耦合紧密。
专用性和算法的唯一性
设计成完成某一特定任务,和相应具体任务有机结合在一起,具有较长的生命周期。
多种技术的结合体
计算机技术、半导体技术以及电子技术和各行业的具体应用紧密结合在一起的系统。
软硬件紧密的相互依赖性
专用性决定了设计目标是单一的,硬件和软件的依赖性强,用利于版权的保护。
系统对用户透明
用户使用只是按照预定方式使用,不需要用户编程和修改。
大多具有实时性
如工业仪表、控制装置、数控系统、信息家电等。
系统资源有限
速度和存储容量以及扩展接口有限。
多为分布式系统
更易于保证硬实时要求、更便宜和更易于实现。
嵌入式软件的特点
多具有实时性
指操作系统内核采用了一种算法,使tc(context swich)和ts(system call)尽可能小、尽可能是常量和可确定。所谓可确定是指tc和ts有一个上限,而不是一个统计的结果,即不会出现峰值,不会随系统任务的增多而增多。
有并发处理能力
能并发处理各个事件驱动,采用多任务运行机制。
具有快速启动、出错处理和自动复位能力
能从只读存储器中快速启动,具有高容错机制,在系统出现死机前自动重启。
应用软件和操作系统一体化设计
硬件和软件一起设计,以解决特定的问题,不同的系统有不同的配置。
交叉开发环境
嵌入式系统软件开发流程
需求分析
设计思路
概要设计
详细设计
详细写出测试项目(包括测试类别、测试过程、测试预测结果)
编码
各芯片代码模块化,有利于移植
需要注意一些小问题(如边界条件、内存越界访问、空指针等)
ⅰ
typedef struct
{
……
USHORT Wtr;
UCHAR Delay;
UCHAR Mode;
} SetLogicSubnetReqStruct;
void Oam_SetLogicSubnet_Req(UCHAR* pMsg)
{
DatagramHead *pDatagramHead;
UCHAR *pData;
SetLogicSubnetReqStruct *pSetLogicSubnetReq;
ULONG i, count;
USHORT SubNet_ID, E_From_Tsn1, E_To_Tsn1, W_From_Tsn1, W_To_Tsn1,
E_From_Tsn2, E_To_Tsn2, W_From_Tsn2, W_To_Tsn2, E_S_B_Tsn, E_P_B_Tsn, W_S_B_Tsn, W_P_B_Tsn;
UCHAR SelfID, Num, E_ID, W_ID, Delay, Mode;
UCHAR Wtr;
……
Wtr = pSetLogicSubnetReq-Wtr;
……
}
ⅱ
STATUS sysCpmEnetAddrGet(int unit,UINT8 *addr)
{
char *buff = NULL;
#ifdef INCLUDE_NVRAM
getCpmMacAddr(buff, MAX_ADR_SIZE);
……
}
测试
单元测试(在单机上测试)
联调(主要测试接口)
系统调试(测试功能)
VxWorks嵌入式实时操作系统
BSP(Board Support Package)的概念
满足应用对时间的响应要求
多任务内核(实时调度、任务间通信、互斥访问)
标准库文件
可抢占式调度、快速、系统小而且可配置
所有任务工作在同一个地址空间内,所有任务运行在特定优先级模式
VxWorks开发环境Tornado
Launch
WindSh
CrossWind
Browser
Project Facility
WindView
Simulator
四、单盘软件主要应用举例
MCU的初始化流程
将以下划分的各个功能模块依次添加到UserAppInit()函数中以完成各单盘的上电初始化过程,在各个功能模块中按照单盘的具体情况填写相应程序段。
如果需要其他特殊功能模块可以在适当的位置自行添加。
InitDataStructure()
InitMemory()
ReadConfig()
InitModule()
InitMcpMcuComm()
CreateMsgQueue()
CreateTask()
SendReset()
文档评论(0)