【创龙TMS320C6748开发板试用】广州创龙DSP TL6748的第一个SYSBIOS例程

2019-07-15 19:15发布

好长的时间没有写东西了,今天还是写一点这段时间学到的一些东西以作为记录。
这段时间空闲的时间一直在弄TL6748上面的SYSBIOS,由于只有晚上有时间,而且时间是片段的,所以学习起来较为吃力,而且也遇到了一些问题,实在是不好解决,网上也没有找到相关的资料,所以一个人摸索起来太费劲了,不过还好,今天早上突发奇想的将问题解决了,解决了才发现原来如此简单,--!
先说说遇到的问题,我导入创龙官方提供的SYSBIOS的例程后,编译,发现一只在相同的一个错误。如下:
**** Build of configuration Debug for project GPIO_LED_CLOCK ****

"D:\Program Files\ti\ccsv5\utils\bin\gmake" -k all
'Building file: ../app.cfg'
'Invoking: XDCtools'
"D:/Program Files/ti/xdctools_3_25_03_72/xs" --xdcpath="D:/Program Files/ti/bios_6_35_04_50/packages;C:/Users/ubuntu/workspace_v5_5/Platform;D:/Program Files/ti/ccsv5/ccs_base;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C674 -p tl.dsp.evm6748 -r debug -c "D:/Program Files/ti/ccsv5/tools/compiler/c6000_7.4.4" "../app.cfg"
js: "D:/Program Files/ti/xdctools_3_25_03_72/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: Error: Can't find platform package tl.dsp.evm6748
gmake: *** [configPkg/linker.cmd] Error 1
gmake: Target `all' not remade because of errors.

**** Build Finished ****
错误信息提示说没有找到“TL.DSP.EVM6748”这个包,既然没有这个包,那就参考用户手册建立一个这样子的包吧,建好了以后,发现问题依旧,反复看了几遍官方用户手册,还是没有找到解决方法,没办法,只能依靠自己解决了。
经过反复的修改和测试,终于找到了,在当前编译的工程下右键选择,如下图:
properties.jpg
将“平台下面的tl.dsp.evm6748”换成“ti.platforms.evm6748”,保存退出,然后重新编译。打印的内容如下:

**** Clean-only build of configuration Debug for project HWI_C674x_Nest ****

"D:\Program Files\ti\ccsv5\utils\bin\gmake" -k clean
DEL /F  "configPkglinker.cmd" "configPkgcompiler.opt"  "HWI_C674x_Nest.out"
RMDIR /S/Q  "configPkg"
DEL /F "main.pp"
DEL /F "main.obj"
'Finished clean'
' '

**** Build Finished ****

**** Build of configuration Debug for project HWI_C674x_Nest ****

"D:\Program Files\ti\ccsv5\utils\bin\gmake" -k all
'Building file: ../app.cfg'
'Invoking: XDCtools'
"D:/Program Files/ti/xdctools_3_25_03_72/xs" --xdcpath="D:/Program Files/ti/bios_6_35_04_50/packages;C:/Users/ubuntu/workspace_v5_5/Platform;D:/Program Files/ti/ccsv5/ccs_base;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C674 -p ti.platforms.evm6748 -r debug -c "D:/Program Files/ti/ccsv5/tools/compiler/c6000_7.4.4" "../app.cfg"
making package.mak (because of package.bld) ...
generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
configuring app.xe674 from package/cfg/app_pe674.cfg ...
generating custom ti.sysbios library makefile ...
Starting build of library sources ...
making C:/TLC6748/SYSBIOS/Application/HWI_C674x_Nest/src/sysbios.ae674 ...
cle674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/BIOS.c ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/family/c64p/Hwi_disp_always.s64P ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/family/c64p/Hwi_asm.s62 ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/family/c64p/Hwi_asm_switch.s62 ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/family/c64p/Clobber_asm.s62 ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/family/c64p/Exception_asm.s64P ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/family/c64p/MemoryProtect_asm.s64P ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/family/c62/TaskSupport_asm.s62 ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/timers/timer64/Timer_asm.s64P ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/timers/gptimer/Timer_asm.s64P ...
asme674 D:/PROGRA~2/ti/bios_6_35_04_50/packages/ti/sysbios/timers/dmtimer/Timer_asm.s64P ...
are674 BIOS.obj c64p_Hwi_disp_always.obj c64p_Hwi_asm.obj c64p_Hwi_asm_switch.obj c64p_Clobber_asm.obj c64p_Exception_asm.obj c64p_MemoryProtect_asm.obj c62_TaskSupport_asm.obj timer64_Timer_asm.obj gptimer_Timer_asm.obj dmtimer_Timer_asm.obj ...
Build of libraries done.
cle674 package/cfg/app_pe674.c ...
'Finished building: ../app.cfg'
' '
'Building file: ../main.c'
'Invoking: C6000 Compiler'
"D:/Program Files/ti/ccsv5/tools/compiler/c6000_7.4.4/bin/cl6x" -mv6740 --abi=eabi -g --include_path="D:/Program Files/ti/ccsv5/tools/compiler/c6000_7.4.4/include" --include_path="../../../Include/StarterWare/Drivers" --include_path="../../../Include/StarterWare/Drivers/hw" --include_path="../../../Include/StarterWare/Drivers/c674x/c6748" --define=c6748 --display_error_number --diag_warning=225 --diag_wrap=off --preproc_with_compile --preproc_dependency="main.pp" --cmd_file="./configPkg/compiler.opt"  "../main.c"
'Finished building: ../main.c'
' '
'Building target: HWI_C674x_Nest.out'
'Invoking: C6000 Linker'
"D:/Program Files/ti/ccsv5/tools/compiler/c6000_7.4.4/bin/cl6x" -mv6740 --abi=eabi -g --define=c6748 --display_error_number --diag_warning=225 --diag_wrap=off -z --stack_size=0x800 -m"HWI_C674x_Nest.map" --heap_size=0x800 -i"D:/Program Files/ti/ccsv5/tools/compiler/c6000_7.4.4/lib" -i"D:/Program Files/ti/ccsv5/tools/compiler/c6000_7.4.4/include" --reread_libs --warn_sections --display_error_number --diag_wrap=off --xml_link_info="HWI_C674x_Nest_linkInfo.xml" --rom_model -o "HWI_C674x_Nest.out" -l"./configPkg/linker.cmd"  "./main.obj" -l../../../Library/StarterWare/Drivers/Debug/drivers.lib -l../../../Library/Platform/Debug/Platform.lib -l"libc.a"
<Linking>
'Finished building target: HWI_C674x_Nest.out'
' '

**** Build Finished ****
现在可以愉快的跑SYSBIOS了,虽然和官方的用户手册有一些区别,而且里面可能会有一些不可知的问题,但总算是能够跑一跑了,后面在继续找对应的问题。当然,看到的同学有解决方法希望能够不吝赐教。(需要说明的是上面编译的几个工程都是不相同的,我是在边验证的基础上才发的这个总结,希望能够作为一点经验。)

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
鸿宇
2019-07-15 22:50
本来是点灯的,发现代码都没有贴出来,下面是代码,是在例程的基础上进行简单的修改的:
  1. #include <xdc/std.h>

  2. #include <xdc/runtime/Error.h>
  3. #include <xdc/runtime/System.h>

  4. #include <ti/sysbios/BIOS.h>
  5. #include <ti/sysbios/knl/Task.h>

  6. // 库
  7. #include "TL6748.h"                  // 创龙 DSP6748 开发板相关声明

  8. #include "hw_types.h"                // 宏命令
  9. #include "hw_syscfg0_C6748.h"        // 系统配置模块寄存器
  10. #include "soc_C6748.h"               // DSP C6748 外设寄存器

  11. #include "psc.h"                     // 电源与睡眠控制宏及设备抽象层函数声明
  12. #include "gpio.h"                    // 通用输入输出口宏及设备抽象层函数声明

  13. /****************************************************************************/
  14. /*                                                                          */
  15. /*              宏定义                                                      */
  16. /*                                                                          */
  17. /****************************************************************************/

  18. /****************************************************************************/
  19. /*                                                                          */
  20. /*              全局变量                                                    */
  21. /*                                                                          */
  22. /****************************************************************************/

  23. /****************************************************************************/
  24. /*                                                                          */
  25. /*              函数声明                                                    */
  26. /*                                                                          */
  27. /****************************************************************************/

  28. /****************************************************************************/
  29. /*                                                                          */
  30. /*              PSC 初始化                                                  */
  31. /*                                                                          */
  32. /****************************************************************************/
  33. void PSCInit(void)
  34. {
  35.         // 使能 GPIO 模块
  36.         // 对相应外设模块的使能也可以在 BootLoader 中完成
  37.     PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
  38. }

  39. /****************************************************************************/
  40. /*                                                                          */
  41. /*              GPIO 管脚复用配置                                           */
  42. /*                                                                          */
  43. /****************************************************************************/
  44. void GPIOBankPinMuxSet(void)
  45. {
  46.         // 配置相应的 GPIO 口功能为普通输入输出口
  47.         // 底板 LED
  48.         GPIOBank0Pin0PinMuxSetup();
  49.         GPIOBank0Pin1PinMuxSetup();
  50.         GPIOBank0Pin2PinMuxSetup();
  51.         GPIOBank0Pin5PinMuxSetup();
  52.         // 核心板
  53.         GPIOBank6Pin12PinMuxSetup();
  54.         GPIOBank6Pin13PinMuxSetup();
  55. }

  56. /****************************************************************************/
  57. /*                                                                          */
  58. /*              GPIO 管脚初始化                                             */
  59. /*                                                                          */
  60. /****************************************************************************/
  61. void GPIOBankPinInit(void)
  62. {
  63.         // 配置 LED 对应管脚为输出管脚
  64.     // OMAPL138 及 DSP C6748 共有 144 个 GPIO
  65.         // 以下为各组 GPIO BANK 起始管脚对应值
  66.     // 范围 1-144
  67.         // GPIO0[0] 1
  68.     // GPIO1[0] 17
  69.         // GPIO2[0] 33
  70.     // GPIO3[0] 49
  71.         // GPIO4[0] 65
  72.     // GPIO5[0] 81
  73.         // GPIO6[0] 97
  74.         // GPIO7[0] 113
  75.         // GPIO8[0] 129

  76.         // 核心板 LED
  77.     GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  // GPIO6[12]
  78.     GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  // GPIO6[13]

  79.     // 底板 LED
  80.     GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT);    // D7  GPIO0[0]
  81.     GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_OUTPUT);    // D9  GPIO0[1]
  82.     GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_OUTPUT);    // D10 GPIO0[2]
  83.     GPIODirModeSet(SOC_GPIO_0_REGS, 6, GPIO_DIR_OUTPUT);    // D6  GPIO0[5]
  84. }

  85. /****************************************************************************/
  86. /*                                                                          */
  87. /*              延时                                                        */
  88. /*                                                                          */
  89. /****************************************************************************/
  90. Void Delay(UInt n)
  91. {
  92.         UInt i;

  93.         for(i=n; i>0; i--);
  94. }

  95. /****************************************************************************/
  96. /*                                                                          */
  97. /*              空闲任务                                                    */
  98. /*                                                                          */
  99. /****************************************************************************/
  100. Void LEDStatus(Void)
  101. {
  102.     System_printf("Enter LEDStatus ");

  103.     GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);
  104.         GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH);   // D7  亮 GPIO0[0]
  105.         GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_HIGH);   // D6  亮 GPIO0[5]
  106.         GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH);   // D9  亮 GPIO0[1]
  107.         GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_HIGH);   // D10 亮 GPIO0[2]
  108.     Task_sleep(2500);
  109.     GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);
  110.         GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW);   // D7  亮 GPIO0[0]
  111.         GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_LOW);   // D6  亮 GPIO0[5]
  112.         GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_LOW);   // D9  亮 GPIO0[1]
  113.         GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW);   // D10 亮 GPIO0[2]
  114.     Task_sleep(2500);

  115.     System_printf("Exit LEDStatus ");
  116.     System_flush();
  117. }

  118. /****************************************************************************/
  119. /*                                                                          */
  120. /*              任务                                                        */
  121. /*                                                                          */
  122. /****************************************************************************/
  123. Void taskMain(UArg a0, UArg a1)
  124. {
  125.     System_printf("Enter taskMain() ");

  126.     UChar i;

  127.     // 循环
  128.         for(i=0;i<10;i++)
  129.         {
  130.                 // 延时
  131.                 Delay(0x00FFFFFF);
  132.                 // D10 灭 GPIO0[2]
  133.                 // D7  亮 GPIO0[0]
  134.                 GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_0, GPIO_BANK_PIN_2);

  135.                 // 延时
  136.                 Delay(0x00FFFFFF);
  137.                 // D7  灭 GPIO0[0]
  138.                 // D6  亮 GPIO0[5]
  139.                 GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_5, GPIO_BANK_PIN_0);

  140.                 // 延时
  141.                 Delay(0x00FFFFFF);
  142.                 // D6  灭 GPIO0[5]
  143.                 // D9  亮 GPIO0[1]
  144.                 GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_1, GPIO_BANK_PIN_5);

  145.                 // 延时
  146.                 Delay(0x00FFFFFF);
  147.                 // D9  灭 GPIO0[1]
  148.                 // D10 亮 GPIO0[2]
  149.                 GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_2, GPIO_BANK_PIN_1);
  150.             System_printf("第%d次循环的亮灯 ",i+1);

  151.         }

  152.         // 点亮所有 LED
  153.         GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH);   // D7  亮 GPIO0[0]
  154.         GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_HIGH);   // D6  亮 GPIO0[5]
  155.         GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH);   // D9  亮 GPIO0[1]
  156.         GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_HIGH);   // D10 亮 GPIO0[2]

  157.     System_printf("Exit taskMain() ");
  158.     System_flush();
  159. }

  160. /****************************************************************************/
  161. /*                                                                          */
  162. /*              主函数                                                      */
  163. /*                                                                          */
  164. /****************************************************************************/
  165. Int main()
  166. {
  167.         // 外设使能配置
  168.         PSCInit();

  169.     // 管脚复用配置
  170.     GPIOBankPinMuxSet();

  171.     // GPIO 管脚初始化
  172.     GPIOBankPinInit();

  173.     Task_Handle task;
  174.     Error_Block eb;

  175.     Error_init(&eb);
  176.     task = Task_create(taskMain, NULL, &eb);

  177.     if (task == NULL)
  178.     {
  179.         System_printf("Task_create() failed! ");
  180.         BIOS_exit(0);
  181.     }

  182.     // 启动 SYS/BIOS 系统
  183.     BIOS_start();

  184.     return(0);
  185. }
复制代码

一周热门 更多>