C6678多核DSP开发——hello world

C6678多核DSP开发——hello world

本篇学习笔记主要记录在C6678实验板上实现打印“hello world”信息功能,主要目的是熟悉CCS开发环境和硬件调试过程。

板子工作需要12V稳定电源,我去拆了一个废弃的电脑主机的电源,还真的挺好使。要将P120P的插座的绿线和任意一条黑线短接,四线插座就会输出+12V电压,黄线为正,黑线为负。最好是在短接的电路上串联一个开关,以方便控制,不然就要一直插拔板卡接头或者电源开关,不很方便。

接下来就是JTAG仿真器,买的是XDS100V2USB,不太稳定,每次板卡掉电之后,仿真器也必须掉电、上电才可以重新连接,不然就cannot connect了。可能是便宜的原因,TI公司有一个XDS560,据说那个要几千块钱,太贵了,能用就将就着用吧。JTAG口接板卡,注意别插反了,有一个针脚是堵着的,会把针插断。另一端是USB接口,接电脑,Win7自己安装了驱动,但是我在设备管理里愣是没找到这个设备,难道是CCS里的驱动?不管了,无关紧要。

硬件连接到此为止,注意使用的时候的上电顺序:所有的接插件都先插好(最好不要上电之后插),然后仿真器先上电(即usb接电脑),板卡后上电,指示灯亮,工作正常,经常摸摸DSP的温度,太热了断电凉快一下。下面是软件部分。

2、建立hello world工程by CCS

a)打开CCS,file->new->project->CCS project


b)在建立CCS project 界面下:

project name:为自己的工程起个名字:hello_world_by_CCS;

output type:默认就好;

device:对于我的板卡(DSP为C6678),family自然是C6000,Variant是C6678(也可以是generic C66xx device),connection建议不选,因为一会儿再工程里会新建一个连接,那个时候再选择比较好。

advanced settings里基本可以默认,但是我觉得有必要将linker command file选上,因为建立好工程之后再去添加特别难找,这里会有默认的路径,当然也还是要因工程而异,有的工程可能要添加适合自己板卡的cmd文件,那当然可以之后再添加。这里,hello world用默认的cmd文件就可以,所以直接添加了。runtime support library :automatic就好,自动识别需要的lib库文件。

project template and example里选择自己要建立的工程,这里选择basicexample ->hello world。点击finish,至此,工程建立完毕。


c)建立连接

file->new->target configuration file,起个跟工程一样的名字,路径就放在工程目录下,便于管理。双击这个文件,会在右面出现设置界面:


connection 选择自己的仿真器类型,xds100v2usb emulator ,device选择C6678,点击save,连接创建成功。可以连上硬件,点击下test connection 看看是否连接成功。最后显示succeed 就是成功了。


d)烧写程序

首先build project :project -> build all

然后debug,直接点绿色的小虫子也可以,八个核全选上。点击OK,程序开始烧写。

e)执行

点击F8,直接运行完,显示八个核的结果:

 

也可以在debug窗口中选择对应的核,按F5一步一步执行:


可以在console 窗口中看到输出结果:


3、几个关键问题:

a)调试技巧:

breakpoint可以设置断点,f8之后运行到断点处;

F5单步执行,F8全部执行,这跟VS不太一样。


在debug窗口选中想要执行的内核,然后右键group cores 就可以新建一个组,组里包括若干个核,对这个组进行F8 就可以几个核一起运行。

在view菜单下可以选择观察寄存器,变量追踪什么的,方便调试。

b)关于工程文件说明:

include 默认链接到了本工程需要的.h文件库,基本不用修改,特殊情况除外。

hello.c是核心代码编写文件,C语言。

CMD文件时硬件设备的地址配置文件,挺重要的,一开始就是因为这个文件没弄懂,走了好大弯路。下面介绍下这个文件。

ccxml是目标配置文件,连接硬件板卡用的。

有的时候可能会遇到gel文件,目前还没搞懂这个gel文件是什么东西,怎么用。后续再研究。

c)CMD文件编写

cmd:链接器配置文件,存放链接器的配置信息,cmd文件使开发者可以通过自己定义的存储器模块来配置系统存储器,说白点也就是cmd是用来分配ROM和RAM空间用的,告诉链接程序怎样计算地址和分配空间。

MEMORY命令:描述系统实际的硬件资源

SECTION命令:描述“段”如何定位

其中比较关键的就是MEMORY和SECTIONS两个伪指令的使用,MEMORY用来建立目标存储器的模型,SECTIONS指令就可以根据这个模型来安排各个段的位置,MEMORY指令可以定义目标系统的各种类型的存储器及容量。

把hello world里的CMD文件拷上来分析一下:

-heap是堆,我这里分出3M是因为我把所有段都分配在了Share RAM(SHRAM)上,L2一共有4M。

-stack 是栈,一般都是这么大。

memory是L1、L2、SHRAM、EMIF和DDR3的地址范围和大小,一般的应用都会用DDR3,由于我的板卡还没开发DDR3,就只好都用SHRAM了。

section里的字段:

.cinit 存放程序中的变量初值和常量

.const 存放程序中的字符常量、浮点常量和用const声明的常量

.switch 存放程序中switch语句的跳转地址表

