移植外链查询工具

外链查询工具  时间:2021-02-27  阅读:()
1ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列应用报告ZHCA684C–March2015–RevisedMarch2017移移植植到到SimpleLinkMSP432系系列列DungDang.
MSP432MarketingEvanWakefieldMSP432ApplicationsPriyaThanigai.
MSP432Applications摘摘要要16位MSP430和32位SimpleLinkMSP432微控制器(MCU)系列以低功耗、高性能实现互补.
本移植指南旨在帮助开发人员精确评估将现有应用从16位MSP430移植到32位SimpleLinkMSP432ARM的相关工作,最终通过完整的软硬件覆盖范围制订移植策略,从而在避免因平台差异而引入漏洞的前提下正确移植现有应用,同时充分利用32位器件引入的独特特性或性能改进措施.
如果开发人员充分了解硬件或软件组件的移植或保留需求,可将这些组件与其在各自系统中的特定用途重新关联,并精确评估整个应用所需的全部移植工作.
内内容容1SimpleLinkMSP432平台移植概述22CPU和内核.
23硬件功能和移植注意事项34软件移植55工具与生态系统.
186移植示例和分析.
197参考资料19附附图图目目录录1使能MSP432MCU上的中断92在MSP432MCU上定义中断服务例程(ISR)103MSP430MCU存储器映射(MSP430F548A)124MSP432MCU存储器映射(MSP432P401R)13附附表表目目录录1MSP430与MSP432内核比较.
22MSP430与SimpleLinkMSP432MCU整体系统级比较.
33MSP430和MSP432MCU的电源模式.
44系统级配置.
55软件组件66将软件组件从MSP430Ware移植到SimpleLinkSDK67移植到MSP432P4xx的软件组件的分布.
78MSP432MCU的新增核心系统外设149跨MSP平台的共享外设.
1510扩展外设的兼容等级1611Cortex-M外设17SimpleLinkMSP432平台移植概述www.
ti.
com.
cn2ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列商商标标MSP430,SimpleLink,MSP432,CodeComposerStudioaretrademarksofTexasInstruments.
ARM,Cortex,Keil,VisionareregisteredtrademarksofARMLtd.
BluetoothisaregisteredtrademarkofBluetoothSIG.
IAREmbeddedWorkbenchisaregisteredtrademarkofIARSystems.
Wi-FiisaregisteredtrademarkofWi-FiAlliance.
1SimpleLinkMSP432平平台台移移植植概概述述MSP432设备是SimpleLink微控制器(MCU)平台的组成部分,包括:Wi-Fi,Bluetooth低功耗、1GHz以下器件和主机MCU.
它们都共用配有单核软件开发套件(SDK)和丰富工具集的通用、易用型开发环境.
一次性集成SimpleLink平台后,用户可以将产品组合中器件的任何组合添加至您的设计中.
SimpleLink平台的最终目标是确保设计要求变更时,完全重复使用代码.
MSP432器件将32位ARMCortex-M4F内核与MSP超低功耗DNA相结合,同时提供高度集成的外设.
为了同时实现Cortex-M和CMSIS合规性以及从16位MSP430器件到SimpleLinkMSP432器件的顺利移植,我们进行了慎重考量.
更多关于SimpleLink平台的信息,请访问www.
ti.
com/simplelink.
本移植指南分为以下几部分:在应用报告第一部分中,从器件层级对两个MSP平台进行了对比,并强调了一些重要的硬件移植考注意事项,包括内核、系统级考注意事项、外设修改和附加内容.
应用报告的大部分篇幅侧重于软件移植,因为将现有应用移植到另一MCU平台时,软件移植的工作量通常是最大的.
软件概述提供的高级指南用于根据选择的硬件和软件选项评估移植范围.
以下各节根据内核系统、外设代码、编译器特定代码和内部特定代码、高级库和应用代码划分了移植步骤.
2CPU和和内内核核MSP430CPU采用16位RISC架构,具有专门针对最新高效编程而设计的特性,比如正交架构、单周期寄存器指令、无分页统一存储器映射以及存储器间直接传输等.
MSP432CPU围绕着行业标准ARMCortex-M4F32位内核构建,并充分利用了与ARM处理器关联的完善的开发工具和软件解决方案生态系统的优势.
虽然这两个处理器可能被视为完全不同的类型,但实际上,它们在架构方面有很多相似之处,如表1所述.
表表1.
MSP430与与MSP432内内核核比比较较名名称称MSP430内内核核MSP432内内核核数据宽度16位32位程序总线宽度16位(CPU)或20位(CPUX)地址总线32位总线类型16位MSP430总线AHB架构VonNeumann(Princeton):数据运算和指令获取共享同一总线Harvard:独立的数据总线和指令总线指令集RISC,MSP430专利RISC,thumb和thumb2指令大小16位(每个操作数16位)16位和32位指令周期(典型值)1-4个周期1-2个周期管线无3级管线预取缓冲区128位128位功耗模式工作模式,LPM0-LPM4,LPMx.
5工作模式,低频,LPM0,LPM3,LPMx.
5调试接口MSP4304线制JTAG和2线制SBW4线制和2线制模式的ARMJTAG数学函数支持硬件乘法器(MPY)硬件乘法器和除法器、DSP扩展器以及集成式FPUwww.
ti.
com.
cn硬件功能和移植注意事项3ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列随着编译器的不断改进,CPU和内核层级上的很多难点和差异将通过编译器和链接器工具进行管理.
虽然此举减轻了C程序员的工作量,但了解每种架构的差异和优势对于优化软件性能、规模和实时特性很有必要.
4节还介绍了将软件从一种平台移植到另一种平台(从16位平台移植到32位平台,或相反)时的限制因素.
3硬硬件件功功能能和和移移植植注注意意事事项项3.
1系系统统特特性性3.
1.
1系系统统级级比比较较表表2.
MSP430与与SimpleLinkMSP432MCU整整体体系系统统级级比比较较参参数数MSP430MCUMSP432MCU电源电压范围1.
8V至3.
6V1.
62V至3.
7V模拟电源电压1.
8V或2.
2V至3.
6V1.
8V至3.
7V最大系统频率8MHz、16MHz、20MHz或25MHz48MHz非易失性(闪存或FRAM)存储器512字节至512K字节最大256KBRAM存储器128字节至64K字节最大64KB3.
1.
2复复位位MSP432MCU的复位电路与MSP430MCU的复位电路类似.
复位引脚可配置为复位功能(默认),也可以配置为特殊功能寄存器(SFR)中的NMI功能,即SFRRPCR.
在复位模式下,RST/NMI引脚为低电平有效,对该引脚施加符合复位时序规范的脉冲会引起BOR型器件复位.
将SYSNMI置1可将RST/NMI引脚配置为外部NMI源.
外部NMI是边缘敏感的,其边缘是由SYSNMIIES选择的.
设置NMIIE能使能外部NMI的中断.
如果发生外部NMI事件,NMIIFG会置1.
RST/NMI引脚可连接上拉电阻或下拉电阻(使能或禁用).
SYSRSTUP用于选择上拉电阻或下拉电阻,SYSRSTRE用于使能(默认)或禁用上拉电阻(默认)或下拉电阻.
如果未使用RST/NMI引脚,需要选择并使能内部上拉电阻,或者将外部上拉电阻连接至RST/NMI引脚,并为VSS连接去耦电容.
3.
1.
3电电源源MSP432系列器件新增了包括双稳压器(LDO和DC-DC)在内的一系列电源系统功能,可为内部逻辑和其他组件生成两个VCORE电平.
内核电压频率限制和运行时可选稳压器这类功能可提高器件的灵活性,从而可进一步优化电源系统以及系统功耗.
更多信息,请参见《最大限度提高MSP432P4xx稳压器的效率》.
更多关于设计电源系统和制定应用功耗曲线的资源,请参见《采用SimpleLinkMSP432微控制器设计超低功耗(ULP)应用》.
硬件功能和移植注意事项www.
ti.
com.
cn4ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列3.
1.
4低低功功耗耗模模式式MSP432MCU系列保留了MSP430MCU的超低功耗架构,提供类似的电源和低功耗架构,开发人员可在此架构上开发高能效应用.
除了工作模式之外,MSP430和MSP432MCU平台均可提供多种低功耗模式,各模式下会对不同时钟和外设的功率进行门控,从而可针对不同应用状态下的功耗灵活地进行优化.
在MSP430平台上,这些低功耗模式的编号为LPM0到LPM4,最近已扩展到LPM3.
5和LPM4.
5.
每个级别均可提供不同程度的时钟和外设可用性.
MSP432MCU平台继续为低功耗模式使用类似的结构,保留了最有用的电源模式,并扩展为采用两种新模式实现慢速执行.
表3归纳了MSP平台上的电源模式及其彼此间的关联方式.
表表3.
MSP430和和MSP432MCU的的电电源源模模式式MSP430MCUMSP432MCU行行业业描描述述注注释释工作工作工作模式CPU和外设低频工作低功耗运行CPU和外设<128kHzLPM0LPM0ARM:休眠外设开启,CPU关闭低频LPM0休眠+CLK<128kHzLPM1不适用MSP430特有的模式LPM2不适用MSP430特有的模式LPM3LPM3ARM:深度休眠RAM和RTC处于待机模式A/BCLK,<32kHz,一些外设可用LPM4不适用RAM处于待机模式无时钟,一些外设可用LPM3.
5LPM3.
5ARM:关断RTC不含RAMLPM4.
5LPM4.
5ARM:关断关断3.
1.
5时时钟钟MSP平台集成了稳健耐用的统一高度正交计时系统,该系统易于使用,并且在不同MSP系列和所有器件之间保持一致.
时钟模块提供的统一时钟树最多具有四个时钟信号,可用于高速计时和低速计时,具有一定的灵活性,并能在性能和功耗之间达到平衡.
可使用多个频率和精度不同的内部和外部时钟源来提供时钟信号.
时钟信号也可用于为CPU提供时钟源(MCLK)以及为外设提供时钟.
计时外设是通过时钟进行门控的,并且时钟选择可在外设层级进行配置(使用外设寄存器),但时钟信号可通过时钟模块或外设请求使能,无需使能外设时钟本身.
MSP432P4xx系列保留了与MSP430F5xx、MSP430FR5xx和MSP430FR6xx相似的计时系统,结合了这些计时系统提供的最佳特性.
需要使用高速、高精度内部时钟源的应用可利用改进的DCO提供高达48MHz运算,该DCO高度可调,无需使用调制,抖动低,通过外部电阻提供精度较高的选项.
MSP432不仅扩展为支持更高速的运算,还在频率范围内增加了更多时钟源和信号,从而可提供更多的粒度和计时选项,更好地满足不同应用的需求.
将应用从另一平台移植到MSP432平台时,可以考虑使用这些选项(参见表4)来优化应用用例.
www.
ti.
com.
cn硬件功能和移植注意事项5ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列3.
1.
6内内核核系系统统相相关关性性及及配配置置表4列出了根据所选系统频率建议使用的系统配置.
表表4.
系系统统级级配配置置系系统统频频率率VCORE建建议议使使用用的的稳稳压压器器闪闪存存等等待待状状态态0MHz至12MHz0LDO012MHz至16MHz0LDO116MHz至24MHz0LDO124MHz至32MHz1高有效占空比应用为DC-DC,其他应用为LDO132MHz至48MHz1高有效占空比应用为DC-DC,其他应用为LDO13.
2外外设设最初的MSP432系列将之前在MSP430中引入的超低功耗外设以及一些新外设结合在一起,从而提高了性能.
共享的外设在MSP430和MSP432平台的运行方式相同,唯一例外的是它们的中断信号和处理程序不同,这是因为MSP432MCU上新增了嵌套矢量化中断控制器(NVIC)模块.
更多关于将MSP430移植到NVIC的详细信息,请参见4节.
不同系列器件头文件中的寄存器定义及其说明也是相同的,因此,无论是使用寄存器级访问还是MSPDriverLibrary等较高抽象层代码,均可实现代码重用.
MSP432MCU上的一些外设经稍加修改,性能也较其MSP430MCU同类器件有所改进.
举例来说,ADC14就是在ADC12_B基础上改进的版本.
两者的共享特性和运算可利用和重用,并且新增特性和改进特性(比如分辨率从12位提升至14位、或采样速率从200ksps增至1Msps)则需要重新设计并进行软件方面的考量.
MSP平台新增的MSP432MCU上的最后一组外设来自或继承自DMA、Timer32和SysTick等ARM.
这些模块为器件增加了新功能,需要对现有系统和代码进行进一步修改才能实现新功能.
特别是DMA模块,其中引入的很多新特性和新功能可视为MSP430DMA的升级.
要在MSP432MCU应用中使用这些特性,应在系统设计层面进行深入研究.
4软软件件移移植植4.
1软软件件移移植植概概述述将现有软件从一个器件移植到另一个器件时,最先要做的是评估并确定哪些现有代码组件可以重用,哪些组件需要修改或重新开发.
预先进行的评估有助于估算出移植需要的工作量,从而可准确地规划资源并将软件分为两类:一类是可重用的代码,一类是由于平台差异或设备新特性的原因而需要修改或新建的代码.
为实现跨设备移植或跨平台移植,可将软件组件分为以下几类:与CPU和内核相关的代码、系统外设(例如电源、时钟和存储器)代码、外设代码(使用寄存器访问或外设驱动程序库)、与中断相关的代码、内部特定代码和编译器特定代码、最后是更高抽象层的软件库和顶层应用代码.
根据待移植器件之间的差异大小,需要更新的软件组件数量会有所不同.
移植到MSP432系列器件时,需要浏览关于RTOS使用方法的内容.
表6中的许多分组可通过RTOS(如TI-RTOS)轻松管理.
如表5所示,SimpleLinkSDK具有很多MSPWare之前没有、但对于SimpleLinkSDK来说是标配的新特性,包括预装TI-RTOS内核、符合POSIX规定等.
SimpleLinkSDK还支持其他RTOS内核(比如FreeRTOS),为开发人员提供了灵活性.
每种内核均可提供实时多任务服务,如任务定时和任务调度.
RTOS内核为所有片上外设运行硬件抽象层以及一套功能驱动程序.
例如,如果使用RTOS,RTOS可自动检测器件何时应进入低功耗模式并在空闲时间段内运行,并且RTOS会代开发人员管理此操作.
软件移植www.
ti.
com.
cn6ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列表表5.
软软件件组组件件MSPWareSimpleLinkSDK示例和演示是是TI驱动程序否是DriverLib和HAL是是插件否是TI-RTOSTI-RTOS链接是FreeRTOS不可用是符合POSIX要求的API否是平台特定库是是文档是是表6分步介绍了移植到MSP432器件平台的过程.
示例表中使用的外设集合基于MSP432P4xx系列器件上可用的配置.
表表6.
将将软软件件组组件件从从MSP430Ware移移植植到到SimpleLinkSDK组组组组件件兼兼容容等等级级编编译译器器支支持持寄寄存存器器访访问问代代码码DriverLibAPI内核CPU和内核相关低新开发新,智能API数据类型中使用显式类型使用显式类型中断低部分新可用作API内联函数部分高部分可用作API系统系统模块:电源、时钟、存储器低不可用新开发新,建议使用易用型DriverLibAPIMSP外设共享MSP外设:Timer_A、eUSCI、REF_A、COMP_E、WDT_A、RTC_C、GPIO、AES256高不适用兼容,检查本机数据类型和寄存器宽度(16位)兼容,检查本机数据类型和BASE_ADDRESS使用情况扩展或新修订的MSP430外设:ADC14、CRC32中到高不适用部分兼容,查看不同的寄存器宽度(16位到32位)、小位重定位,新标志清零机制部分兼容,可视为新API,以及现有API的参数检查数据类型和BASE_ADDRESS使用情况ARM外设ARM外设:DMA、SysTick、Timer32无不适用新开发新开发,建议使用DriverLibAPI软件库,顶层应用代码高不适用兼容使用grlib、iqmathlib和其他库利用表7的移植评分系统,开发人员可将其现有的应用分解为相似的组件和分组.
由于各应用的抽象程度各不相同,因此分解可能会得出不同结果,但通常来讲,对于抽象层足够多且结构合理的软件来说,可以将低级系统和外设代码从驱动程序、库以及高级应用代码中分离.
了解了每个分组和组件在应用代码中的分布后,开发人员不仅可利用表7中的移植工作量确定其应用移植的工作量,还可以在更高层面上了解需要为每一组件执行哪些操作才能在新MSP平台上创建兼容、稳健的应用.
表7显示了软件组件在典型应用中的分布(假定该应用使用了所有组件和外设).
使用该图,在确定特定应用的分布后,开发人员可从更高的层面得出移植该应用需要的工作量.
www.
ti.
com.
cn软件移植7ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列表表7.
移移植植到到MSP432P4xx的的软软件件组组件件的的分分布布组组组组件件移移植植工工作作在在应应用用代代码码中中所所占占的的百百分分比比内核CPU和内核相关低到中数据类型中中断中内联函数中系统系统模块:电源、时钟、存储器中MSP外设共共享享MSP外外设设::Timer_A、eUSCI、REF_A、COMP_E、WDT_A、RTC_C、GPIO、AES256低扩扩展展或或新新修修订订的的MSP430外外设设:ADC14、CRC32低到中ARM外设ARM外设:DMA、SysTick、Timer32低到中软件库,顶层应用代码低需要注意的是,每节中给出的移植工作量仅供参考.
只有在特定应用环境中对这些组件进行仔细评估后,才能确定准确的分数.
以下章节详细介绍了每个组件的移植步骤,并强调了每个组件移植过程中需要注意的细节.
4.
2CPU、、内内联联函函数数和和编编译译器器支支持持4.
2.
1数数据据类类型型,,16位位和和32位位MSP430与MSP432最显著的区别是两者分别采用16位和32位CPU架构,因此两者的本机数据类型和数据大小均不同.
在C语言中,int类型采用架构的本机大小;因此,对于MSP430MCU,int表示16位整数,对于MSP432MCU,int表示32位整数.
如果变量依赖于其数据大小和类型,尤其是考虑的类型和运算可能涉及到符号和溢出的情况,数据类型不正确可能导致计算结果错误.
如果变量用于检索,使用的数据类型不正确可能导致存储器访问无效或超出范围.
从MSP430MCU移植到MSP432MCU时,因使用int而导致出错的可能性不太大,因为新变量额外有16位来缓存已有的16位数据.
要修改不正确或不明确的数据类型使用,开发人员可使用C99类型,该类型明确指出了数据大小和数据类型.
无无符符号号int或int以uint32_t或int16_t代替不仅可避免变量类型误用,还可帮助开发人员更清晰地在代码中标识出变量类型,并可指示变量用途.
如果将为多个平台写入软件,为了确保使用的数据类型正确无误,同时确保使用的数据类型最适合其特定用途(检索变量、数据存储、临时计算等),并保证为特定MSP平台使用的数据类型是最佳数据类型,也可使用C99快速和类型和最小类型,如uint_fast32_t或uint_least16_t.
快速整型采用平台上可用的较快速的整型,需要的位数最少.
uint_fast16_t会为MSP430MCU使用16位无符号整型,但会为MSP432MCU使用32位无符号整型,因为在MSP432MCU上,本机32位运算始终是最快的.
另一方面,leastN整型表示特定架构上可用的整型,其宽度至少为N位.
不仅CPU或低级代码要使用正确、稳健的数据类型,还应在所有驱动程序层级或软件库中使用此类数据类型.
4.
2.
2MSP430内内核核和和Cortex-M4内内核核使使用用和和内内联联函函数数由于MSP430MCU和MSP432MCU使用不同的内核,因此其关联器件会使用不同的内核函数集合.
一些内联函数共用通用功能,并提供内联函数转换层,因此可兼容现有的MSP430MCU代码.
msp_compatibility.
h文件可帮助将多个现有的MSP430MCU内联函数转换为MSP432MCU等效函数.
Example1定义了一些常用内联函数.
软件移植www.
ti.
com.
cn8ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列Example1.
MSP432上上的的MSP内内联联函函数数及及定定义义(msp_compatibility.
h)#define__sleep()__wfi()#define__deep_sleep(volatileuint32_t*)(0xE000ED10)))|=0x00000004;__wfi();(*((volatileuint32_t*)(0xE000ED10)))and=~0x00000004;}#define__low_power_mode_off_on_exit(volatileuint32_t*)(0xE000ED10)))&=~0x00000002;}#define__get_SP_register()__get_MSP()#define__set_SP_register(x)__set_MSP(x)#define__get_interrupt_state()__get_PRIMASK()#define__set_interrupt_state(x)__set_PRIMASK(x)#define__enable_interrupt()__asm("cpsiei")#define__enable_interrupts()__asm("cpsiei")#define__disable_interrupt()__asm("cpsidi")#define__disable_interrupts()__asm("cpsidi")#define__no_operation()__asm("nop")CMSIS还提供一套适用于Cortex-M4内核的指令和功能内联函数(请参见Example2).
Example2.
cmsis_ccs.
h中中定定义义的的MSP432内内联联函函数数__attribute__((always_inline))staticinlinevoid__nop(void){__asm("nop");}//WaitForInterrupt__attribute__((always_inline))staticinlinevoid__wfi(void){__asm("wfi");}//WaitForEvent__attribute__((always_inline))staticinlinevoid__wfe(void){__asm("wfe");}//EnableInterrupts__attribute__((always_inline))staticinlinevoid__enable_irq(void){__asm("cpsiei");}//DisableInterrupts__attribute__((always_inline))staticinlinevoid__disable_irq(void){__asm("cpsidi");}//DataSynchronizationBarrier__attribute__((always_inline))staticinlinevoid__DSB(void){__asm("dsb");}www.
ti.
com.
cn软件移植9ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列对于DriverLib用户,还会提供DriverLibAPI来运用内联函数实现的各种功能.
还可使用其他API执行一系列指令,以提供更多信息.
这些DriverLibAPI位于CPU模块(cpu.
h)或电源模块(pcm.
h)中.
PCM_setPowerState();PCM_shutdownDevice();PCM_gotoSleep();PCM_gotoDeepSleep();更多关于DriverLibAPI的信息,请访问www.
ti.
com/tool/mspdriverlib并查看《MSP432DriverLib用户指南》(随DriverLib提供).
4.
2.
3中中断断系系统统MSP430MCU和MSP432MCU使用两个完全不同的中断系统.
如果要在这两个平台之间实现软件移植,还要特别考虑中断配置和处理.
MSP430MCU上的中断系统大部分集成到MSP430内核中.
中断系统和外设中断源直接连回到受单个GIE位(SR寄存器的一部分)控制的主中断系统.
另一方面,MSP432MCU采用Cortex-M4集成式嵌套矢量化中断处理器(NVIC),该控制器从CPU内核取得对中断管理的更多控制,同时提供更大的灵活性,并具有优先级可配置、尾部连接高效以及外设中断单独控制等特性.
4.
2.
3.
1使使能能MSP432MCU上上的的中中断断从移植过程的角度来讲,最后一个功能是最主要的,除了要使能外设的各个中断触发之外,还需要使用额外的软件寄存并使能NVIC系统上的外设中断源,如图1中所示.
图图1.
使使能能MSP432MCU上上的的中中断断软件移植www.
ti.
com.
cn10ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列请注意,这一附加步骤是在NVIC模块上完成的.
也就是说,使用DriverLib时,用于该步的NVIC中断API为Interrupt_enableInterrupt(PERIPHERAL_INT);.
4.
2.
3.
2寄寄存存中中断断和和中中断断矢矢量量表表对于MSP430MCU,编译器通常通过检测前缀为关键字#pragmavector的特殊中断服务例程来管理中断矢量表的存储器空间分配、为未使用的中断矢量保留默认值以及寄存正在使用的中断矢量.
ISR函数也需要使用__interrupt关键字.
#pragmavector=ADC12_VECTOR__interruptvoidADC12_ISR(void)为MSP432MCU定义中断矢量的默认方法是跨不同Cortex-M平台应用通用标准.
整个中断矢量表定义为起始位置固定为0x00000000的数组.
矢量表包含指向中断服务例程(定义为常规函数)地址的中断矢量地址.
注注:中增加了"应用功能"备注应应用用功功能能目前正在开发CCS编译器,以便在MSP432上使能下文介绍的MSP430中断#pragma功能.
该功能可用后,本文档将更新为包含支持此功能的第一个CCS和TI编译器版本.
为了保持MSP平台之间的兼容性,MSP432MCU还支持使用传统的#pragmavector方法来定义中断.
为进行移植,仍可采用此方法重用MSP430MCU中的现有中断代码.
图2显示了用于在MSP432MCU上定义和分配中断矢量表的两个选项.
NOTE:选项2当前不可用.
更多相关信息,请参见"应用功能"备注(位于节4.
2.
3.
2中).
图图2.
在在MSP432MCU上上定定义义中中断断服服务务例例程程(ISR)www.
ti.
com.
cn软件移植11ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列4.
2.
4中中断断和和LPM0或或LPM3((休休眠眠))模模式式MSP430CPU与MSP432CPU在架构上的区别之一是,MSP430CPU提供的原子指令允许用户使能或禁用全局中断并同时进入低功耗模式.
在MSP432架构中这两个操作是独立的;因此,应用程序通常需要先使能或禁用主中断,然后再进入LPM0(休眠)或LPM3(深度休眠)模式.
在MSP430MCU上,可使用以下原子指令使能中断并进入低功耗模式.
__bis_SR_register(LPM0_bits+GIE);但在MSP432MCU上,同样的过程需要两个单独指令来完成.
因此该过程变为非原子过程.
__enable_irq();__wfi();上述CMSIS式内联函数会先通过禁用PRIMASK的方式使能中断,然后再使用等待中断指令进入LPM0模式.
请注意,MSP432头文件还提供转换层来重新创建类似的内联函数,如__enable_interrupts()或__sleep(),这些内联函数会模拟MSP430MCU的行为,但其功能与CMSIS内联函数相同.
非原子操作给MSP432MCU带来的最大差别是,如果在enable_irq()和wfi()质量之间发生待处理中断或异步中断,中断可能在器件进入LPM0或LPM3模式之前得到处理.
如果该中断是唯一预期的中断,并且是器件从低功耗模式返回的唯一方法,应用程序需要确保器件不会永久停留在低功耗模式.
在这种特有的情况中,可使用以下代码序列:__disable_irq();__wfi();__enable_irq();__ISB();__disable_irq();在这种情况中,如果因为使能了PRIMASK而导致主中断禁用,在存在待处理的中断时,__wfi()命令将以NOP指令的形式执行(如果无效).
如果器件已执行了__wfi()命令,禁用了主中断的中断触发会使器件从LPM0或LPM3模式唤醒.
最后三条指令基本上会立即使能中断模块,以确保中断得到处理.
该序列的缺点是每次触发中断都会唤醒器件.
开发人员将根据其应用需求、中断源以及低功耗模式配置确定出最优化、但安全有效的中断和低功耗模式序列.
MSP430和MSP432MCU的中断唤醒操作也稍有不同.
在MSP430MCU上,应用程序通常可使用内联函数__bic_SR_Register_on_exit()将SR寄存器中的相应位清零,指示CPU在中断服务例程(ISR)结束时唤醒.
在MSP432Cortex-MCPU上,应用程序可使用SLEEPONEXIT位将CPU配置为在任何中断服务例程结束时会唤醒还是返回到低功耗模式.
特别是在SLEEPONEXIT置1的情况下,器件会在上一个待处理中断的ISR结束时自动重新进入低功耗状态.
如果SLEEPONEXIT已清零,器件会在处理完上一待处理中断后唤醒并恢复CPU执行.
MSP432DriverLib结合了多个API,可实现不同的中断和LPM操作,包括用于执行以上中断和LPM序列的API.
软件移植www.
ti.
com.
cn12ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列4.
2.
5存存储储器器虽然MPS430和MSP432MCU均使用无分页统一存储器映射,但二者的存储器映射布局却有着显著区别.
如果应用程序有一些存储器组件或相关性(如数据记录或现场固件更新),则需要重建整体存储器布局.
图3和图4中详细介绍了特定的组件布局.
图图3.
MSP430MCU存存储储器器映映射射(MSP430F548A)www.
ti.
com.
cn软件移植13ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列图图4.
MSP432MCU存存储储器器映映射射(MSP432P401R)软件移植www.
ti.
com.
cn14ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列主要亮点包括:中断矢量表–MSP430MCU起始地址为0xFFFF(含复位矢量),并向下增长.
–MSP432MCU起始地址为0x0000(含复位矢量),并向上增大.
闪存、RAM以及其他存储器布局:–MSP430存储器组件共享64KB的空间(对于16位CPU器件)或1MB空间(对于支持20位运算的CPUX),每个组件的地址有可能因器件而异.
–MSP432MCU使用冗余32位地址空间为不同组件保留单独的存储器位置.
MSP432MCU引入了位段功能,可补偿Cortex-M指令集的读-修改-写性质.
对SRAM或外设空间中各个位的操作,可利用位段功能将读-修改-写操作缩减为一条指令.
DriverLibAPI在对外设寄存器进行操作时使用位段功能.
写入自己的寄存器访问代码时,应尽可能使用以下定义来利用位段.
Example3.
MSP432位位段段定定义义#defineHWREGBIT8(x,b)#defineHWREGBIT16(x,b)#defineHWREGBIT32(x,b)#defineBITBAND_SRAM(x,b)#defineBITBAND_PERI(x,b)4.
3核核心心系系统统软软件件各器件系列的核心系统外设各不相同,可根据特定器件系列的用途提供最合适的功能,包括电源管理(Vcore、无Vcore)、计时方案(DCO或FLL)或非易失性存储器类型(闪存、FRAM).
为此,对于从一个器件移植到另一系列或平台的移植代码,始终需要针对核心系统外设开发新代码.
表表8.
MSP432MCU的的新新增增核核心心系系统统外外设设系系统统模模块块兼兼容容等等级级寄寄存存器器访访问问代代码码DriverLibAPI电源、时钟、存储器低新开发建议使用新的易用型DriverLibAPI可利用DriverLibAPI正确、高效地配置核心系统.
这样可免去为核心模块重建和开发代码所占用的时间,但开发人员仍需要了解器件操作.
深入理解配置核心系统(比如节3.
1.
6中的核心系统)的外设间需求后,开发人员可以快速为电源、时钟和存储器模块设计出使用DriverLibAPI的配置例程,以满足核心配置的需求.
MAP_FlashCtl_setWaitState(FLASH_BANK0,2);MAP_FlashCtl_setWaitState(FLASH_BANK1,2);PCM_setPowerState(PCM_AM_DCDC_VCORE1);MAP_CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_48);www.
ti.
com.
cn软件移植15ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列此外,由于核心配置代码通常在应用程序开头的初始化代码中编写一次,与编写整个程序相比,需要的总软件数量相对较少,因此在需要编写新代码的情况下,如果使用DriverLibAPI和有用的代码示例,移植到新的核心外设系统所需的实际代码开发工作量是可管理的.
其中主要的工作是了解新系统的运行方式并找出可以达到应用目标的最佳核心配置.
更多关于如何利用核心系统新功能、特别是MSP432MCU新增的独特电源系统的信息,请参见《采用SimpleLinkMSP432微控制器设计超低功耗(ULP)应用》.
4.
4外外设设软软件件4.
4.
1MSP共共享享外外设设MSP器件在设计过程中考虑了外设跨平台兼容的问题.
MSP430系列的很多高度集成、超低功耗外设均可在性能较高的MSP432系列中继续使用.
从一个平台移植到另一平台时,这些外设保留其核心设计、功能以及对其进行访问和控制所采用的接口.
从开发人员的角度来看,在各个器件系列和平台之间移植时,外设使用、寄存器和位定义以及头文件支持是完全相同的.
从软件的角度来看,这意味着已为这些外设写入的代码仍可在新平台上运行并实现兼容,但需要注意节4.
2.
3中介绍的每个外设的附加中断使能步骤.
表表9.
跨跨MSP平平台台的的共共享享外外设设共共享享MSP外外设设兼兼容容等等级级寄寄存存器器访访问问代代码码DriverLibAPITimer_A、eUSCI、REF_A、COMP_E、WDT_A、RTC_C、GPIO、AES256高兼容,检查本机数据类型和寄存器宽度(16位)兼容,检查本机数据类型和BASE_ADDRESS使用情况Example4和Example5分别举例介绍了MSP430和MSP432MCU中针对Timer_A的高度兼容外设寄存器访问代码.
Example4.
MSP430Timer_A寄寄存存器器访访问问代代码码P1DIR|=0x01;//P1.
0outputTA0CCTL0=CCIE;//CCR0interruptenabledTA0CCR0=50000;TA0CTL=TASSEL_2|MC_1|TACLR;//SMCLK,upmode,clearTARExample5.
MSP432Timer_A寄寄存存器器访访问问代代码码P1DIR|=0x01;//P1.
0outputTA0CCTL0=CCIE;//CCR0interruptenabledTA0CCR0=50000;TA0CTL=TASSEL_2|MC_1|TACLR;//SMCLK,upmode,clearTARAddthelinetoenablenvicfortimer//EnableinterruptsExample6和Example7分别演示了用于配置MSP430和MSP432MCU上串行通信外设USCI所使用的高度兼容驱动程序库API.
请注意,二者之间唯一的区别是时钟模块API.
除了现有的MSP430基址定义(USCI_B0_BASE和USCI_B0)之外,MSP432驱动程序库还引入了新的基址参数定义.
每一种定义均可用于选择指定的外设实例.
软件移植www.
ti.
com.
cn16ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列Example6.
MSP430USCIDriverLib代代码码//InitializeMasterUSCI_B_I2C_masterInit(USCI_B0_BASE,USCI_B_I2C_CLOCKSOURCE_SMCLK,UCS_getSMCLK(UCS_BASE),USCI_B_I2C_SET_DATA_RATE_400KBPS);//SpecifyslaveaddressUSCI_B_I2C_setSlaveAddress(USCI_B0_BASE,SLAVE_ADDRESS);//SetMasterinreceivemodeUSCI_B_I2C__setMode(USCI_B0_BASE,USCI_B_I2C_RECEIVE_MODE);//EnableI2CModuletostartoperationsUSCI_B_I2C_enable(USCI_B0_BASE);Example7.
MSP432eUSCIDriverLib代代码码//InitializeMasterUSCI_B_I2C_masterInit(USCI_B0_BASE,USCI_B_I2C_CLOCKSOURCE_SMCLK,CS_getSMCLK(),USCI_B_I2C_SET_DATA_RATE_400KBPS);//SpecifyslaveaddressUSCI_B_I2C_setSlaveAddress(USCI_B0_BASE,SLAVE_ADDRESS);//SetMasterinreceivemodeUSCI_B_I2C__setMode(USCI_B0_BASE,USCI_B_I2C_RECEIVE_MODE);//EnableI2CModuletostartoperationsUSCI_B_I2C_enable(USCI_B0_BASE);概括来讲,为MSP430和MSP432移植共享外设代码需要的工作量很小.
但开发人员务必根据平台的中断系统考虑额外的中断代码,并应确保使用正确的数据类型,最好是使用显式类型.
即使是在同系列的器件之间进行移植,也需要额外执行的移植步骤能够确保外设使用的端口引脚更新到新器件上.
4.
4.
2扩扩展展外外设设增强型外设可使用修订字母(如REF、REF_A、REF_B)进行标识.
如果是模拟模块,可使用分辨率进行标识,比如ADC模块:ADC12、ADC12_A、ADC12_B、ADC14.
MSP432P4xx系列引入了14位ADC14模块作为ADC12_B的扩展增强版本,除了其他数字方面的增强之外,该模块还具有14位的分辨率和1Msps的采样速率.
表表10.
扩扩展展外外设设的的兼兼容容等等级级扩扩展展外外设设和和新新修修订订外外设设兼兼容容等等级级寄寄存存器器访访问问代代码码DriverLibAPIADC14中到高部分兼容,查看不同的寄存器宽度(16位到32位)、小位重定位,新标志清零机制.
部分兼容,视为新API,以及现有API的参数.
检查数据类型和BASE_ADDRESS使用情况.
www.
ti.
com.
cn软件移植17ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列这类逐渐改造的外设通常会保留之前进行过修改的共享功能,因此会在头文件中包含相同的寄存器和位定义.
某些情况下,为了实现增强功能,可能会对少数寄存器位进行移位或增加.
因此,可按照针对共享外设的说明采用类似的方法重用一些现有的寄存器访问代码(参见节4.
4.
1).
另一方面,新功能引入了新的寄存器和位定义.
开发人员有两种选择:使用寄存器访问代码或使用新的MSP432DriverLibAPI.
对于这两种方法,除了利用《MSP432P4xxSimpleLink微控制器技术参考手册》中的规范和说明之外,开发人员还可以利用以寄存器访问格式和DriverLib格式编写的各种器件代码示例.
Example8.
MSP432ADC14DriverLibAPI//ADC14DriverLib//APIssimilartoMSP430ADC12_A/BAPIsbutwithnewnamespaceorupdatedparametersexternboolADC14_initModule(uint32_tclockSource,uint32_tclockPredivider,uint32_tclockDivider,uint32_tinternalChannelMask);externvoidADC14_setResolution(uint32_tresolution);externboolADC14_configureConversionMemory(uint32_tmemorySelect,uint32_trefSelect,uint32_tchannelSelect,booldifferntialMode);externboolADC14_enableComparatorWindow(uint32_tmemorySelect,uint32_twindowSelect);概括来讲,扩展外设通常会在功能和软件两方面保留一定程度的兼容性.
TI建议检查现有的代码,以确保功能得到保留.
要完全实现新外设的功能,可能还需要额外添加新的代码.
此类移植和新代码开发工作可借助寄存器访问和DriverLibAPI中提供的器件代码示例完成.
4.
4.
3新新外外设设和和Cortex-M外外设设在MSP432平台上,最先引入到MSP配置文件的最后一类外设包括属于Cortex-M4F内核组成部分的新Cortex-M外设,或Cortex-M外设集合中具有集成和性能优势的外设.
表表11.
Cortex-M外外设设Cortex-M外外设设兼兼容容等等级级寄寄存存器器访访问问代代码码DriverLibAPISysTick,Timer32无新开发,简单新,简单APIDMA无可行,但非常复杂强烈建议使用APIFPU无简单,内置编译器支持简单,内置编译器支持由于这些外设可由ARM提供,因此用CMSIS定义编写的软件(除MSP寄存器访问和DriverLibAPI之外)也可使用.
FPU这一模块的软件需求也比较低,因为最新的ARM编译器内置的支持功能可控制FPU执行代码中的所有浮点计算.
另一方面,如果需要创建新代码,DMA等模块的要求相对较高.
将MSP430平台上现有的DMA代码移植到MSP432上的新DMA模块时,TI强烈建议开发人员考虑使用为模块编写的DriverLibAPI以及各种代码示例,以便快速了解如何正确配置和使用该模块.
预期会进行大规模移植,因为需要通过系统级考量来重建DMA配置和使用.
更多关于DMA模块的信息,请参见《MSP432P4xxSimpleLink微控制器技术参考手册》和代码示例.
工具与生态系统www.
ti.
com.
cn18ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列4.
4.
4传传统统C代代码码和和寄寄存存器器访访问问利用位段实现单个寄存器位操作.
检查应用程序中的8位、16位和32位寄存器访问.
4.
4.
5外外设设驱驱动动程程序序库库MSP430和MSP432DriverLib为两个平台上可用的外设共享一些通用API.
但MSP432DriverLib在函数调用、参数传递以及如何使用多个实例处理外设方面稍微做了一些改动.
4.
4.
6其其他他外外设设操操作作软软件件除了利用寄存器访问代码和MSPDriverLibAPI之外,开发人员还可以利用第三方开发者、社区发起的项目或ARM生态系统提供的其他外设驱动程序软件.
移植该软件的策略仍类似于使用传统寄存器访问代码或TI提供的MSPDriverLibrary的情况.
CMSIS是ARM提供的编码标准.
除CMSIS外,各家芯片厂商还定义并开发出多种软件组件.
除了常规的头文件和支持文件之外,MSP432还提供CMSIS式器件头文件供CMSIS用户使用.
该方法可利用CMSIS标准进行代码开发,但使用CMSIS从MSP430移植到MSP432的工作要求稍高一些.
4.
4.
7应应用用代代码码和和软软件件库库检查数据类型.
检查实时特性.
提取代码,将与核心相关的代码与更高的抽象层隔离.
5工工具具与与生生态态系系统统MSP432器件是SimpleLinkMCU平台的组成部分,该平台包括Wi-Fi、低功耗蓝牙、1GHz以下器件和主机MCU.
它们都共用配有单核SDK和丰富工具集的通用、易用型开发环境.
只需进行一次SimpleLink平台集成,便可将配置文件中的任意器件组合添加到设计中.
SimpleLink平台的最终目标是确保设计要求变更时,完全重复使用代码.
更多详细信息,请访问www.
ti.
com/simplelink.
MSP432MCU由具有Cortex-M功能的调试器提供支持,包括TI的XDS200、XDS100v2/3、XDS110、IARI-jet和SEGGERJ-LINK.
更多关于受支持调试器以及如何在调试MSP432MCU时利用这些工具的信息,请参见《MSP432SimpleLink微控制器硬件工具用户指南》.
MSP432MCU代码开发可在与MSP430MCU相同的集成开发环境(IDE)中进行,包括CodeComposerStudioIDE、IAREmbeddedWorkbenchIDE和gcc.
兼容工具链还提供兼容头文件、支持软件包、代码示例以及软件库,以最大限度地在MSP430MCU和MSP432MCU平台上提供相似的体验.
除了通用的IDE之外,还支持在KeilVisionMDK中使用MSP432MCU.
从MSP430MCU移植到MSP432MCU涉及的工作量可能比较大,但开发人员可在其MSP432MCU代码开发过程中利用ARM软件生态系统,包括CMSIS软件的各个层级.
www.
ti.
com.
cn移植示例和分析19ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporated移植到SimpleLinkMSP432系列6移移植植示示例例和和分分析析以下步骤概括了将MSP430F5529MCU上的现有应用移植到MSP432P401RMCU的过程.
1.
核核心心模模块块配配置置(a)设置电源和VCore(b)根据系统频率设置闪存等待状态(c)设置DCO频率2.
外外设设代代码码::三三类类MSP432代代码码(a)移植Timer_A模块的寄存器访问代码(b)将ADC12模块的DriverLibAPI移植到ADC14模块(c)使用CMSIS移植RTC模块模式3.
与与中中断断相相关关的的配配置置代代码码(a)将使用寄存器访问和DriverLibAPI执行的模块中断使能指令(b)在要执行指令的NVIC上使能模块中断使用DriverLibAPI:针对ADC14使用Interrupt_enableInterrupt使用寄存器访问:针对RTC使用SCS_NVIC_ISERx寄存器(c)使能NVIC主中断(等同于MSP430MCU上的GIE位)使用DriverLibAPI使用MSP432内联函数4.
将将ISR桩桩线线添添加加到到中中断断矢矢量量表表5.
内内核核、、CPU和和系系统统相相关关的的函函数数(a)如何进入LPM0(休眠)模式(b)如何进入LPM3(深度休眠)模式(c)控制通过ISR唤醒的时间和方式(d)控制通过ISR返回休眠模式的时间和方式6.
将将所所有有片片段段联联系系在在一一起起并并进进行行调调试试7参参考考资资料料1.
《采用SimpleLinkMSP432微控制器设计超低功耗(ULP)应用》2.
《MSP432P4xxSimpleLink微控制器技术参考手册》3.
《MSP432SimpleLink微控制器硬件工具用户指南》4.
《MSP432P401R、MSP432P401MSimpleLink混合信号微控制器》修订历史记录www.
ti.
com.
cn20ZHCA684C–March2015–RevisedMarch2017SLAA656—http://www-s.
ti.
com/sc/techlit/SLAA656版权2015–2017,TexasInstrumentsIncorporatedRevisionHistory修修订订历历史史记记录录注:之前版本的页码可能与当前版本有所不同.
ChangesfromMarch16,2016toMarch8,2017Page更改了本文档的标题1添加了本文档的作者1更新了摘要1更改了1节,SimpleLinkMSP432平台移植概述的标题并更新了目录2更改了节3.
1.
6,核心系统相关性及配置中32MHz至48MHz对应的闪存等待状态列.
5删除了原有的表5,不同移植等级的软件组件5新增了第二段和表5,软件组件(位于4.
1节,软件移植概述中)5更改了表6,将软件组件从MSP430Ware移植到SimpleLinkSDK的标题,并更改了右下方表中的单元格内容.
6将节4.
2.
2,MSP430内核和Cortex-M4内核使用和内联函数中的msp430dna.
h改为sp_compatibility.
h7更改了5节,工具与生态系统中的第一段并添加了XDS11018根据需要更新了参考文档的标题19IMPORTANTNOTICE有有关关TI设设计计信信息息和和资资源源的的重重要要通通知知德州仪器(TI)公司提供的技术、应用或其他设计建议、服务或信息,包括但不限于与评估模块有关的参考设计和材料(总称"TI资源"),旨在帮助设计人员开发整合了TI产品的应用;如果您(个人,或如果是代表贵公司,则为贵公司)以任何方式下载、访问或使用了任何特定的TI资源,即表示贵方同意仅为该等目标,按照本通知的条款进行使用.
TI所提供的TI资源,并未扩大或以其他方式修改TI对TI产品的公开适用的质保及质保免责声明;也未导致TI承担任何额外的义务或责任.
TI有权对其TI资源进行纠正、增强、改进和其他修改.
您理解并同意,在设计应用时应自行实施独立的分析、评价和判断,且应全权负责并确保应用的安全性,以及您的应用(包括应用中使用的所有TI产品))应符合所有适用的法律法规及其他相关要求.
你就您的应用声明,您具备制订和实施下列保障措施所需的一切必要专业知识,能够(1)预见故障的危险后果,(2)监视故障及其后果,以及(3)降低可能导致危险的故障几率并采取适当措施.
您同意,在使用或分发包含TI产品的任何应用前,您将彻底测试该等应用和该等应用所用TI产品的功能.
除特定TI资源的公开文档中明确列出的测试外,TI未进行任何其他测试.
您只有在为开发包含该等TI资源所列TI产品的应用时,才被授权使用、复制和修改任何相关单项TI资源.
但并未依据禁止反言原则或其他法理授予您任何TI知识产权的任何其他明示或默示的许可,也未授予您TI或第三方的任何技术或知识产权的许可,该等产权包括但不限于任何专利权、版权、屏蔽作品权或与使用TI产品或服务的任何整合、机器制作、流程相关的其他知识产权.
涉及或参考了第三方产品或服务的信息不构成使用此类产品或服务的许可或与其相关的保证或认可.
使用TI资源可能需要您向第三方获得对该等第三方专利或其他知识产权的许可.
TI资源系"按原样"提供.
TI兹免除对TI资源及其使用作出所有其他明确或默认的保证或陈述,包括但不限于对准确性或完整性、产权保证、无屡发故障保证,以及适销性、适合特定用途和不侵犯任何第三方知识产权的任何默认保证.
TI不负责任何申索,包括但不限于因组合产品所致或与之有关的申索,也不为您辩护或赔偿,即使该等产品组合已列于TI资源或其他地方.
对因TI资源或其使用引起或与之有关的任何实际的、直接的、特殊的、附带的、间接的、惩罚性的、偶发的、从属或惩戒性损害赔偿,不管TI是否获悉可能会产生上述损害赔偿,TI概不负责.
您同意向TI及其代表全额赔偿因您不遵守本通知条款和条件而引起的任何损害、费用、损失和/或责任.
本通知适用于TI资源.
另有其他条款适用于某些类型的材料、TI产品和服务的使用和采购.
这些条款包括但不限于适用于TI的半导体产品(http://www.
ti.
com/sc/docs/stdterms.
htm)、评估模块和样品(http://www.
ti.
com/sc/docs/sampterms.
htm)的标准条款.
邮寄地址:上海市浦东新区世纪大道1568号中建大厦32楼,邮政编码:200122Copyright2017德州仪器半导体技术(上海)有限公司

