好长的时间没有写东西了,今天还是写一点这段时间学到的一些东西以作为记录。
这段时间空闲的时间一直在弄TL6748上面的SYSBIOS,由于只有晚上有时间,而且时间是片段的,所以学习起来较为吃力,而且也遇到了一些问题,实在是不好解决,网上也没有找到相关的资料,所以一个人摸索起来太费劲了,不过还好,今天早上突发奇想的将问题解决了,解决了才发现原来如此简单,--!
先说说遇到的问题,我导入创龙官方提供的SYSBIOS的例程后,编译,发现一只在相同的一个错误。如下:
**** Build of configura
tion 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”这个包,既然没有这个包,那就参考用户手册建立一个这样子的包吧,建好了以后,发现问题依旧,反复看了几遍官方用户手册,还是没有找到解决方法,没办法,只能依靠自己解决了。
经过反复的修改和测试,终于找到了,在当前编译的工程下右键选择,如下图:
将“平台下面的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了,虽然和官方的用户手册有一些区别,而且里面可能会有一些不可知的问题,但总算是能够跑一跑了,后面在继续找对应的问题。当然,看到的同学有解决方法希望能够不吝赐教。(需要说明的是上面编译的几个工程都是不相同的,我是在边验证的基础上才发的这个总结,希望能够作为一点经验。)
- #include <xdc/std.h>
- #include <xdc/runtime/Error.h>
- #include <xdc/runtime/System.h>
- #include <ti/sysbios/BIOS.h>
- #include <ti/sysbios/knl/Task.h>
- // 库
- #include "TL6748.h" // 创龙 DSP6748 开发板相关声明
- #include "hw_types.h" // 宏命令
- #include "hw_syscfg0_C6748.h" // 系统配置模块寄存器
- #include "soc_C6748.h" // DSP C6748 外设寄存器
- #include "psc.h" // 电源与睡眠控制宏及设备抽象层函数声明
- #include "gpio.h" // 通用输入输出口宏及设备抽象层函数声明
- /****************************************************************************/
- /* */
- /* 宏定义 */
- /* */
- /****************************************************************************/
- /****************************************************************************/
- /* */
- /* 全局变量 */
- /* */
- /****************************************************************************/
- /****************************************************************************/
- /* */
- /* 函数声明 */
- /* */
- /****************************************************************************/
- /****************************************************************************/
- /* */
- /* PSC 初始化 */
- /* */
- /****************************************************************************/
- void PSCInit(void)
- {
- // 使能 GPIO 模块
- // 对相应外设模块的使能也可以在 BootLoader 中完成
- PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- }
- /****************************************************************************/
- /* */
- /* GPIO 管脚复用配置 */
- /* */
- /****************************************************************************/
- void GPIOBankPinMuxSet(void)
- {
- // 配置相应的 GPIO 口功能为普通输入输出口
- // 底板 LED
- GPIOBank0Pin0PinMuxSetup();
- GPIOBank0Pin1PinMuxSetup();
- GPIOBank0Pin2PinMuxSetup();
- GPIOBank0Pin5PinMuxSetup();
- // 核心板
- GPIOBank6Pin12PinMuxSetup();
- GPIOBank6Pin13PinMuxSetup();
- }
- /****************************************************************************/
- /* */
- /* GPIO 管脚初始化 */
- /* */
- /****************************************************************************/
- void GPIOBankPinInit(void)
- {
- // 配置 LED 对应管脚为输出管脚
- // OMAPL138 及 DSP C6748 共有 144 个 GPIO
- // 以下为各组 GPIO BANK 起始管脚对应值
- // 范围 1-144
- // GPIO0[0] 1
- // GPIO1[0] 17
- // GPIO2[0] 33
- // GPIO3[0] 49
- // GPIO4[0] 65
- // GPIO5[0] 81
- // GPIO6[0] 97
- // GPIO7[0] 113
- // GPIO8[0] 129
- // 核心板 LED
- GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); // GPIO6[12]
- GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); // GPIO6[13]
- // 底板 LED
- GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT); // D7 GPIO0[0]
- GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_OUTPUT); // D9 GPIO0[1]
- GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_OUTPUT); // D10 GPIO0[2]
- GPIODirModeSet(SOC_GPIO_0_REGS, 6, GPIO_DIR_OUTPUT); // D6 GPIO0[5]
- }
- /****************************************************************************/
- /* */
- /* 延时 */
- /* */
- /****************************************************************************/
- Void Delay(UInt n)
- {
- UInt i;
- for(i=n; i>0; i--);
- }
- /****************************************************************************/
- /* */
- /* 空闲任务 */
- /* */
- /****************************************************************************/
- Void LEDStatus(Void)
- {
- System_printf("Enter LEDStatus
");
- GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);
- GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH); // D7 亮 GPIO0[0]
- GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_HIGH); // D6 亮 GPIO0[5]
- GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH); // D9 亮 GPIO0[1]
- GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_HIGH); // D10 亮 GPIO0[2]
- Task_sleep(2500);
- GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);
- GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW); // D7 亮 GPIO0[0]
- GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_LOW); // D6 亮 GPIO0[5]
- GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_LOW); // D9 亮 GPIO0[1]
- GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW); // D10 亮 GPIO0[2]
- Task_sleep(2500);
- System_printf("Exit LEDStatus
");
- System_flush();
- }
- /****************************************************************************/
- /* */
- /* 任务 */
- /* */
- /****************************************************************************/
- Void taskMain(UArg a0, UArg a1)
- {
- System_printf("Enter taskMain()
");
- UChar i;
- // 循环
- for(i=0;i<10;i++)
- {
- // 延时
- Delay(0x00FFFFFF);
- // D10 灭 GPIO0[2]
- // D7 亮 GPIO0[0]
- GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_0, GPIO_BANK_PIN_2);
- // 延时
- Delay(0x00FFFFFF);
- // D7 灭 GPIO0[0]
- // D6 亮 GPIO0[5]
- GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_5, GPIO_BANK_PIN_0);
- // 延时
- Delay(0x00FFFFFF);
- // D6 灭 GPIO0[5]
- // D9 亮 GPIO0[1]
- GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_1, GPIO_BANK_PIN_5);
- // 延时
- Delay(0x00FFFFFF);
- // D9 灭 GPIO0[1]
- // D10 亮 GPIO0[2]
- GPIOBankPinsWrite(SOC_GPIO_0_REGS, 0, GPIO_BANK_PIN_2, GPIO_BANK_PIN_1);
- System_printf("第%d次循环的亮灯
",i+1);
- }
- // 点亮所有 LED
- GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH); // D7 亮 GPIO0[0]
- GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_HIGH); // D6 亮 GPIO0[5]
- GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH); // D9 亮 GPIO0[1]
- GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_HIGH); // D10 亮 GPIO0[2]
- System_printf("Exit taskMain()
");
- System_flush();
- }
- /****************************************************************************/
- /* */
- /* 主函数 */
- /* */
- /****************************************************************************/
- Int main()
- {
- // 外设使能配置
- PSCInit();
- // 管脚复用配置
- GPIOBankPinMuxSet();
- // GPIO 管脚初始化
- GPIOBankPinInit();
- Task_Handle task;
- Error_Block eb;
- Error_init(&eb);
- task = Task_create(taskMain, NULL, &eb);
- if (task == NULL)
- {
- System_printf("Task_create() failed!
");
- BIOS_exit(0);
- }
- // 启动 SYS/BIOS 系统
- BIOS_start();
- return(0);
- }
复制代码一周热门 更多>