子系统免费网站设计
免费网站设计 时间:2021-04-20 阅读:(
)
ApplicationNoteZHCA676–Dec.
20161F28M35x串口在线升级设计马桂龙C2000产品技术支持摘要对嵌入式系统而言,主控芯片的升级越来越重要,传统的升级方式需要依赖编程器、仿真器等特定工具,并且需要保留JTAG接口,或采用外设引导方式(如SCIboot)时需要配置GPIO引脚状态,对系统的升级带来不便.
本文针对嵌入式系统传统升级方式不便之处,提出一种基于串口的在线升级方法,对C2000的concerto系列F28M35x进行在线升级.
设计了基于上位机软件GUI和F28M35x的bootloader程序,通过M3子系统的串口实现对F28M35x双核的在线升级,同时具有防掉电升级失败功能.
目录1F28M35x在线升级系统简介22设计原理.
23软件设计.
33.
1F021FlashAPIv1.
50介绍33.
2在线升级通信协议.
33.
3GUI设计.
53.
4Bootloader程序设计.
63.
4.
1防升级失败功能.
63.
4.
2M3子系统bootloader程序.
73.
4.
3C28子系统bootloader程序.
94在线升级具体实现.
105总结.
11参考文档11图图一.
F28M35x在线升级原理框图2图二.
GUI与M3子系统通信协议4图三.
子系统与C28子系统IPC通信协议.
Error!
Bookmarknotdefined.
图四.
GUI显示界面6图五.
防升级失败功能软件流程图.
7图六.
M3子系统bootloader软件流程图.
8图七.
C28子系统bootloader软件流程图.
9ZHCA6762F28M35x串口在线升级设计1.
F28M35x串口在线升级简介嵌入式系统的在线升级是现在许多产品必带的一个功能,根据编程接口的不同,有JTAG,UART,CAN,SPI等多种方式,尽管编程接口有所不同,但是其在线升级的原理是类似的,都是通过外部触发条件,使微控制芯片脱离常规应用程序的执行流程,跳到程序空间某个固定位置的执行代码(bootloader),擦除FLASH,通过相应的通信协议接收升级数据,并将升级数据烧写到芯片的FLASH存储区域.
串口在线升级方式是最常见的一种在线升级方式,本文以串口在线升级方式实现C2000一款双核产品F28M35x的在线升级.
F28M35x属于C2000Concerto系列,它包含作为主机功能的M3子系统和作为控制功能的C28子系统.
本文通过串口在线升级方式,实现对F28M35x两个子系统在线升级,通过上位机软件GUI控制F28M35x整个升级过程.
2.
设计原理本文设计的在线升级方案包括以下三个核心模块:上位机软件GUI,实现与F28M35x命令交互和升级代码的传输F28M35x的bootloader程序,包含通信代码和FlashAPI编程代码用户升级的应用程序AppCodeGUI是位于PC端基于LabVIEW平台开发的上位机软件.
用户通过GUI发送升级命令,传输升级代码给F28M35x,并显示升级过程中的各种状态量.
Bootloader程序是存放在某一Flash扇区的用于实现F28M35x升级功能的代码,其中,通信代码实现与上位机GUI的命令交互和升级代码的接收,FlashAPI编程代码完成Flash擦除,升级代码烧写和验证.
由于F28M35x是一颗双核芯片,包含M3和C28子系统,因此它们有各自的bootloader,存放在各自的Flash扇区中.
AppCode是用户编译生成的Hex格式的升级代码,M3子系统根据规定的通信协议将该升级代码分块接收到M3的RAM存储区或共享RAM存储区,在bootloader的FlashAPI编程代码的控制下将升级代码烧写到相应的子系统.
本文设计的在线升级原理框图如图一所示.
M3子系统的bootloader程序放在FlashN扇区,其他扇区用于存放应用代码.
系统上电复位后,M3从Flash引导,开始执行起始代码Codestart,这段代码主要实现M3子系统防升级失败功能,系统通过判断一个升级状态标志位决定程序的跳转.
若没有升级失败情况,则系统会跳转到用户程序入口运行;若出现升级失败情况,则系统会跳转到bootloader程序入口等待升级命令.
M3子系统用户程序中应保留有一段代码用于监测串口命令,当串口接收到升级命令时,M3子系统停止用户程序的运行,跳转到bootloader程序执行升级操作.
M3子系统的bootloader程序除了需要实现本系统的升级功能,还需要具备C28子系统升级时的中转功能,作为上位机软件GUI和C28子系统的媒介,传递命令和升级代码.
C28子系统的bootloader程序放在它的FlashA扇区,其他扇区用于存放应用代码.
C28在上电复位后,M3通过InterProcessorCommunications(IPC)控制C28从Flash引导,与M3子系统类似,ZHCA676F28M35x串口在线升级设计3C28会判断一个防升级失败的标志位来决定从应用程序中运行或是跳到bootloader程序中运行.
C28的应用程序同样会有一段代码用于监视IPC发送过来的命令,如果收到IPC发送过来的升级命令,则跳到bootloader程序中进行应用程序的升级.
C28的在线升级需要以M3子系统作为媒介,当M3子系统收到串口命令为升级C28时,会通过IPC将升级命令转发给C28,同时M3子系统接收升级代码,并把这些升级代码放在双核的共享RAM中,然后通过IPC协助C28完成应用程序的升级.
M3FlashFlashsectorM>>A(APP)FlashsectorN(CKFA)UARTRESETCodestartBOOTROM0x00200030CKFAcodestart0x002000700x00204000AppcodestartMark=0xF10xF0BOOTROMC28FlashFlashsectorN>>B(APP)FlashsectorA(CKFA)CKFAcodestartCodestart0x13FFF00x13E0000x13A000AppcodestartIPCC28boottoflashUpdateUpdateM3boottoflashRESET图一F28M35x在线升级原理框图3.
软件设计3.
1F021FlashAPIv1.
50介绍F021FlashAPIv1.
50是一个软件函数库,里面包含了对F021(65nm)片上Flash存储器的擦除、编程、校验等函数.
F28M35x的Flash是F021(65nm)的片上存储器,bootloader程序中的FlashAPI将采用这个库中的相关函数,其中两个关键的函数为Fapi_issueAsyncCommandWithAddress(),Fapi_issueProgrammingCommand().
Fapi_issueAsyncCommandWithAddress()用来擦除规定地址的Flash扇区,例如擦除A扇区:oReturnCheck=Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,(uint32*)Bzero_SectorA_start);Fapi_issueProgrammingCommand()用来对一特定地址的Flash进行编程,由于F28M35x的Flash带ECC保护功能,因此在进行编程的时候,需要生成一个ECC校验值.
对于F28M35x,这个函数能够实现1~16个字节的编程.
需要注意ECC的生成和Flash的编程都有地址对齐的相关限制.
对于ECC,每个ECC校验码的生成是每64位的数据,对齐64位的地址边界,如M3的0x00~0x07的8个数据会产生一个ECC.
对于Flash数据编程,要注意起始地址加上编程字节数不能超过一个bank的宽度,例如在0x4的起始地址实现14个字节数据的编程在16字节bank宽度的Flash上是不允许的.
例如对M3子系统Flash编程:oReturnCheck=Fapi_issueProgrammingCommand((uint32*)u32Index,au8DataBuffer,0x10,ZHCA6764F28M35x串口在线升级设计0,Fapi_AutoEccGeneration);3.
2在线升级通信协议本文设计的在线升级方案使用上位机GUI软件实现与F28M35x进行通信,完成命令交互与升级代码的传输.
为了实现稳定可靠的通信,制定了一套在线升级通信协议.
上位机软件GUI与M3子系统的通信协议如图二所示.
GUI发送升级指令为0x55AA,M3接收到该指令后跳转到M3bootloader,并回送"ok"应答;GUI发送升级内核命令"M3"或"C28",M3接收到该命令后跳转到相应的子函数,并回送"M3"或"C28"应答;在发送升级代码时,每发送一个数据块,都需要M3通过串口回送该数据块编程状态值"ok"或"no"应答;当升级代码发送完毕时,GUI发送终止符0x55555555给M3,M3接收到终止符后进行软件复位.
ZHCA676F28M35x串口在线升级设计5图二GUI与M3子系统通信协议M3子系统与C28子系统的通信协议如图三所示.
M3接收到GUI升级C28子系统命令后,置位IPCflag1和flag30,升级指令COM为"28",C28接收到该指令后,擦除Flash,清除标志位;M3接收GUI发送的升级代码,完成校验后置位IPCflag1和IPC30,数据指令COM为"0x5",C28接收到该指令后,执行Flash编程,清除标志位;ZHCA6766F28M35x串口在线升级设计M3收到GUI发送的终止符后,将该终止符传送给C28,C28接收到该终止符后,进行软件复位.
图三M3子系统与C28子系统IPC通信协议3.
3GUI设计本文设计的上位机软件GUI是基于NI公司的LabVIEW软件开发的,如图四所示.
该GUI主要包括几个部分:串口配置模块,文件的读取和解析模块,命令按钮以及相关状态指示灯.
其中,文件的读取和解析模块为GUI设计的关键部分,该模块读取用户升级代码生成的hex文件,解析成一个个带固定格式的数据块,数据块格式为:在启动GUI后,将F28M35x的串口连接到电脑,首先配置串口,然后点击ConnectTarget按键,向F28M35x发出升级命令,当M3子系统接收到该升级命令后,会回送应答,此时TargetFlag变绿色.
接着在CoreChoose选择升级的内核,点击ConnectCore,将升级内核命令发送给M3,再收到应答后相应的指示灯会变绿色.
下一步即可通过Filepath浏览对应的hex文件,点击Programming按钮,Updateprocess进度条显示升级的进度,当烧写完成后,相应的指示灯会变绿色.
升级完毕,点击CLOSE按键,关掉GUI软件.
ZHCA676F28M35x串口在线升级设计7图四GUI显示界面3.
4bootloader程序设计3.
4.
1防升级失败功能在系统升级过程中,会存在一些因素,如在编程环节突然掉电,导致系统升级失败.
由于此时系统原有的应用程序已经被擦除掉,此时如果没有一些可靠的措施进行重新升级,则会导致系统不能继续运行,因此本文在bootloader代码中增加了防烧写失败功能的设计.
以M3子系统的为例,M3boottoFlash的入口地址是0x200030,该入口地址处,本文在此处添加了一段防升级失败的判断代码,通过查询判断升级状态值Mark来决定系统是跳进应用程序正常运行,还是跳进bootloader程序进行重新升级.
具体实现流程如图五所示.
此处为了节省Flash空间,将Mark状态值放在bootloader所在扇区N,利用bootloader剩余的空间记录升级状态.
另外,由于F021片上Flash带ECC保护功能,ECC校验值是以64位为单位进行计算的,在这个ECC所属的64位的区域内,如果已写入ECC校验值,则不能再次写入Mark值.
因此此处的Mark升级状态记录必须间隔8个字节记录一个状态值.
根据bootloader最终占用的FlashN扇区的空间,确定从0x203900作为记录Mark标志的起始地址.
如果起始地址内容为0xFF,则表示系统没升级过,否则地址增加8,不断查询,知道出现该地址内容为0xFF,则往前减8的地址内容则为上次升级状态标志值Mark.
如果Mark值为0xF1,表示升级失败,程序跳到bootloader中运行;如果Mark值为0xF0,表示升级成功,程序跳到应用程序正常运行.
防升级失败功能软件流程图如图五所示.
另一方面,在系统升级时,需要在bootloader程序中增加Mark状态值的记录.
在调用FlashAPI擦除应用程序的Flash扇区之前,必须在相应的Mark地址调用FlashAPI写入0xF1,并在系统成功完成升级后,再调用FlashAPI在该地址增加8个单元处再写入0xF0表示升级成功.
C28子系统的放升级失败功能与M3子系统类似,在C28boottoFlash的code_start代码增加一段防升级失败程序,需要注意C28的汇编指令与M3的汇编指令是不同的,同时C28的存储单元以word为单位,Mark记录的地址间隔为4.
ZHCA6768F28M35x串口在线升级设计BoottoFlash*MarkPtr==0xFFJumpAPPcodeentrypointMarkPtr-=8*MarkPtr==0xFF*MarkPtr==0xF1*MarkPtr==0xF0JumpAPPcodeentrypointJumpCKFAcodeentrypointMarkPtr-=8NoYesYesYes图五防升级失败功能软件流程图3.
4.
2M3bootloader程序M3的bootloader程序包含串口通信功能和FlashAPI功能,当升级C28子系统时,M3的bootloader还具有媒介功能,作为GUI和C28子系统的命令和数据中转站.
当M3的应用程序监视到串口收到升级命令时,M3子系统会停止应用程序的执行,跳到M3bootloader的_c_int00入口开始执行,在bootloader的主函数中,会重新初始化M子系统,包括系统时钟,Flash,sharedRAM,UART等模块.
初始化完毕后会回送应答给GUI,然后等待接收升级子系统命令,当GUI发送下来的命令是升级M3子系统时,M3bootloader会跳转到M3_CallFlashAPI()子函数,该函数执行擦除Flash应用程序扇区,并回送应答给GUI,表示M3子系统Flash擦除完毕,可以接收升级代码进行系统更新.
然后进入一个主循环,在这个循环中会根据预先设定的通信协议,数据格式,通ZHCA676F28M35x串口在线升级设计9过串口接收并校验每一个数据块的是数据,然后再将该数据块编程到相应的地址,再回送一个应答给GUI表示这个数据块已经编程完毕,可以发送下一个数据块.
最后GUI会发送一个结束符表示升级数据发送完毕,这时M3子系统会跳出主循环,接着软件复位子系统.
M3bootloader还具备媒介功能,当GUI发送下来的命令是升级C28子系统时,M3bootloader会转到M3_CallC28FlashAPI()子函数,在该函数里,M3子系统通过IPC模块将实现指令信息的交互.
M3子系统通过IPC将升级指令传送给C28,然后等待C28回送应答,并将该应答回送给GUI,接着同样进入一个主循环接收GUI发送下来的数据块,M3子系统接收并校验C28子系统升级代码的每一个数据块,并存放在共享RAM中,然后通过IPC命令让C28子系统读取每一个升级代码的数据块,C28子系统完成每一个数据块的编程后,都会通过IPC回送应答给M3子系统,M3子系统再回送该应答给GUI,最终完成C28子系统的升级工作.
M3bootloader的软件流程图如图六所示.
SysteminitialDisableinterruptClosePWMMemcpy()FlashInitUARTConfigMark=0xf1UpdateCOMUpdatecoreM3orC28YNCallM3FLASHAPICall28updatefunctionYNCallFlashAPIProgramMarkEraseFlashsectorsUARTGetdataChecksumProgramVerifyFinishupdateSoftwareresetYNProgramMark图六M3子系统bootloader软件流程图3.
4.
3C28bootloader程序C28子系统的bootloader程序包含IPC通信功能和FlashAPI功能.
与M3子系统的bootloader相比,C28子系统的bootloader简单许多,关于升级代码的接收和校验已经由M3子系统完成.
当C28子系统的应用程序监视到IPC传送过来的升级命令时,C28子系统会跳转到C28bootloader的_c_int00开始执行升ZHCA67610F28M35x串口在线升级设计级操作.
在C28的bootloader主函数中,会关PWM模块,关C28子系统中断,然后完成相关的初始化功能,接着调用CallFlashAPI()子函数.
在该函数中,与M3子系统的M3_CallFlashAPI()功能类似,会擦除应用程序的Flash扇区,回送IPC应答给M3子系统,然后进入主循环,通过M3子系统传递的IPC指令,将每一个数据块编程到对应的Flash区域,知道接收到结束符.
最后软件复位,完成C28子系统的在线升级.
C28子系统bootloader的软件流程图如图七所示.
CallC28FlashAPIProgramMarkEraseFlashsectorsWaitforIPCcommandGetdataProgramVerifyFinishupdateSoftwareresetYNProgramMarkSysteminitial图七C28子系统bootloader软件流程图4F28M35x在线升级的具体实现4.
1升级代码的hex文件生成本文采用的目标文件格式为ASCII-Hex格式,其格式如图xx所示.
ASCII-Hex目标文件结构很简单,只包含起始地址以及Flash数据,方便上位机软件GUI的解析.
ZHCA676F28M35x串口在线升级设计11当准备系统在线升级时,需要将升级代码编译生成.
out文件,然后再将.
out文件通过hex2000.
exe工具转换成ASCII格式的.
hex文件.
本文介绍一种简单的ASCII-Hex文件的生成方法:新建一个文件夹,将hex2000.
exe、升级代码的.
out文件放在该文件夹中,同时在该文件夹中新建一个txt文件,并修改其后缀名为.
cmd,如config.
cmd.
右键选择编辑该文件,写入hex2000.
exe转换配置信息并保存,例如example.
out-mapexample.
map-oexample.
hex-orderMS-romwidth16-memwidth8(C28子系统应修改参数为16)-a相关配置选项含义可以在参考文档1的11.
2.
1节.
接着再创建另一个txt文件,并修改其后缀名为.
bat,如ToHex.
bat.
右键选择编辑该文件,写入以下内容并保存.
hex2000.
execonfig.
cmd这样文件夹中将有四个文件,包括hex2000,升级代码.
out文件,config.
cmd文件,ToHex.
bat.
通过双击ToHex.
bat文件,即可在该文件夹中生成ASCII-Hex文件以及memorymap文件.
4.
2在线升级方案实现根据系统功能要求和通信协议建立两个bootloader工程,经过编译调试后加载到F28M35x的两个子系统中.
然后根据用户的需求建立两个应用工程,编译调试后也加载到F28M35x的两个子系统中.
应注意应用程序功能的加载不能擦除各自bootloader程序所在的扇区.
为了实现系统的防升级失败功能,以及接收到升级命令时能够正确跳转,需要对M3子系统和C28子系统的CMD文件进行相应修改.
系统上电复位boottoFlash后会跳转到防升级失败功能代码,判断系统是跳转到bootloader升级程序区或是跳转到用户应用程序正常运行,本设计将防升级失败功能代码放在bootloader工程的Flash入口地址处,如M3子系统的ResetISR(),C28子系统的code_start.
M3子系统的bootloader工程代码分配在N扇区,并设定其_c_int00地址为0x00200070;C28子系统的bootloader工程代码分配在A扇区,并设定其_c_int00地址为0x13e000.
当用户程序接收到升级指令时,会跳转到各自bootloader的_c_int00实现升级过程.
用户程序工程与bootloader工程是相互独立的,本文设定M3子系统用户程序的入口地址为0x00204000,C28子系统用户程序的入口地址为0x13A000.
系统上电后,会先执行防升级失败功能代码,如果系统正常,则需要跳转到该入口地址执行用户程序.
如前所述,防升级失败功能代码需要判断升级状态值Mark.
为了节省Flash空间,本文利用bootloader所在扇区未编程区域记录Mark升级状态值.
对bootloader编译后,通过查看memorymap文件,可以获得bootloader所在扇区的使用空间情况,因此确定M3子系统Mark记录起始地址为0x203800,C28子系统Mark记录起始地址为0x13F780.
在加载上述bootloader工程和应用程序工程后,此时F28M35已具备串口在线升级功能.
根据用户需求,通过修改应用程序功能并编译可获得需要升级代码的.
out文件,并通过hex2000工具转换成ZHCA67612F28M35x串口在线升级设计ASCII-hex文件.
打开PC上的GUI软件,将F28M35x的串口与PC串口连接起来,配置GUI上的串口信息,根据3.
3节GUI使用步骤,即可实现F28M35x两个子系统的在线升级功能.
本文在F28M35xcontrolcard上进行测试,测试结果显示可以通过M3子系统的串口实现M3和C28两个内核的独立升级,以及同时升级功能;在升级过程中,强制断电后,再次上电仍可以实现重新升级功能,即防升级失败功能.
5.
总结本文开发出一种针对ConcertoF28M35x双核芯片的串口在线升级方案.
详细介绍了该系统在线升级的设计原理,并给出整个串口在线升级方案的软件设计过程,包括在线升级的通信协议、PC端GUI设计以及F28M35x的M3子系统和C28子系统的bootloader的设计.
最后介绍了该串口在线升级方案的具体实现过程,包括升级代码的hex文件的生成,应用程序和bootloader的地址分配、工程编译和加载、GUI具体操作.
测试结果表明,该方案能够通过M3子系统的串口完成F28M35x双核的同时升级和独立升级功能,同时还具有防升级失败的功能,当系统升级过程中出现掉电时,通过重新上电,能够再次进行系统升级.
参考文档1.
TMS320C28xAssemblyLanguageToolsv6.
1user'sguide(SPRU513E)2.
TMS320C28xOptimizingC/C++Compilerv6.
1(SPRU514E)3.
F021FlashAPIVersion1.
50ReferenceGuide(SPNU501A)4.
TMS320F281xBootROMSerialFlashProgramming(SPRAAQ2)5.
ConcertoF28M35xTechnicalReferenceManual(SPRUH22B)6.
F28M35xConcertoMicrocontrollersDatasheet(SPRS742C)重重要要声声明明德州仪器(TI)及其下属子公司有权根据JESD46最新标准,对所提供的产品和服务进行更正、修改、增强、改进或其它更改,并有权根据JESD48最新标准中止提供任何产品和服务.
客户在下订单前应获取最新的相关信息,并验证这些信息是否完整且是最新的.
所有产品的销售都遵循在订单确认时所提供的TI销售条款与条件.
TI保证其所销售的组件的性能符合产品销售时TI半导体产品销售条件与条款的适用规范.
仅在TI保证的范围内,且TI认为有必要时才会使用测试或其它质量控制技术.
除非适用法律做出了硬性规定,否则没有必要对每种组件的所有参数进行测试.
TI对应用帮助或客户产品设计不承担任何义务.
客户应对其使用TI组件的产品和应用自行负责.
为尽量减小与客户产品和应用相关的风险,客户应提供充分的设计与操作安全措施.
TI不对任何TI专利权、版权、屏蔽作品权或其它与使用了TI组件或服务的组合设备、机器或流程相关的TI知识产权中授予的直接或隐含权限作出任何保证或解释.
TI所发布的与第三方产品或服务有关的信息,不能构成从TI获得使用这些产品或服务的许可、授权、或认可.
使用此类信息可能需要获得第三方的专利权或其它知识产权方面的许可,或是TI的专利权或其它知识产权方面的许可.
对于TI的产品手册或数据表中TI信息的重要部分,仅在没有对内容进行任何篡改且带有相关授权、条件、限制和声明的情况下才允许进行复制.
TI对此类篡改过的文件不承担任何责任或义务.
复制第三方的信息可能需要服从额外的限制条件.
在转售TI组件或服务时,如果对该组件或服务参数的陈述与TI标明的参数相比存在差异或虚假成分,则会失去相关TI组件或服务的所有明示或暗示授权,且这是不正当的、欺诈性商业行为.
TI对任何此类虚假陈述均不承担任何责任或义务.
客户认可并同意,尽管任何应用相关信息或支持仍可能由TI提供,但他们将独力负责满足与其产品及在其应用中使用TI产品相关的所有法律、法规和安全相关要求.
客户声明并同意,他们具备制定与实施安全措施所需的全部专业技术和知识,可预见故障的危险后果、监测故障及其后果、降低有可能造成人身伤害的故障的发生机率并采取适当的补救措施.
客户将全额赔偿因在此类安全关键应用中使用任何TI组件而对TI及其代理造成的任何损失.
在某些场合中,为了推进安全相关应用有可能对TI组件进行特别的促销.
TI的目标是利用此类组件帮助客户设计和创立其特有的可满足适用的功能安全性标准和要求的终端产品解决方案.
尽管如此,此类组件仍然服从这些条款.
TI组件未获得用于FDAClassIII(或类似的生命攸关医疗设备)的授权许可,除非各方授权官员已经达成了专门管控此类使用的特别协议.
只有那些TI特别注明属于军用等级或"增强型塑料"的TI组件才是设计或专门用于军事/航空应用或环境的.
购买者认可并同意,对并非指定面向军事或航空航天用途的TI组件进行军事或航空航天方面的应用,其风险由客户单独承担,并且由客户独力负责满足与此类使用相关的所有法律和法规要求.
TI已明确指定符合ISO/TS16949要求的产品,这些产品主要用于汽车.
在任何情况下,因使用非指定产品而无法达到ISO/TS16949要求,TI不承担任何责任.
产产品品应应用用数字音频www.
ti.
com.
cn/audio通信与电信www.
ti.
com.
cn/telecom放大器和线性器件www.
ti.
com.
cn/amplifiers计算机及周边www.
ti.
com.
cn/computer数据转换器www.
ti.
com.
cn/dataconverters消费电子www.
ti.
com/consumer-appsDLP产品www.
dlp.
com能源www.
ti.
com/energyDSP-数字信号处理器www.
ti.
com.
cn/dsp工业应用www.
ti.
com.
cn/industrial时钟和计时器www.
ti.
com.
cn/clockandtimers医疗电子www.
ti.
com.
cn/medical接口www.
ti.
com.
cn/interface安防应用www.
ti.
com.
cn/security逻辑www.
ti.
com.
cn/logic汽车电子www.
ti.
com.
cn/automotive电源管理www.
ti.
com.
cn/power视频和影像www.
ti.
com.
cn/video微控制器(MCU)www.
ti.
com.
cn/microcontrollersRFID系统www.
ti.
com.
cn/rfidsysOMAP应用处理器www.
ti.
com/omap无线连通性www.
ti.
com.
cn/wirelessconnectivity德州仪器在线技术支持社区www.
deyisupport.
comIMPORTANTNOTICEMailingAddress:TexasInstruments,PostOfficeBox655303,Dallas,Texas75265Copyright2016,TexasInstrumentsIncorporated
ZJI本月新上线了香港葵湾机房站群服务器,提供4个C段238个IPv4,支持使用8折优惠码,优惠后最低每月1400元起。ZJI是原Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月更名为ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务,所选数据中心均为国内普遍访问速度不错的机房。葵湾二型(4C站群)CPU:I...
Hostodo商家算是一个比较小众且运营比较久的服务商,而且还是率先硬盘更换成NVMe阵列的,目前有提供拉斯维加斯和迈阿密两个机房。看到商家这两年的促销套餐方案变化还是比较大的,每个月一般有这么两次的促销方案推送,可见商家也在想着提高一些客户量。毕竟即便再老的服务商,你不走出来让大家知道,迟早会落寞。目前,Hostodo有提供两款大流量的VPS主机促销,机房可选拉斯维加斯和迈阿密两个数据中心,且都...
瓜云互联怎么样?瓜云互联之前商家使用的面板为WHMCS,目前商家已经正式更换到了魔方云的面板,瓜云互联商家主要提供中国香港和美国洛杉矶机房的套餐,香港采用CN2线路直连大陆,洛杉矶为高防vps套餐,三网回程CN2 GIA,提供超高的DDOS防御,瓜云互联商家承诺打死退款,目前商家提供了一个全场9折和充值的促销,有需要的朋友可以看看。点击进入:瓜云互联官方网站瓜云互联促销优惠:9折优惠码:联系在线客...
免费网站设计为你推荐
快捷键wordpressflashfxpflashfxp怎么用?新iphone也将禁售苹果手机现在在中国是不是不能卖了中国企业在线用什么软件查找中国所有企业名称重庆400年老树穿楼生长重庆的树为什么都长胡须?重庆杨家坪猪肉摊主杀人昨天重庆九龙坡出了严重交通事故吗Joinsql科创板首批名单2019年房产税试点城市名单瞄准的拼音穿越火线枪战王者辅助瞄准什么意思狙击辅助tumblr上不去为什么,爱看软件打不开?页面一直在加载
泛域名解析 加勒比群岛 blackfriday 外国服务器 香港主机 服务器日志分析 2017年万圣节 debian7 vip购优汇 ftp教程 帽子云 泉州移动 qq云端 电信托管 免费asp空间申请 apnic 789电视剧网 香港博客 shuangcheng 塔式服务器 更多