C6678开发概述与Sys/bios基本使用

news2024/9/20 14:28:29

C6678开发概述

  • 参考
  • 开发环境
  • 标记及术语
  • 创建sys/bios自定义平台
  • 运行第一个sys/bios程序
  • Clock模块使用Demo

参考

TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Datasheet
TMS320C66x DSP CorePac User Guide 官方手册
创龙6678开发教程

开发环境

CCS5.5

标记及术语

☆ - 表示推荐操作
单镜像 - 每个核心运行相同的应用程序
多镜像 - 每个核心运行不同的应用程序

创建sys/bios自定义平台

Sys/bios使用时首先需要创建平台,然后基于平台创建软件工程。
a) File->New->Project…->RTSC:New RTST Platform
b) 配置平台名、路径、芯片
在这里插入图片描述

c) 配置存储器
在这里插入图片描述

运行第一个sys/bios程序

a) View->TI Resource Explorer
b) 选择Typical,并导入工程“Import the example project into CCS”
在这里插入图片描述
c) 配置工程,选择自定义的平台路径
在这里插入图片描述
d) 工程生成后可在以下位置修改工程配置
在这里插入图片描述
e) 用XGCONF 打开*.cfg工程配置文件(Open with > XGCONF)进行BIOS配置
f) 编译工程,首次编译报错:

>> Compilation failure
   memory range L1DSRAM
"./configPkg/linker.cmd", line 28: error #10080-D: length not specified for
   memory range L1PSRAM