青云互联:美国洛杉矶CN2弹性云限时八折,15元/月起,可选Windows/可自定义配置

青云互联怎么样?青云互联是一家成立于2020年6月的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,目前提供有美国免费主机、香港主机、香港服务器、美国云服务器,让您的网站高速、稳定运行。美国cn2弹性云主机限时8折起,可选1-20个IP,仅15元/月起,附8折优惠码使用!点击进入:青云互联官方网站地址青云互联优惠码:八折优惠码:ltY8sHMh (续费同价)青云互联活动方案:美国洛杉矶...

BuyVM($5/月)不限流量流媒体优化VPS主机 1GB内存

BuyVM商家属于比较老牌的服务商,早年有提供低价年付便宜VPS主机还记得曾经半夜的时候抢购的。但是由于这个商家风控非常严格,即便是有些是正常的操作也会导致被封账户,所以后来陆续无人去理睬,估计被我们风控的抢购低价VPS主机已经手足无措。这两年商家重新调整,而且风控也比较规范,比如才入手他们新上线的流媒体优化VPS主机也没有不适的提示。目前,BuyVM商家有提供新泽西、迈阿密等四个机房的VPS主机...

ZJI(月付450元),香港华为云线路服务器、E3服务器起

ZJI发布了9月份促销信息,针对香港华为云线路物理服务器华为一型提供立减300元优惠码,优惠后香港华为一型月付仅450元起。ZJI是原来Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月更名为ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务,商家所选数据中心均为国内访问质量高的机房和线路,比如香港阿里云、华为...

外链查询工具为你推荐
邮箱怎么写工作邮箱怎么填人人时光机寻时光机歌词中国论坛大全有谁知道国内人气最高的论坛排行榜?微信如何建群在微信里怎么创建一个群别人可以加入扫描二维码的加入如何建立一个网站怎样能创建一个网站数据库损坏数据库损坏是怎么回事啊?mate8价格手机华为mat8售价多少小米手柄小米手柄和飞智手柄哪个好?怎么上传音乐如何将电脑上的音乐传到MP3上微信怎么看聊天记录怎样查找一个人的微信聊天记录
最便宜的vps 已备案域名出售 sugarhosts 罗马假日广场 duniu mach 美国主机代购 NetSpeeder 国外空间 最好看的qq空间 135邮箱 阿里dns 创速 睿云 服务器托管价格 电信主机托管 腾讯云平台 winserver2008 防盗链 web服务器有哪些 更多