.text 存放程序代码

.bss 为程序中的全局和静态变量保留存储空间

.far 为程序中用far声明的全局和静态变量保留空间

.stack 为程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递存储局部变量和保存中间结果

.sysmem 用于程序中的malloc 、calloc 、和realoc 函数动态分配存储空间

/*************************************************************************/

-c

-heap  0x300000 /*3MB*/

-stack0x10000

MEMORY

{

    LOCAL_L2_SRAM:  o = 0x00800000 l = 0x00080000   /* 512kB LOCAL L2/SRAM */

    LOCAL_L1P_SRAM: o = 0x00E00000 l =0x00008000   /* 32kB LOCAL L1P/SRAM */

    LOCAL_L1D_SRAM: o = 0x00F00000 l =0x00008000   /* 32kB LOCAL L1D/SRAM */

    SHRAM:         o = 0x0C000000 l = 0x00400000   /* 4MB Multicore shared Memmory */

   

    EMIF16_CS2:     o = 0x70000000 l = 0x04000000   /* 64MB EMIF16 CS2 Data Memory */

    EMIF16_CS3:     o = 0x74000000 l = 0x04000000   /* 64MB EMIF16 CS3 Data Memory */

    EMIF16_CS4:     o = 0x78000000 l = 0x04000000   /* 64MB EMIF16 CS4 Data Memory */

    EMIF16_CS5:     o = 0x7C000000 l = 0x04000000   /* 64MB EMIF16 CS5 Data Memory */

 

    DDR3:          o = 0x80000000 l = 0x80000000   /* 2GB CE0 and CE1 external DDR3 SDRAM */

}

 

SECTIONS

{

    .text         >  SHRAM

    .stack        >  SHRAM

    .bss          >  SHRAM

    .cio          >  SHRAM

    .const        >  SHRAM

    .data         >  SHRAM

    .switch        > SHRAM

    .sysmem       >  SHRAM

    .far          >  SHRAM

    .args          > SHRAM

    .ppinfo        > SHRAM

    .ppdata        > SHRAM

 

    /* COFF sections */

    .pinit        >  SHRAM

    .cinit        >  SHRAM

 

    /* EABI sections */

    .binit         > SHRAM

    .init_array    > SHRAM

    .neardata      > SHRAM

    .fardata       > SHRAM

    .rodata       >  SHRAM

    .c6xabi.exidx  > SHRAM

    .c6xabi.extab  > SHRAM

}

 

  • 17
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
冃录 11录 ...............................................................3 C6678多核运行Dem o详解.......................................... 7 1 ・ intc_b「oadcast_ 1 ...................................................................................................... 7 I」功能描述........................................................7 1.2变最定义及使用空间分配.........................................7 1.3实现流程........................................................7 1.4注意事项........................................................9 2. D D R 3......................................................................................................................10 2 .1 功能描述....................................................... 10 2.2变量定义及使用空间分配........................................ 10 2.3实现流程....................................................... 10 2.4注意事项....................................................... 11 3. ipc一 navigator.......................................................................................................... 12 3」功能描述....................................................... 12 3.2变最定义及使用空间分配........................................ 12 V 3 .3 实现流程....................................................... 12 3.4注意事项....................................................... 14 4. emif_nandflash....................................................................................................... 14 4 J 功能描述....................................................... 14 4.2变量定义及使用空间分配........................................ 14 4 .3 实现流程....................................................... 14 4.4注意事项....................................................... 15 5. emif_norflash......................................................................................................... 16 5」功能描述....................................................... 16 5.2变最定义及使用空间分配........................................ 16 5.3实现流程....................................................... 16 5.4注意事项....................................................... 17 6. hyperlink................................................................................................................ 17 6」功能描述....................................................17 6.2变量定义及使用空间分配......................................17 6 .3 实现流程....................................................17 6.4注意事项.................................................... 18 7. i2c_eeprom............................................................................................................. 19 7」功能描述.....................................................19 7.2变最定义及使用空间分配......................................19 7.3实现流程.................................................... 19 7.4注意事项....................................................20 8. i2c_srioswitch........................................................................................................20 & 1功能描述....................................................20 8.2变量定义及使用空间分配......................................20 8.3实现流税.........:............................. =21 8.4注意事项....................................................21 9. sem 2....................................................................................................................... 21 9」功能描述.................................................... 21 9.2变虽定义及使用空间分配......................................22 9.3实现流程....................................................22 9.4注意事项....................................................23 1(). srio...........................................................................................................................24 10」功能描述...................................................24 10.2变暈定义及使用空间分配.....................................24 10.3实现流程...................................................24 10.4注意事项...................................................27 11. tim er....................................................................................................................... 28 11」功能描述...................................................28 11.2变最定义及使用空间分配.....................................28 11.3实现流程...................................................2911.4注意爭项......................................................30 12. SPI_FPGA.............................................................................................................. 30 12」功能描述......................................................30 12.2变量定义及使用空间分配.......................................30 12.3实现流程......................................................30 12.4注意爭项......................................................31 13. SPI_nortlash...........................................................................................................31 13」功能描述......................................................31 13.2变量定义及使用空间分配.......................................31 13.3实现流程......................................................31 13.4注意爭项......................................

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bjtuwayne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值