error #10010: errors encountered during linking; "typical_TMS320C6678.out" not built
gmake: *** [typical_TMS320C6678.out] Error 1
gmake: Target `all' not remade because of errors.

解决方法,打开Debug/configPkg/linker.cmd文件,注释掉:L1DSRAM和L1PSRAM,如下:
在这里插入图片描述
g) 运行程序,结果如下,表明多任务成功运行
在这里插入图片描述

Clock模块使用Demo

来源:
View->TI Resource Explorer-> Clock Example
功能:
该模块用于定时启动某个任务/周期执行某个任务

//头文件:
include <ti/sysbios/knl/Clock.h>
//主要函数功能:
clkParams.period = 10;  //设置循环执行周期,单次执行设置为:0
clkParams.startFlag = TRUE;//设置循环执行为:TRUE/单次执行为:FALSE
clk2 = Clock_create(clk1Fxn, 1000, &clkParams, NULL);
//关键参数(定时启动的函数名称,任务启动起始时刻应>0,配置参数)
Clock_start(clk2);//启动时钟2
time = Clock_getTicks();//获取当前时刻值

官方Demo展示了2个任务:
a) clk0Fxn循环执行周期为5,启动时刻为5;
b) clk1Fxn单次执行,启动时刻为11,该任务调用BIOS_exit(0)结束sys/bios。
注意:
a) 经测试发现System_printf函数无法实时输出结果到环境,打印到下图位置,在sys/bios结束后才会将部分最近缓存打印出来,因此调试后续仍要用串口打印。
在这里插入图片描述
b) Clock_create函数中的任务启动起始时刻应>0,否则该任务无法运行
c) 创建多个任务时,需要把单次执行的任务放在最后,且写法如下,只将最后一个Clock_create返回值进行赋值

Clock_create(clk0Fxn, 5, &clkParams, NULL);
Clk2 = Clock_create(clk0Fxn1, 100, &clkParams, NULL);
Clock_start(clk2);

完成程序:

/*
 *  ======== main.c ========
 */

#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 <ti/sysbios/knl/Clock.h>

unsigned int task_run_counnect = 0;

/*
 *  ======== taskFxn ========
 */
Void taskFxn(UArg arg0)
{
    System_printf("enter taskFxn()\n");

    //Task_sleep(10);

	System_printf("exit taskFxn()\n");
    BIOS_exit(0);
}


Void taskFxn1(UArg arg0)
{
    task_run_counnect++;
    //Task_sleep(10);
    System_printf("task taskFxn1 run counnect is %d\n",task_run_counnect);

}

Void taskFxn2(UArg arg0)
{
    task_run_counnect++;
    //Task_sleep(10);
    System_printf("task taskFxn2 run counnect is %d\n",task_run_counnect);

}

Void taskFxn3(UArg arg0)
{
    task_run_counnect++;
    //Task_sleep(10);
    System_printf("task taskFxn3 run counnect is %d\n",task_run_counnect);

}

/*
 *  ======== main ========
 */
Int main()
{ 
    Task_Handle task;
    Error_Block eb;

    System_printf("enter main()\n");
/*
    Error_init(&eb);
    task = Task_create(taskFxn, NULL, &eb);
    if (task == NULL) {
        System_printf("Task_create() failed!\n");
        BIOS_exit(0);
    }
*/
     Clock_Handle clk2;
     Clock_Params clkParams;

     /* Create a periodic Clock Instance with period = 5 system time units */
     Clock_Params_init(&clkParams);


     clkParams.period = 30;
     clkParams.startFlag = TRUE;
     Clock_create(taskFxn1, 1, &clkParams, NULL);

     clkParams.period = 30;
     clkParams.startFlag = TRUE;
     Clock_create(taskFxn2, 10, &clkParams, NULL);

     clkParams.period = 30;
     clkParams.startFlag = TRUE;
     Clock_create(taskFxn3, 20, &clkParams, NULL);

     clkParams.period = 0;
     clkParams.startFlag = FALSE;
     clk2 = Clock_create(taskFxn, 100, &clkParams, NULL);

     Clock_start(clk2);


    BIOS_start();    /* does not return */
    return(0);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 ChatGPT 改善 Android 开发效率的 7 个案例~

翻译 修改自 https://proandroiddev.com/chatgpt-for-android-developers-1c3c1ecc6440&#xff0c;原作者&#xff1a;Rafa Araujo ChatGPT 是由 OpenAI 公司创造的自然语言处理工具&#xff0c;对那些想要提高技能的软件开发人员来说&#xff0c;它绝对是不容错过的重要利器…

日撸 Java 三百行day32

文章目录 说明day32 图的连通性检测1.思路1.1矩阵表示1.2.矩阵相乘1.3结合矩阵运算思考图的连通性。 2.代码 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;ht…

Linux下安装navicat

1.在https://www.navicat.com.cn/download/navicat-premium下载navicat安装包 2.在终端执行命令 给navicat16-premium-cs.AppImage赋予可执行的权限 chmod x navicat16-premium-cs.AppImage 启动Navicat16 ./navicat16-premium-cs.AppImage 3.点击连接——mysql——输入连…

java单机秒杀扛1万并发方案和代码

我们先来看普通的加锁加事务秒杀性能, 说明: 1.这里的秒杀业务执行一次耗时100毫秒 2.电脑配置16g内存 4核8线程 cpu i7 7代,数据库连接池max20 RequestMapping("/purchase2")public ResultJson purchase2( Long productId){int userId new Random().nextInt(10…

2 常见模块库(2)

2.5 复用器与分路器模块 Mux是一种用于将多个信号组合成一个信号的模块。Mux模块的名称来源于多路复用器&#xff08;Multiplexer&#xff09;。 使用Mux可以将多个输入信号组合成一个向量或矩阵&#xff0c;以便在模型中传递和处理。Mux模块可以接受任意数量的输入信号&#x…

Visio Studio 2017利用Qt插件开发Qt应用的安装方法

Visio Studio 2017利用Qt插件开发Qt应用的安装方法 1 安装Visio Studio 20172 安装QT3 在Visio Studio 2017中安装Qt插件 本教程介绍如何利用Visio Studio 2017&#xff0c;开发Qt.5.14.2的Qt应用 1 安装Visio Studio 2017 链接&#xff1a;https://pan.baidu.com/s/1t9j1fFj3…

Linux --- 简介、安装

一、Linux简介 1.1、主流操作系统 不同领域的主流操作系统&#xff0c;主要分为以下这么几类&#xff1a; 桌面操作系统、服务器操作系统、移动设备操作 系统、嵌入式操作系统。接下来&#xff0c;这几个领域中&#xff0c;代表性的操作系统是那些? 1、桌面操作系统 2、服务…

2023年农牧行业数字化:7大CRM软件、5大场景盘点

目录 一、5大业务场景能力&#xff0c;解密农牧行业持续增长秘籍 1、营销获客 2、客户管理 3、商机管理 4、生态“互联”能力 5、业财一体化 二、农牧行业企业CRM选型指南 1、SaaS模式或私有部署 2、是否具有行业成功“经验” 3、可扩展性 4、以营销为主题的体系建设…

【MySQL】基础介绍及表操作

目录 1.MySQL是什么&#xff1f; 2.为什么要学习数据库呢&#xff1f; 内存和硬盘的区别 3.数据库基本操作 1.创建数据库 2.使用数据库 3.删除数据库&#xff08;慎用&#xff09; 4.查看警告信息 5.查询当前数据可服务使用的编码集 7.表操作 1.创建一个学生成绩表 2…

Spring Cloud微服务网关Zuul过滤链和整合OAuth2+JWT入门实战

一、Spring Cloud Zuul 过滤链 1.1 工作原理 Zuul的核心逻辑是由一系列的Filter来实现的&#xff0c;他们能够在进行HTTP请求或者相应的时候执行相关操作。Zuul Filter的主要特性有一下几点&#xff1a; Filter的类型&#xff1a;Filter的类型决定了它在Filter链中的执行顺序…

解决Ubunt20.04安装Sogou输入法失败进不去桌面 及 中文输入法安装

目录解决Ubunt20.04安装Sogou输入法失败进不去桌面中文输入法安装解决wps无法输入中文解决Ubunt20.04安装Sogou输入法失败进不去桌面 问题&#xff1a; Ubuntu20.04 安装了 fcitx 和 sogou 输入法&#xff1b;键盘输入法系统由 IBus 改成了 fcitx&#xff1b;重启后可以出现登…

文心一言 VS chatgpt (11)-- 算法导论2.3 7题 3.1 4~5题

四、2 ^ (n1)O(2 ^ n)成立吗? 2^(2n)O(2 ^ n)成立吗? 文心一言&#xff1a; chatgpt&#xff1a; 第一个式子不成立&#xff0c;第二个式子成立。 2 ^ (n1) O(2 ^ n) 该式不成立。按照大O符号的定义&#xff0c;如果存在正常数c和n0&#xff0c;使得n>n0时&#xf…

旋转矩阵与欧拉角

其他相关的内容网上很多&#xff0c;这里就简单记录一下不同欧拉角分解顺序时&#xff0c;对应的角度怎么计算 #include <opencv2/opencv.hpp> #include <iostream>using namespace cv; using namespace std; #define PI acos(-1)void getEulerAngles(Mat& ro…

Spring项目整合Minio分布式的对象存储系统

文章目录 安装Docker安装Docker-compose安装 SpringBoot集成引入依赖初始化客户端存储桶的CRUD存储桶的文件操作存储桶生命周期配置 安装 Docker安装 docker run -p 9000:9000 -p 9090:9090 \--nethost \--name minio \-d --restartalways \-e "MINIO_ACCESS_KEYadmin&q…

01-Linux-磁盘分区与目录配置

1. 主引导纪录和磁盘分区表 1.1 MBR分区表 启动引导程序记录区与分区表都放在磁盘的第一个扇区&#xff08;512B&#xff09; 由于分区表仅占 64B&#xff0c;因此最多能有四组记录区&#xff0c;每组记录区记录了该区段的起始与结束的柱面号码。 缺点如下&#xff1a; 操作…

设计模式-创建型模式之工厂方法模式(Factory Method Pattern)

3.工厂方法模式(Factory Method Pattern)3.1. 模式动机现在对该系统进行修改&#xff0c;不再设计一个按钮工厂类来统一负责所有产品的创建&#xff0c;而是将具体按钮的创建过程交给专门的工厂子类去完成&#xff0c;我们先定义一个抽象的按钮工厂类&#xff0c;再定义具体的工…

vue项目导入excel成功后下载导入结果(后端返回的list数组)

需求&#xff1a; 点击批量导入按钮&#xff0c;弹出弹窗。 下载模板如图二 上传后&#xff0c;如果有错误&#xff0c;会弹出提示&#xff0c;如图三 点击查看失败原因&#xff0c;会自动下载失败的excel如图四。 请求参数和返回结果 1. vue项目导出表格功能实现步骤 np…

十七、市场活动明细:添加备注

功能需求 用户在市场活动明细页面,输入备注内容,点击"保存"按钮,完成添加市场活动备注的功能. *备注内容不能为空 *添加成功之后,清空输入框,刷新备注列表 *添加失败,提示信息,输入框不清空,列表也不刷新 功能分析 流程图 代码实现 一、ActivityRemarkMapper 1.Ac…

笔记-Samba服务器的安装与配置

引言 代码编写我们是在Windows系统下的VS Code来编辑&#xff0c;但是代码在虚拟机的Ubuntu系统中&#xff0c;所以我们要先实现如何将在Ubuntu下的项目映射到Windows系统中&#xff0c;这时我们可以使用到samba服务器。 一、安装samba服务器 sudo apt-get install samba我这里…

【瑞吉外卖】003 -- 后台退出功能开发

本文章为对 黑马程序员Java项目实战《瑞吉外卖》的学习记录 目录 一、需求分析 二、代码开发 三、功能测试 四、分析后台页面构成和效果展示 1、Vue & Element 2、iframe 一、需求分析 前端页面分析&#xff1a; 前端页面&#xff0c;点击事件 点击事件 logout()&#x…