C6678开发概述与Sys/bios基本使用
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 failurememory range L1DSRAM
"./configPkg/linker.cmd", line 28: error #10080-D: length not specified formemory 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);
}相关文章:
C6678开发概述与Sys/bios基本使用
C6678开发概述 参考开发环境标记及术语创建sys/bios自定义平台运行第一个sys/bios程序Clock模块使用Demo 参考 TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Datasheet TMS320C66x DSP CorePac User Guide 官方手册 创龙6678开发教程 开发环境 …...
python算法中的图算法之网络流算法(详解二)
目录 学习目标: 学习内容: 网络流算法 Ⅰ. 网络流模型 Ⅱ . Ford-Fulk...
企业电子招投标采购系统之项目说明和开发类型源码
项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…...
ERTEC200P-2 PROFINET设备完全开发手册(8-1)
8.1 IRT通讯实验 这里我们使用APP3 IsoApp,修改源代码usrapp_cfg.h的宏为 #define EXAMPL_DEV_CONFIG_VERSION 3 使能App3,对应的主程序为“usriod_main_isoapp.c” 编译后下载运行。打开4.2建立的TIA项目,添加等时模式组织块,…...
手撕Twitter推荐算法
Twitter近期开源了其推荐系统源码[1,2,3],截止现在已经接近36k star。但网上公开的文章都是blog[1]直译,很拗口,因此特地开个系列系统分享下。系列涵盖: Twitter整体推荐系统架构:涵盖图数据挖掘、召回、精排、规则多…...
JAVA多态性测试的基本实验------JAVA入门基础教程
package duotai;public class Person {public void eat(){System.out.println("人吃饭");}public void Pdrink(){System.out.println("人喝水");} }package duotai;public class Man extends Person {public void eat(){System.out.println("男人吃饭…...
小说作者推荐: 妄鸦合集
《惊悚练习生》作品介绍 主人公叫弥赛亚,宗九的小说是《惊悚练习生》,它的作者是妄鸦倾心创作的一本现代耽美、娱乐圈、才女类型的小说,书中主要讲述了:作者:妄鸦 落魄魔术师宗九穿书了他穿到一本恐怖无限流选秀文里,…...
MySQL-自带工具介绍
目录 🍁mysql 🍁mysqladmin 🦐博客主页:大虾好吃吗的博客 🦐MySQL专栏:MySQL专栏地址 MySQL数据库不仅提供了数据库的服务器端应用程序,同时还提供了大量的客户端工具程序,如mysql&a…...
12个你应该知道的Python库
12个你应该知道的Python库 1. python命令行argparse 更简单的begins2. colorama改善命令行窗口3. pyqtgraph 它提供了不同的功能选择,尤其适用于实时和交互式可视化4. 网页浏览器Pywebview5. psutil 提供了完整的获取系统信息的方法 或许cpu近5s的基本报告6. Watchd…...
【数据分析之道-NumPy(七)】numpy字符串函数
文章目录 专栏导读1、函数说明2、add()函数3、multiply()函数4、center()函数5、capitalize()函数6、title()函数7、lower()函数8、upper()函数9、split()函数10、splitlines()函数11、strip()函数12、join()函数 专栏导读 ✍ 作者简介:i阿极,CSDN Pytho…...
【Linux】Linux基本指令(1)
一.前言 从这篇文章开始,博主就开启了Linux学习之路了,本篇文章也是博主的第一篇Linux的文章,今后也会持续不断更新的。 二.理解文件 1.文件 文件文件数据文件属性(所以一个建好的文件就算没有数据,也占用存储空间&am…...
更全面的对比GPT4和Claude对MLIR的掌握能力
本文构造了20个MLIR基础概念的问题以及使用OneFlow IR转换为Tosa IR的5个代码段来评测GPT4和Claude对于MLIR的掌握能力,我的结论是对于基础概念的理解Claude整体上和GPT4持平,而在阅读相关代码片段时Claude表现出了比GPT4更强一点的理解能力。 0x0. 前言…...
阿里ARouter 路由框架解析
一、简介 众所周知,在日常开发中,随着项目业务越来越复杂,项目中的代码量也越来越多,如果维护、扩展、解耦等成了一个非常头疼问题,随之孕育而生的诸如插件化、组件化、模块化等热门技术。 而其中组件化中一项的难点&…...
大型医院健康体检管理系统源码(PEIS)
一、体检管理系统(PEIS)概念 体检管理系统(PEIS)是以健康为中心的身体检查。一般医学家认为健康体检是指在身体尚未出现明显疾病时,对身体进行的全面检查。方便了解身体情况,筛查身体疾病。即应用体检手段对…...
java 获取时间的方法
Java的时间是通过字节码指令来控制的,所以 java程序的运行时间是通过字节码指令来控制的。但是由于 Java程序在运行时, JVM会产生一些状态,所以在执行 JVM指令时, JVM也会产生一些状态。 我们在执行 java程序时,主要是…...
Block原理(二)- 用白话说说底层源码,不扯代码
之前有一篇关于block的源码探究分析 Block原理(一),时至今日,总觉的那篇文章说得不够流畅,今天打算从顶层设计的角度试着拆解下block的设计思想,拗脑的源码部分就不必再次触碰了,尽量保障这篇文…...
springboot整合knife4j接口文档成公共模块使用
theme: smartblue 之前项目中一直用的是swagger-ui进行接口文档的调用和使用,最近前端一直反馈页面不美观,调用凌乱,等一系列问题。基于这个问题我决定将其进行更改调整,上网搜索了一下发现knife4j是目前接口文档不错的一款插件。…...
软件测试需要学什么
软件测试近些年也是比较热门的行业,薪资高、入门门槛低,让很多开发人员想纷纷加入软件开发这个行业,想要成为这一岗位的一员,想要进入软件测试行业,他们需要学习什么呢? 软件测试需要学习的还挺多的&#…...
【蓝桥杯省赛真题17】python删除字符串 青少年组蓝桥杯python编程省赛真题解析
目录 python删除字符串 一、题目要求 1、编程实现 2、输入输出 二、解题思路...
C# LINQ 查询语句和方法的区别及使用
C# LINQ(Language-Integrated Query)是一种强类型、编译时的查询技术,它可以通过统一的语法对多种数据源进行查询和操作,包括对象、集合、数据库等。LINQ 提供了两种查询方式:查询语句和扩展方法。 查询语句ÿ…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
