tag 标签: ccs

相关博文
  • 热度 11
    2016-3-28 11:14
    2911 次阅读|
    0 个评论
      开发环境安装问题 我们当前推荐的用于开发Hercules系列MCU的平台是 CCS V5.3.0 。 用户可以从下面的地址找到: http://www.ti.com/tool/ccstudio   开发工具安装失败问题很多时候是由于以下原因造成的: 安装文件下载不完整 办法: 重新下载,网站支持续传,所以大家只要有耐心即可。 下载了*.zip格式的文件,并在打开后直接运行了其中的*.exe安装文件 直接打开zip文件运行里面的程序时,windows会把zip的内容先解压缩到临时文件夹,一般这个文件夹在用户的系统目录下。 路径过长、系统盘有效空间不够、或包含中文路径等等原因,会使得这样的操作容易导致失败。 办法: 下载了zip文件后,先解压缩到一个路径较短的纯英文路径下(最好到磁盘根目录如D:\tools之类的文件中),再从解压后的文件夹中运行exe文件安装。 安装目标路径 安装软件的目标路径一定不要有中文,最好没有空格和特殊字符。 放在windows桌面的错误经常发生,中文的windows系统的桌面路径一般是 C:\Users\用户名\桌面 也就是说,桌面是包含中文路径的…最好不要把跟项目相关的任何文件放在这里。。。 Pdf文档什么的当然没问题啦。 .net framework 的问题 新版的开发工具一般都使用了C#或Java等高级编程工具,这些语言会调用.net framework的库函数,如果用户没有安装这些库函数,那么开发工具会经常报错。 尤其是Windows XP或更早的操作系统,里面自带的库函数支持非常少,需要用户自行下载安装。 建议大家安装.net frame work 4.0或更高的版本。 下载地址:    http://www.microsoft.com/en-us/download/details.aspx?id=17851       CCS license 问题 安装好了CCS以后,用户会自动获得一个评估版的授权,您可以使用大部分CCS的功能,但是工程的代码量限制在32KB。而且只能使用XDS100调试器。这个license没有时间限制。 更改License类型,也可以通过网络获取30天的完整功能license。30天后过期。 如果需要更长时间或更多功能的License,请与TI的销售人员联系。 TI的销售渠道联系方式可以从下面的链接中找到:    http://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=24957   常用资源链接 TI的处理器维基网站中有Hercules专版,地址:   http://processors.wiki.ti.com/index.php/Category:Hercules 这里有非常多用户关心的资源,建议大家一定要去看看。 Hercules板块中分别有TMS470板块,TMS570板块和RM4x板块。 这里以TMS570板块为例提供几个常用资源的维基链接:   TMS570 HDK开发板原理图: http://processors.wiki.ti.com/images/5/5b/TMS570LS31_HDK_Schematics.pdf (这里也有源文件版本的原理图) TMS570 337pin BGA封装的器件封装文件(ORCAD版本): http://processors.wiki.ti.com/images/e/e4/TMS570LS31x_ZWT_OrcadSymbol.zip TMS570 Flash Bootloader例程代码: http://processors.wiki.ti.com/images/f/f3/TMS570LS31_Bootloader_v1.0.0.zip TMS570 软件常用例子(包含各种例子,如timer, ADC, Flexray, CAN等): http://processors.wiki.ti.com/index.php/Category:HerculesSWExamples (上面的链接中还包含 以太网 驱动例子) (其他在TI官网上很容易找到的工具,如HALCoGen, HET IDE等等,就不重复累述了。)   Cortex-R4F 中断嵌套问题 Cortex-R4F CPU中有IRQ和FIQ两种中断,在Hercules系列MCU里,FIQ中断被设置为NMI,即不可屏蔽中断。 FIQ在硬件上拥有更高的优先级,并且能够打断正在执行中的IRQ服务程序。 FIQ与IRQ的嵌套一般不需要用户做额外的设置。 我们这里主要谈的是IRQ之间的嵌套。 Cortex-R4F CPU中针对IRQ的寄存器组只有一组,也就是说,从硬件角度,CPU无法完成IRQ的嵌套 (没有多余的寄存器组来存储前面一个IRQ的寄存器信息(所谓的“现场”)。) 但这不意味着Cortex-R4F CPU不能支持IRQ的嵌套。 用户只需要把需要保护的“现场”通过软件保存在RAM中,恢复时再从RAM恢复到寄存器组即可。 这个过程可以通过下面的代码来实现: #pragma INTERRUPT(rtiCompare0Interrupt, IRQ)   void rtiCompare0Interrupt( void ) { /* USER CODE BEGIN (39) */ /* USER CODE END */       rtiREG1-INTFLAG = 1U;         asm ("   STMFD SP!, {R0-R12, LR}");                /*Save R0- R12, LR_irq*/       asm ("   mrs lr, spsr");                           /* Copy SPSR_irq to LR */     asm ("   STMFD SP!, {LR}");                        /* Save SPSR_irq */     asm ("   MSR CPSR_c, #0x1F");                      /* Enable IRQ (Sys Mode) */     asm ("   STMFD SP!, {LR}");                        /* Save LR */     rtiDisableNotification(rtiNOTIFICATION_COMPARE0); /*Disable rtiCompare1 Interrupt itself */         rtiNotification(rtiNOTIFICATION_COMPARE0);         //asm(" LDMFD SP!, {R0-R12}");                    /*Restore R0-R12*/       asm (" LDMFD SP!, {LR}");                        /* Restore LR */       asm (" MSR CPSR_c, #0x92");                      /* Disable IRQ (IRQ Mode) */       asm (" LDMFD SP!, {LR}");                        /* Restore SPSR_irq to LR */       asm (" MSR SPSR_cxsf, LR");                      /* Copy LR to SPSR_irq */       asm (" LDMFD SP!, {R0-R12, LR}");                /* Restore LR */             rtiEnableNotification(rtiNOTIFICATION_COMPARE0);  /*Enable rtiCompare1 Interrupt  */   /* USER CODE BEGIN (40) */ /* USER CODE END */ } 这个例子是把rtiCompare0Interrupt()这个中断服务函数(ISR)设置为“可以被嵌套”。 当这个ISR执行到rtiNotification(rtiNOTIFICATION_COMPARE0);这个调用时,其他的IRQ就可以打断当前的操作,得到CPU的响应了。 这里加入了防止rtiCompare0Interrupt()自己嵌套自己的保护。 但是并没有加入优先级的判断,也就是说出了rtiCompare0Interrupt()中断之外的所有IRQ,都有可能打断这个ISR。 用户可以通过MASK寄存器,来实现中断嵌套优先级的操作。   最后,在设计时序要求比较严格的应用时,我们不建议使用IRQ的中断嵌套,建议大家: 尽量减少使用IRQ。 IRQ的执行时间和执行周期要做到心中有数,坚决杜绝“overlapping”。 实在需要IRQ嵌套的场合,要多做测试。     JTAG 链接问题 调试器不能连接目标板的问题是比较容易出现的。 这里给出几种常见的解决办法: 调低TCK的时钟频率 TCK是JTAG通信时钟,由于用户的开发环境不同,可能受到不同的干扰,现象是一会儿能连接调试器,一会儿连接不上。 这种情况下,可以尝试调低TCK。 方法是在CCS的工程窗口中打开ccxml文件(如TMS570LS3137.ccxml),选择 选项卡,选中XDS100v2调试器,在下拉菜单中选择 , 然后设置一个较低频率。   擦除芯片中的程序 如果是之前能连接调试器,但是某次下载后,就再也连不上了,硬件没有任何改变。这样的情况下,可以尝试将芯片整体擦除。 建议使用最新的Uniflash工具进行擦除。 Uniflash下载地址:    http://www.ti.com/tool/uniflash (建议原来使用nowFlash的用户都切换到Uniflash,这个工具配备最新的DLL,下载连接更快更稳定。)     检查芯片工作状态 如果是用户自己设计的电路板,调试器没有连接成功过的情况,建议检查一下MCU的工作状态是否正常。 最简单的办法是通过芯片的nRST引脚。 这个引脚默认状态下输出芯片的复位状态。 如果调试器始终不能连接成功,那么拔掉JTAG接口,把板子重新上电,然后用示波器观察nRST的电平状态。 如果这个信号为低,那么说明MCU处于复位状态,也就是说MCU不能正常工作,请检查MCU周边的电路如电源,复位信号,接地状态等等。 检查JTAG连接是否正确 如果是用户自己设计的电路板,可以使用Debug JTAG GUI软件或者CCS自带的test connection (也在ccxml的advance选项卡中)按钮测试JTAG连接的正确性。 Debug JTAG GUI的下载地址: http://processors.wiki.ti.com/index.php/DBGJTAG_Graphical_User_Interface   深入了解JTAG连接问题 一般的JTAG连接问题都可以通过上述方法解决,如果用户仍然不能解决连接问题或者想深入了解JTAG连接,可以访问下面的地址: http://processors.wiki.ti.com/index.php/Debugging_JTAG_Connectivity_Problems   Flash API 常见问题 用户开发自己的bootloader时,或使用Flash模拟EEPROM操作时,都需要使用Flash API函数库。根据芯片自身的Flash类型,用户需要使用不同的Flash API函数库。 Hercules系列MCU主要使用到两种Flash类型(工艺):F035 (130nm) 和 F021 (65nm) F035 Flash API下载地址: http://www.ti.com/tool/f035flashapi F021 Flash API 下载地址:   http://www.ti.com/tool/f021flashapi   Flash API 同Bank操作问题 无论哪种Flash类型的芯片,在同一个BANK中都不允许同时进行擦除(或写入)和读取的操作。 这意味着,如果用户的Flash API库函数放在BANK0 的任何一个sector中,通过Flash API去擦除(或写入)BANK0的任意一个其他的sector,都会引起程序失去响应。 因为一旦擦除/写入操作开始,整个BANK的电荷泵(charge pump)就开始工作了,以擦除为例,这个操作会进行几个到几十个毫秒的时间,这段时间中,整个BANK的程序都没有办法被CPU读取,那么这么长时间里,CPU的行为就不可确定了,通常现象是系统没有响应。 所以最好的办法是将Flash API和过程代码都放在RAM中运行。 如果用户的Bootloader本身不需要更新,那么把Flash API放在一个不常用的BANK,如BANK2,也是一个变通的方法。 F035 的Delay参数设置 F035的Flash API函数库需要在调用时给定一个合适的delay参数。 设置Delay参数的方法请参考下面文档中的第5节Flash Delay Parameter Values。 http://www.ti.com/lit/pdf/spnu493 F021 Flash API 函数库使用了-gcc选项 将F021 Flash API函数库包含至工程中后,需要将-gcc选项打开才能正常编译。 打开-gcc选项的位置在: CCS的工程上右键, à à à àEnable support for GCC extensions (--gcc)   在CCS编译时生成*.hex文件 如果用户需要在编译时生成*.hex文件,那么可以参考下面的方法:   CCS的工程上右键, -- -- -- "Apply predefined Steps" 需要设置 "-romwidth 32"参数。   使用hex470.exe通过命令行生成hex文件。 这个工具在CCS安装好后就出现在CCS的安装路径下了。 具体使用方法请参考: http://www.ti.com/lit/ug/spnu118k/spnu118k.pdf 手册的11节,Hex Conversion Utility Description。 CPU 相关信息寄存器 Hercules系列MCU使用了ARM的Cortex系列CPU。 在调试中,灵活使用CPU的状态寄存器可以大大方便我们查找问题的过程。 但是CPU状态寄存器的描述在TI的技术手册中(TRM)并没有说明。 用户可以到ARM的文档库中找到。 最常用的是: ARMv7架构技术手册(Cortex CPU的指令集描述): http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html (上面的链接需要访问者注册ARM的账户才能访问,有需要的同学也可以站内联系。)   Cortex-M3的技术手册(寄存器描述): http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337i/index.html   Cortex-R4的技术手册(寄存器描述): http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0363g/index.html   有了上述的文档,我们就可以通过CPU的CP15寄存器组的值来确定CPU的工作状态了。 比如,经常有的用户发现程序跑飞了,暂停时CPU在dataEntry的死循环中,说明CPU出现了非法的操作数据,但是如何去定位这个数据和错误呢? 有了上述手册,我们就可以通过查看CP15寄存器组中的Data Fault Status Register的值来判断了。比如错误状态是b01101,查表得”permission fault”说明访问了不允许访问的区域。 然后,再看Data Fault Address寄存器的地址,就知道原来CPU是访问了这个地址,而这个地址可能在Memory map中是”reserved”的区域。这可能是程序中某个指针赋值错误,或者是堆栈溢出造成的。这样查找问题就变得更方便更准确了。   在CCS V5 中创建一个终端监视器 由于Windows7操作系统中没有附带类似超级终端一样的工具,用户如果想使用终端功能来进行串口调试就必须要通过第三方的软件来完成了。 有时这样会让人感觉比较麻烦。 这里介绍一种在CCS的调试窗口中建立终端监视器的方法。 详细配置可以参考这个链接: http://processors.wiki.ti.com/index.php/How_to_install_the_terminal_plugin_in_CCSv5 在CCS v5的 下拉菜单中选择 。 点击 Available Software Sites   链接,并找到  http://download.eclipse.org/tm/updates/3.3 对应的网站项,在这一项前面打勾。然后点击 返回。   在当前窗口最上方的 下拉菜单中找到刚才添加的网站项,如图所示。选择该网站后,在下面的装口中找到  插件并勾选。按照提示安装这个插件后,重新启动CCS v5。     (CCS v5需要从选中的网站下载所需的插件文件,可能根据网络情况不同,所花时间不同,请耐心等待。) CCS v5重启完成后,还是进入到 下拉菜单中的 点击右上角的 按钮 在弹出的对话框中输入Name: RXTX repository; Location: http://rxtx.qbang.org/eclipse/ 然后选择最新版本的RXTX End-User Runtime (需要展开插件版本树才能看到),安装插件,并在此重启CCS v5 这时,Terminal就安装完成了。 安装好Terminal后,在CCS v5的 下拉菜单中,点击 ,在弹出的菜单中找到Terminal。   选择Terminal并单击 ,CCS的窗口中就会加入一个终端监视器了,使用前,对其进行基本的设置,串口数据就可以在这个窗口中被显示出来,也可以用这个终端向下位机发送数据和命令。      
  • 热度 19
    2014-6-15 19:18
    11295 次阅读|
    0 个评论
     In the project properties you should turn on the option to index all files, and then in theory indexing should work. 具体操作为:    选择Window Preferences C/C++ Indexer, 之后按照下图操作。       如果还是不能正常的查看,再NS2工程上右键,右键菜单里面由一个clean Project,执行一下,在eclipse里面重新make一下NS2。之后,若还是不行,可以再选择右键菜单里的Index---rebuilt。    
  • 热度 18
    2010-10-20 14:31
    2372 次阅读|
    1 个评论
    1、DSP应用程序代码结构,有三种: ○ 纯汇编; ○ 纯C语言; ○ 汇编+C语言。 这三种结构还可插入带CSL或不带CSL的DSP/BIOS API。为了加快应用程序的开发,现在的DSP程序一般都采用:汇编+C语言+带CSL的API。其中,汇编代码用于特殊要求,如Flash编程及对速度要求很高的关键部分;C语言则是整个应用程序主框架,但主要是运算处理部分;而与硬件打交道的工作全部由CSL API来完成。 DSP应用程序工程模式有两种:调式仿真(debug)模式与应用发布(release)模式。 ○ 仿真模式用于开发调式阶段,使用仿真器通过JTAG口从PC机中下载到DSP片内RAM中运行,可设置断点进行调式,由于是存放在RAM中,因此断电后程序会丢失; ○ 应用程序完全调式通过后,必须写入外部Flash中,断电后不再丢失。加电后,由引导程序装入DSP片内RAM运行,这就是产品生产阶段的发布模式。 很明显,发布模式的DSP应用程序工程(发布工程)比仿真调式阶段的应用程序工程(仿真工程)要复杂些,发布工程除应用程序本身外,还要增加如下处理: ○ 自带的二次引导程序(当应用程序大于1KB时); ○ Flash在线编程代码; ○ COFF格式文件到Flash用的二进制格式文件(BIN)转换。 此外,“发布工程”的DSP/BIOS配置文件及连接地址分配文件也要比“仿真工程”复杂,好在它们可以用CCS自带的配置工具通过对话方式来设置生成。 2、DSP应用程序加电装载(Bootload)过程 DSP加电复位后,应用程序从外部Flash装入DSP片内RAM中运行,这个过程称为“加电装载”或“引导装载”(Bootload),其流程如下:                         DSP加电复位                              ↓         DSP内置的引导程序将外部Flash前1KB(Flash-boot区)         的二次引导程序装入DSP片内RAM运行                              ↓                     二次引导程序开始运行                              ↓         二次引导程序将外部Flash地址在1KB以上的程序/数据区         (Flash-rest区)装入DSP片内RAM,其中程序部分放入         片内程序存储器,从0地址开始存放;数据部分放入片内         数据存储器的指定区域。装完后跳转到应用程序入口。                              ↓                       应用程序开始运行 要注意一点的是,DSP应用程序可配置为好几种装载(Boot)方式,如外部存储器(Flash、EEPROM等)、PCI、HPI、XBUS等,其中以外部Flash最常用。 3、DSP应用程序在线编程 DSP应用程序发布后,一般是存放在目标板的Flash中,要将应用程序写入Flash,最容易想到的方法是使用通用编程器,但这要求Flash是可拆卸的,而且最好是DIP 封装的,如果是表贴且焊死在目标板上的,就只有使用在线编程方法了。与一般的MCU在线编程(ISP)不同,TI公司并没有提供工具来完成这一工作,只有用户自己编程来实现。通常有两种方法可以使用: ○ 根据所使用的Flash型号,设计一个专用DSP程序,该程序用仿真器下载至DSP片内RAM运行,然后由它将应用程序目标代码文件写入Flash中。 ○ 如果目标板上有USB接口,可以在应用程序中插入一段专门写Flash的代码,在应用程序运行中,由PC机通过USB口将待更新的应用程序传至DSP片内未用RAM区,再由应用程序中的专用程序将其写入Flash覆盖原来的老程序,加电复位后装载运行的就是新程序了。
  • 热度 19
    2010-10-11 11:15
    2888 次阅读|
    0 个评论
    1.用CCS打开/创建工程时,工程存放的路径名中不能有中文!(不像VS6、ISE等可以使用任意路径名) 2.国产并口DSP仿真器有些是采用CPLD仿真代替SMC34C60(该芯片已停产),仿真功能不全,只能在并口的EEP模式下使用。原装的仿真器采用SMC34C60,可在SPP、EPP、EPP+ECP三种模式下使用。此外,国产并口DSP仿真器(如开发板之家生产的)除了并口要选择EPP模式外,还要将并口中断IRQ7设置成“保留”(Reserve),不能设置成PnP(Default)。 3.如果DSP的用户程序存放在外部Flash中,必须关电重新加电(即“冷启动”)才能加载(Boot)到DSP中运行,用人工复位(“热启动”)方法不起作用。 4.DSP/BIOS提供的标准模块中,每个模块的属性可在配置时修改参数(静态设定),也可在程序中(一般在main中)使用参数修改指令动态设置,例如周期模块PRD(假设用户新建的对象名为PRD0)的Period,参数,修改指令:PRD0.period=xxx;但有些参数是不能修改的,能修改的参数当用户在编辑状态下输入PRD0后,CCS会自动提示的。 5.CCS源程序编辑器缺省状态是“Insert”,即可插入/修改源代码,如果不小心按了“Insert”键,编辑器就进入“修改”状态,“Delete”、“Back Space”等键就不起作用了,必须再按一次“Insert”才能恢复。 6.使用DSP/BIOS配置工具定义变量和数组等,在源程序中必须使用“far”关键字来声明。far说明的变量存放在.far段,其它变量(全局静/态)则存放在.bss段,.bss段中变量存取速度比.far中的快些。 7.在DSP/BIOS配置工具中定义的函数名前必须加下划线“_”,因为配置工具生成的是汇编代码,而汇编代码中调用C函数就要求函数名家下划线。
  • 热度 19
    2009-10-13 17:39
    3506 次阅读|
    0 个评论
    1、   定义工程名称 2、   加入 .C     .asm   .cmd   文件 3、   在 include 里面加入工程下的 include 里面的 .h 的头文件 4、   在 include 里面加入 ccs3.3 下 c6000 里面 的 csl 库里面全部的 .h 文件 5、   在工程里面右键设置 build optiation 对芯片进行选择,对大小模式进行选择。
相关资源