




已阅读5页,还剩211页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TransitionTitle Codewarrior使用指南 田云锋汽车电子现场应用工程师2005年6月R63492 Slide2 内容 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide4 创建新工程1 1 创建新工程 3 输入工程名 2 选择HCS12NewProjectWizard Slide5 创建新工程2 4 选择MCU类型 5 选择语言类型 Slide6 创建新工程3 6 选择是否采用ProcessorExpert 7 选择是否使用PC lint 如果用ProcessorExpert 选择Yes Slide7 创建新工程4 8 选择是否用浮点运算 9 选择存储器类型 Slide8 创建新工程5 10 选择调试器类型 Slide9 源程序文件夹 Startup文件夹 Prm文件夹 Map文件夹 库文件夹 代码长度 变量长度 是否被包含在Target中 是否产生调试信息 列出相关文件 编译 调试 Slide10 参考文献 Codewarriormanuals pdf IED Users Guide pdf 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide12 在新项目中加入或删除文件 点击右键 加入或从此工程中删除文件 新建一文件 并保存到原文件夹中 如果编译时 出现没有调试信息警告 请点击这里 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide14 无限循环 While 1 For Loop gotoLoop 对嵌入式系统来说 循环是必须要用到的 上述3种方式 第2种更好一些为什么 因为它不会产生警告信息 alwaystruewarning Slide15 编译器优化 CodeWarrior编译器提供了几种从C源代码产生实际汇编代码的优化方法 这些代码被下载到微控制器中全局优化设置面板设定编译器怎样优化目标代码 所有优化程序重新组织目标代码 不影响其逻辑执行顺序 Slide16 编译器优化 强度减弱 StrengthReduction 强度减弱 是一种优化 力争用开销小的操作代替开销大的操作 所要付出的代价是执行时间或代码大小 在循环内 用加法指令代替乘法指令 下列例子将演示编译器 根据具体应用 来决定哪一种操作用最少代价达到同样结果 Slide17 这个变量乘以3 Slide18 用乘法来实现 Slide19 变量乘以4 Slide20 用2次左移位来实现 用H X作为指针来指向我们想要乘的值 Slide21 这句话等同于VarA VarA 4 Slide22 编译器优化 死代码消除 死代码消除就是编译器在优化应用程序时 对没被使用的语句将不产生可执行代码去除逻辑上从未执行的语句或没有被其他语句提到的语句 Slide23 Slide24 Slide25 Slide26 编译器优化 消除死赋值 消除死赋值就是指编译器移去变量在再次赋值之前没有被使用的赋值在下面编译器优化的例子 我们将演示通过改变编译器的优化设置 达到改变CodeWarrior产生代码的方式 Slide27 Slide28 Slide29 CodewarriorHC08CompilerOptionsSettings Slide30 所有的代码将被忽略 Slide31 在循环中用到的变量定义成全局变量 Slide32 这段代码并没有忽略掉 因为它是全局变量 有可能会被硬件 中断 用到 Slide33 在循环内复制代码 目的是展开分支操作下面的例子演示一下循环解开是如何工作的 编译器优化 循环解开 通过改变编译器设置 我们可选择不同的优化项 在生成代码时将会有差异 Slide34 示例 没有循环解开 编译器产生与4次循环相关的代码 Slide35 示例 有循环解开 相同的代码 但改变设置为 loopunrolling 编译器产生如下代码 相当于把循环展开for i 0 i 4 j Array i i Array 0 0 Array 1 1 Array 2 2 Array 3 3 Slide36 更多的优化选项 Slide37 更多的优化选项 Slide38 条件编译 编译指示符 if else elif endif这些指示符均用于条件编译 if elseOR elif endif只有当条件表达式的值不为零时 才编译跟有 if指示符的行 否则以后的行都被跳过直到遇到匹配的 else或endif error定义一个用于显示的编译错误 Slide39 对于嵌入式系统 同一源代码支持多平台 源代码的适应性 在编译时设置 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide41 模拟调试器界面 工具条 Slide42 模拟调试器 特点 功能强大的图形界面 拖 拉操作 弹出式菜单 模块化和可扩展系统 基于组件概念 不同的组件可以加入 来自Metrowerks Codewarrior 公司的组建来自半导体公司的组件用户组件对所有的目标和目标接口 界面 GUI 完全相同 Slide43 模拟调试器 界面 对不同的simulator和debugger 界面完全相同 对所有的CPU 界面完全相同 仅仅是子窗口中的内容不同 Slide44 模拟调试器 界面 断点信息 汇编指令地址 汇编指令机器码 汇编指令 Profiling信息 代码所花时间百分比 源代码 高级语言展开 折叠命令 覆盖信息 Slide45 模拟调试器 界面 CPU寄存器 存储区地址 存储区中的内容 存储区中的内容 字符 Slide46 模拟调试器 界面 执行的函数 目标类型 目标列表 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide48 启动程序 StartupCode一般用汇编语言写的 并且会连接到你编译过的可执行的模块中 它为执行C语言写的程序做准备 关闭中断把初始化过的数据从ROM中拷贝到RAM中将未初始化数据区清零给堆栈分配空间并初始化创建并初始化堆开放中断调用main Slide49 Slide50 复位后第一个执行的是启动程序 复位向量存贮了 startup 所在位置 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide52 代码放在哪里 在 PRM文件中 SECTIONS命令块用于定义存贮器的物理区域 在SECTIONS命令块中 每个单独的物理存贮器段用一个名字 一个属性和一个地址范围描述PLACEMENT命令块用于将代码和数据段定位到存贮器段 CodeWarriorManuals pdf Manual SmartLinker pdf C ProgramFiles Metrowerks CW08V3 1 TechnicalNotes BuildTools tn04 pdf Slide53 pragma Slide54 存储区分配 Slide55 代码放在哪里 变量放在Default RAM的位置 除非另外规定一个PRAGMA声明频繁使用的变量应放在直接页RAM 40 FF 在直接页中访问操作数采用直接寻址模式 8位寻址模式 比扩展寻址模式 16位寻址模式 少一个时钟周期 Slide56 数据段 VarA 想存放在一个特定区域内 0 x0080 0 x00A9 Slide57 Slide58 Slide59 funcition1被放在FunctionsROM代码段中 其地址为0 xEF00到EFFF Slide60 常数段想存放在特定的位置 Slide61 Slide62 Slide63 数组存在我们期望的位置 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide65 如何对IO进行操作 利用Codewarrior头文件中已经定义好的IO寄存器或者 definePortA volatileunsignedchar 0 x0000 或者volatileunsignedcharPortA 0 x0000 Slide66 访问固定内存位置 嵌入式系统通常的特点是需要编程者访问一个指定的存贮器位置 练习 在某个项目中需要将绝对地址0 xFFA处整型变量的值设为0 xAA55 编译器为纯粹的ANSI编译器 完成这个任务的代码是 Int ptr ptr int 0 x2FFA ptr 0 xAA55 Slide67 访问CPU寄存器 CPU中的寄存器没有对应的固定地址可以用汇编指令对它们进行访问C语言无法直接访问这些寄存器C编译器允许在C代码中使用汇编指令 1 asmAssemblyInstuction 2 asm AssemblyInstruction 3 asm Slide68 修改CPU中CCR寄存器的I位 Slide69 利用汇编指令来修改I位 Slide70 位域 位结构效率随编译器的不同而改变 不同的编译器不能移植 位类型无法移植提高代码效率移位和屏蔽可移植 合理提高效率经常被优化成位操作 Slide71 联合体是一个变量 不同的时间表示不同的类型和大小的对象 编译器会根据要求决定变量的大小 Slide72 联合体提供一种可以对单一存贮区不同类型数据操作的方法 程序中没有嵌入任何依赖于机器的信息 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide74 CodeWarrior编译器提供了一种非ANSI标准的方式来实现中断 中断向量表分配 MCU数据手册 在C源文件中 中断服务程序前面加 interrupt中断向量号 inttime counter interrupt7INT Timer void time counter 方法1 利用关键字 interrupt Slide75 中断向量表分配 MCU数据手册 Slide76 方法2 在PRM文件中声明 Slide77 方法3 在向量表中初始化 Slide78 利用interrupt关键字声明中断服务程序 Slide79 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide81 如何使用汇编和C语言混合编程 汇编和C语言中使用相同的符号 变量及函数名 注意参数传递规则注意函数返回值原则注意目标文件格式 Elf DwarforHIWARE 接口模块 C Assembly 或 Assembly C Slide82 在C中访问汇编变量 Slide83 在汇编中访问C变量 Slide84 在C中调用汇编函数 Slide85 在汇编中调用C函数 函数 C代码中 voidAddVar unsignedintfirst unsignedintsecond ASMData Cdata first second 函数声明 汇编 XREFAddVar 在汇编中调用C函数 LDDCData LoadvalueofCdatainDPSHD PUSHDonthestackLDAB 10 Load10inDCLRAJSRAddVar 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide87 嵌入式编程vs PC编程 嵌入式编程环境的主要特点 有限的RAM 有限的ROM 有限的栈空间 面向硬件编程 严格的定时 ISR 任务 很多不同种类的指针 far near rom uni paged 特殊关键字 标识符 interrupt tiny Slide88 数据类型 通过为变量选择最合适的数据类型可以最大程度地得到最短的代码和执行时间8位微控制器内部的数据的长度是8位 一字节 然而C首选的数据类型是 int 8位机处理8位数据类型比16位数据类型效率更高 int 和大数据类型只有当所描述的数据的大小需要时才使用当优先考虑代码效率时 双精度和浮点操作效率低 应当避免 Slide89 HC08的数据类型 ANSI标准没有精确定义数据类型的大小 但是CodeWarrior定义了 0 255 Slide90 默认CodeWarrior的数据类型 所有的基本数据类型可以被改变 但是建议尽量使用默认值 Slide91 数据类型选择 对8位MCU 在选择数据类型时 有3条原则 尽量使用最小的数据类型尽可能使用无符号数在表达式内声明数据类型 以便将数据类型减小到最小 强制类型转换 使用typedefs得到固定的大小 根据编译器和系统而改变 移植到不同的机器代码不变 当值需要固定位时使用 Slide92 定义完整的数据类型 在main函数里声明了3种不同数据类型的变量 Slide93 仅最后面的位写入值 并且使用了一个寄存器 每个变量的其余位被清零clr X 变量在堆栈里有一个地址 Slide94 在main函数里声明了3种不同数据类型的变量 Slide95 Slide96 所有声明的全局变量均被使用 Slide97 在这种情况下 编译器为所有变量保留了内存 Slide98 变量声明的内存区 每个变量有不同的大小 1 2和4字节 根据变量大小的不同 每个加操作用不同的方法完成 Slide99 修饰符 以下关键字用于声明变量 以指定特定需要或内存中变量存贮的相关条件 Staticvolatileconst这三个关键字 一起让我们不仅可写出好的代码 而且可写出紧凑的代码 Slide100 静态变量 使用静态变量有二个主要功能 第一个最常用的用法是定义一个变量 在函数连续调用期间 变量不会消失 第二个使用静态的用法是限制变量的范围 在模块级定义时 能被整个模块中所有函数访问 不能被其它模块中的函数访问 Slide101 静态变量示例 include includesfunctionscontainedinfile voidmain void MyFunction includedinMyFunction includedin voidMyFunction void DefinitionofMyFunctioninstaticcharmyVar 0 localvariabledeclaredstaticmyVar myVar 1 Slide102 静态函数 静态函数只能被其所在模块中的其它函数调用使用静态函数是结构化编程的好习惯静态函数能产生小而快的代码编译器在编译时确切地知道什么函数能调用一个给定的静态函数 因此 函数的相关内存区域能被调整 以致使用调用的一个短版本或跳转指令 Slide103 Volatile变量 在嵌入式系统中 这种情况通过两种主要途径发生 通过一个中断服务程序硬件动作的结果例如 通过一个串口接收到一个字符 结果串口状态寄存器更新 这完全在程序流程之外发生 很多程序员知道编译器不会试图优化一个volatile寄存器 而宁可每次重载它 Volatile变量其值在正常程序流程以外可能改变的变量 Slide104 volatile的变量从不会被编译器优化 访问定义为volatile的变量从不会被编译器优化 volatileunsignedcharPORTA 0 x00 volatileunsignedcharSCS1 0 x16 unsignedcharvalue voidmain void PORTA 0 x05 PORTA 00000101 PORTA 0 x05 PORTA 00000101 SCS1 value 10 Slide105 Volatile变量示例 MC68HC908GP20 32OfficialPeripheralRegisterNames volatileunsignedcharPORTA 0 x0000 Portsanddatadirection volatileunsignedcharPORTB 0 x0001 volatileunsignedcharPORTC 0 x0002 volatileunsignedcharPORTD 0 x0003 volatileunsignedcharPORTE 0 x0008 volatileunsignedcharDDRA 0 x0004 DataDirectionRegisters volatileunsignedcharDDRB 0 x0005 volatileunsignedcharDDRC 0 x0006 volatileunsignedcharDDRD 0 x0007 volatileunsignedcharDDRE 0 x000C volatileunsignedcharPTAPUE 0 x000D Portpull upenables volatileunsignedcharPTCPUE 0 x000E volatileunsignedcharPTDPUE 0 x000F Slide106 Const变量 Const声明可用于任何变量 它告诉编译器将其存贮在ROM区中编译器保留了那个位置程序存贮器地址 由于位于ROM中 其值不能改变Cons变量必须初始化比如 constdoublePI 3 14159265 Slide107 Const修饰符 Const变量与明显的常数相对 很多文章要求用const变量代替明显的常数 例如 用constunsignedcharchannels 8 代替 defineCHANNELS8 本方法的基本原理是在调试器内部 你能检查一个const变量 然而一个明显的常数不可访问 不幸的是 在很多8位机上你将为这一好处付出极大的代价 这两个主要代价是 一些编译器在RAM中创建一个真实的变量来支持cost变量 这是一个极大的惩罚 一些编译器如CodeWarrior 知道变量为const 将把变量存贮在ROM中 无论怎样 变量仍作为变量处理和访问 典型地用某些变址寻址 16位 的方式 与直接寻址 8位 方式相比 这种方法通常很慢 Slide108 Constvolatile变量 一个变量既能是常量 又能是可变量吗 答案是 能 这个修饰符应该用于能出乎意料地改变的任何存贮器位置 因此需要volatile限定语 由于const该变量是只读的 最明显的例子是硬件状态寄存器 象SCI状态寄存器SCS1 这个寄存器包含信号状态标志 如发送空 发送完成 接收满以及其它 这是一个可变寄存器由于这些标志的改变依赖于串行通信的状态 这也是只读 由于标志不能被程序直接改写 它们只对模块的状态作出响应 这个状态寄存器最佳声明方法是 SCIStatusRegister constvolatileunsignedcharSCS1 0 x0016 Slide109 栈指针与函数参数 栈指针支持C的关键特性 在汇编程序和C编译器中 堆栈通常用于给子程序传递变量 允许使用递归 是自动变量的基础 典型地子程序将把需要的操作数放入累加器 堆栈相对寻址允许访问堆栈上的数据 提供直接访问操作数 排除从堆栈压入以及弹出数值所需要的代码和时间 堆栈指针指令与等份的变址指令相比需要一个额外的字节和一个额外的执行周期 typedefstruct unsignedcharID unsignedshortTime ObjectType voidfoo unsignedcharvalue volatileObjectTypeinstance instance ID value Slide110 堆栈指针寻址 堆栈指针相对寻址进一步增强了C代码的效率 有两种类型 8位偏移的堆栈指针相对寻址16位偏移的堆栈指针相对寻址它们和间接寻址方式工作相似 但使用堆栈指针代替H X变址寄存器 注意当中断不允许时可用堆栈指针作为额外的变址寄存器 Slide111 堆栈帧 帧指针函数通常有一个包含其所有本地数据的堆栈帧 编译器并不设置一个明白的帧指针 但堆栈上的本地数据和参数都根据SP寄存器访问 入口代码通常入口代码是一系列为本地变量保留空间的指令 PSHA 仅当有寄存器参数PSHX 仅当有寄存器参数AIS s 为本地变量保留空间S是函数的本地数据的大小 单位 字节 出口代码出口代码从堆栈中移除本地变量 并返回到调用者 AIS t 移除本地栈空间 包括最终的寄存器参数RTS 返回调用者 Slide112 除函数返回一对象大于二字节 函数结果都返回到寄存器中 依据返回类型 使用不同的寄存器 如下表所示 返回大对象 函数返回大于二字节的对象均与一个附加的参数一起调用 它被传到H X 这个参数是对象应复制到的地址 HC08返回值 Slide113 声明了四个不同类型的函数 每个函数返回一不同类型的变量 每个函数有一个不同类型的参数 void byte word Slide114 被调用的函数跳转到其源码所在的地址 函数返回用RTS指令 Slide115 参数在寄存器A中 Slide116 Slide117 A用作参数寄存器 也用作直接寻址数组中的字节 Slide118 函数指针 函数指针与数据指针一样有用处 当你想用一个间接访问当你想用同一段代码 根据环境的不同调用不同的函数 Slide119 定义指向函数的指针 下面的代码定义了一个指向函数的指针 带了一个整型参数并返回一整数 int function int function 括号是必须的 因为定义中的优先关系 没有括号 则表示定义了一个函数返回一个整型指针 Slide120 Example pf 是一个静态函数指针 INT是参数 返回值为voidvoidfna INT Exampleprototypeofafunctiontobecalledtypedefvoid constPFV I INT DeclarationusingtypedefstaticPFV Ipf fna foo2 foo3 foo4 Directdeclarationstaticvoid constpf INT fna foo2 foo3 foo4 ExampleuseINTa 6 pf jump index a Callingmethod1 pf jump index a Callingmethod2 Slide121 Example 函数指针初始化 现在函数指针指向另一个函数 周期性中断毁调用函数指针指向的函数 Slide122 HC08QL示例 SLIC模块仅有一个中断用户必须读取状态向量寄存器SLICStateVectorregister SLCSV 来确定中断源可能C代码 Switch caseNestedif s if嵌套 Pointerstofunctions 函数指针 Slide123 Slide124 Debug 1 Slide125 Debug 2 Slide126 Debug 3 Slide127 Whentousepointers if嵌套可读性好 当使用函数少时 代码较小Switch可读性最好 代码最大Pointers函数越多 产生的代码少 但是RAM使用的最多 使用指针执行时间相同 Slide128 访问数组 硬编码 Array 0 12 UNIT VOLTS 编译时决定地址 执行速度快变址增加Array index 12 UNIT VOLTS 快速 比硬编码灵活数组指针 ArrayPtr 12 UNIT VOLTS 执行速度快 可读性差 可和循环一起使用 Slide129 Slide130 每种访问类型都有各自的优点 使用不同的寄存器完成不同的操作 Slide131 封装变量和函数 Slide132 接口文件 头文件 仅在这个文件中使用的变量 修饰符extern 仅在这个文件中使用的函数 可以完全成为一个大工程里的经过测试的模块 使软件模块化 Slide133 通讯 在main c和functions c Slide134 变量Result在main中被声明 Slide135 在function c中使用的变量 Slide136 Slide137 Result存储在全局变量中 利用向导创建一个新工程项目在新项目中加入或删除文件编译调试启动程序PRM文件设置如何对IO及寄存器进行操作如何写中断程序如何使用汇编和C语言混合编程嵌入式编程注意事项如何使用ProcessorExpert Slide139 ProcessorExpert处理器专家 为什么要用处理器专家其步骤请转到第一页 Slide140 开发人员面临的挑战 要处理的外设越来越多外设越来越复杂开发周期要求越来越短越来越长的代码需要更多的时间来开发 测试市场竞争越来越激烈 性能要求越来越高应用中队创新的追求这些要求往往很难同时满足 开发人员必须做出艰难的选择 他们需要高性能的工具来帮助他们 CodeWarriorDevelopmentStudio及processorexpert处理器专家给工程师提供了巨大的帮助 Slide141 嵌入式应用系统设计 工程师面临的挑战越来越多的功能通讯外设A D和D A转换PWM TimersI O Slide142 嵌入式应用系统设计 2 ASCI I2C ESPICAN BDLC USB Ethernet缩短产品上市时间市场竞争市场需求 Slide143 项目开发的主要难点 外设的选择和使用需要用到很多外设I O 字节操作 位操作A D和D A转换输入捕捉 输出比较 PWM通讯控制器 Slide144 项目开发的主要难点 2 设计初始化流程设计外设的使用 打开 读 写 关闭 芯片和应用的底层开发每个外设的特点每个模块的特点 Slide145 怎样迎接挑战 传统方式阅读数据手册 上百页的数据手册 理解寄存器的含义外设有很多寄存器 每个位的定义 功能理解各种不同的组合晶振 PLL 预分频 波特率设置评估所有的选项唤醒模式 8 9 10位模式 左 右对齐 上升沿 下降沿注意相互影响8个8 bit模块 4个16 bit模块 缓冲寄存器理解多功能复用普通I O引脚和其他模块复用 Slide146 阅读上百页的资料 Slide147 问题和风险 需要时间来阅读和理解手册对资料可能存在误解新功能手册错误 或描述不清功能重复使用比如CAN模块和PWM模块共用IO引脚编程错误位操作时置位和清零颠倒顺序错误寄存器访问顺序错误 或访问的时间有误 Slide148 开发过程中遇到的困难 TheerrorswillbefoundlateinthedevelopmentoftheprojectandhavesevereconsequencesGobacktothemanualsReturntotheveryearlyphaseoftheproject timelost Trytore understandthedocumentationMoredifficult needtoignorewhatwasunderstoodDoubtdocumentation startdoubtingsiliconbehaviorMakechangesassumedtobethecorrectonesRe codechangeswithrisksoferrors mistakeslistedbeforeMayrequiresignificanttimeformajorre coding Slide149 开发过程中遇到的问题 2 ThecumulativeeffectTryagainStilldebuggingthenon addedvaluecodeApplicationnotyettested maystillneedhardware softwareintegrationAlargepartofthedevelopmenttimeneedstobeduplicated H Wspecificcodedevelopment Applicationspecificcodedevelopment H W S WIntegration ProjectStart Pre productionRelease Slide150 长期的影响 FailingtoproperlyavoidtheseproblemswillhavealongtermeffectforthecompanyLatereleaseTimewastedinre designingtheinitializationandperipheraldriverscanhardlyberecoveredduringapplicationdebugging testing integrationandreleaseMorecostlydevelopmentLongerdevelopmentcostmoreinengineeringtimeLossofrevenuesPotentialmissofmarketwindowLossofmarketshareLongtermeffectMissedfinancialgoals lay off lossofmostvaluablestaffDelayedsubsequentprojects dominoeffectonlossoffuturerevenues Slide151 正确迎接挑战 TheProcessorExpertwayKnowledgedatabaseformanualsFunctionality capability optionsarecodedintoProcessorExpertHiddenregistersRegisters bitfieldsarereplacedbyoptionstochosefromandonlythepossibleonesCombinationsandinteractionsautomaticallycalculatedOscillator PLLclockbooster pre scalers clockdividers baudrategeneratorsvaluesareautomaticallycalculatedandpresentedPossiblevalues settingsarelistedinsimpletermsandunits e g 12 5mS Manuallyenteredvaluesarecheckedandflaggedif notpossibletodo Multi functionsaremonitoredConflictinusingperipheralssharingphysicalpinsareflaggedandrequireresolutionbeforecodecanbegeneratedProcessorExperttrackstheresourcesused Slide152 ProcessorExpert处理器专家 Object oriented applicationdevelopmenttoolsreduceyourtimetomarket Functionalityisdefinedbyproperties methods eventsSoftwareandperipheralbeansarehardwareindependentHardwareindependenceandinheritancemakeapplicationsportableExpertknowledgebaseconstantlychecksCPUdependentsettings Beansareready to use testedcomponentswithcompletedocumentationProcessExpertgenerateoptimizedcode Slide153 比如 CPU Slide154 比如 通用I O Slide155 比如 A Dconverter Slide156 ProcessorExpert EmbeddedBeans ProcessorExpertisaRapidApplicationDesign RAD toolthatcombineseasy to usecomponentbasedapplicationcreationwithanexpertknowledgesystem CPU on chipperipherals externalperipheralsandsoftwarefunctionalityisencapsulatedintocomponentscalledEmbeddedBeans SimpleperipheralbeansBitIO BitsIOByteIO Byte2IO Byte3IO Byte4IOExtInt externalinterrupt TimerIntTimerOutPWM PPGEventCntr8 EventCntr16 EventCntr32FreeCntr8 FreeCntr16 FreeCntr32CaptureRTIsharedWatchdogAsynchroSerialADfastInterruptVectorIntEEPROMBWimage COLimage ComplexperipheralbeansMotorolaCANUSBBDLCADconverter ADCExternalAsynchroMaster AsynchroSlaveSynchroMaster SynchroSlaveTerm terminal TimeDateExt8IO Ext16IO Ext32IOAndmore Slide157 优点 TheProcessorExpertwaybringsmultiplebenefitsDesignisrightfirsttimeCodehasbeentestedDevelopmentphaseismuchfasterNoneedtoread100 sofpagesWillnotneedtogobackandfindthecorrectwaytouseandcodefortheperipheralsLessriskoferrorTheonlyerrorsmadeareintheselectionoftherightsettingamongthoseofferedChangestakeonlyminutestoimplement afewclicksandre compileEasytoportChangingCPUinthemiddleofadesignisonlyafewclicksPortinganolddesigntoanewonetakesonlyafewclicksCaneasilyporttoadifferenthardwaremodule justaddresstheflaggeditems Slide158 长期的成功 AvoidingtheproblemsdescribedwillhavealongtermbenefitforthecompanyEarlyreleaseAlotoftimesavedindesigningtheinitializationandperipheraldriversgivesmoretimefor addedvalue applicationdesign testing integrationandreleaseLesscostlydevelopmentLessmoneyspentinengineeringtime re use portabilityHigherquality re usewhatworks lessmaintenanceorreworkMorerevenuesCanberightontimeforthemarketwindowBeatcompetitors increasemarketshareLongtermeffectMeetandbeatfinancialgoals rewardandretainvaluablestaffCanstartsubsequentprojectsaheadofschedule dominoeffectonincreasedfuturerevenues Slide159 ProcessorExpert处理器专家将会提供更多功能 Moreintuitivefeaturesandoptions PeripheralInspectorportedtoHC S 08andHC S 12 Increasedperformanceisbeinginvestigated Interfacewithapplicationdesigntools e g Mathworks Slide160 1stScenario ProcessorExpert Simulink Stateflow BlockLibrary PEBeansLibrariesMCU DSP PPCcoverageMotorControl LCD etc copiedtoSimulinkblocklibraryinordertousethemformodeldesign PEBeansusedasstandardSimulinkblocksforthemodeldesign ProvideunifiedHALforMCU DSP PPC ext peripherals etc Result SimulinkmodelandthismodelmatchingPEproject InPEuserconfiguresconcretemappingofbeansbasedHALtoselectedMCU DSP PPCphysicalresources ApplicationprojectcodeconsistsfromCsourcesgeneratedfrommodelanditsPEproject Slide161 为将来做好准备 InafewyearsfromnoweverydeveloperwillbeconvincedthatagooddevelopmenttoolsuiteMUSTHAVEaProcessorExpertelementandOnlyMetrowerkswillhavethatProcessorExpertelement Slide162 DoubleclickontheBitIObeanintheBeanSelectorinordertoaddthebeantotheproject Slide163 EnternameoftheBeanintheBeanInspectorwindow RedLED Slide164 SelectpinfortheRedLEDintheBeanInspectorwindow PTB0 ATD0 Slide165 SelectPinDirectionintheBeanInspectorwindow Output Slide166 ClickontheTABMethodsintheBeanInspectorwindow inordertosetgeneratedmethods Slide167 Setallmethods don tgenerate insteadoftheNegValmethod setthemethod generatecode Slide168 DoubleclickontheBitIObeanintheBeanSelectorinordertoaddthesecondbean Slide169 Clickonthe Properties TABintheBeanInspectorwindowinordertosetthebean Slide170 EnternameoftheBeanintheBeanInspectorwindow GreenLED Slide171 SelectpinfortheGreenLEDintheBeanInspectorwindow PTB1 ATD1 Slide172 SelectPinDirectionintheBeanInspectorwindow Output Slide173 ClickontheTABMethodsintheBeanInspectorwindow inordertosetgeneratedmethods Slide174 Setallmethods don tgenerate insteadoftheNegValmethod setthemethod generatecode Slide175 Doubleclickonthe ExtInt beanintheBeanSelectorinordertoaddthe3rdbeantotheproject Slide176 Clickonthe Properties TABintheBeanInspectorwindowinordertosetthebean Slide177 EnternameoftheBeanintheBeanInspectorwindow Button Slide178 SelectpinfortheButtonintheBeanInspectorwindow PTG0 KBD0 Slide179 Selectitem Generateinterrupton tothe fallingedge intheBeanInspectorwindow Slide180 ClickontheTABMethodsinth
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府出租林地合同范本
- 知识产权双创题目及答案
- 区块链技术在能源领域的应用研究报告
- 轻工行业技术规范探讨
- 嵌入式系统试卷及答案
- 2025年粤菜模拟考试试题及答案
- 2025年小学自主招生题库及答案
- 2025年上半征兵工作完成落后检讨表态发言
- 2025年山东省新闻系统事业单位人员招聘考试题库及答案解析
- CN222992914U 一种rto多室蓄热氧化燃烧处理设备 (广东和炫环保智能科技有限公司)
- 2025-2026学年地质版(2024)小学体育与健康二年级全一册《别让眼睛受伤害》教学设计
- 车辆安全培训课件
- 2025年商标审查协作中心面试模拟题答案
- esg考试试卷问题及答案
- 2025年徐州市中考数学试题卷(含答案及解析)
- 统编版五升六语文开学摸底测试卷(十二)(含答案)
- 2025-2026学年北师大版(2024)初中物理八年级上册教学计划及进度表
- 2025年度哈尔滨“丁香人才周”(春季)哈尔滨新区教育系统专项招聘80人考试备考试题及答案解析
- 军用电台知识培训方案课件
- 外科面试题目及答案
- 2025年职业技能鉴定考试(婴幼儿发展引导员·高级/三级)历年参考题库含答案详解(5套)
评论
0/150
提交评论