SYS/BIOS实例分析
SYS/BIOS简介
创建一个SYS/BIOS项目
在项目模板中选择SYS/BIOS项目中的Hello Example模板,点击Next:
在RTSC(XDCtools的别称)配置页中选中需要的SYS/BIOS,XDCtools及其他组件的版本,Target保持默认,不需修改,如果Platform没有自动填充,选择与设备适用的平台。Build-profile决定程序链接的库,推荐使用release,即使仍然处于创建和调试阶段,点击Finish完成创建项目。
SYS/BIOS的模块与配置
SYS/BIOS可以用文本编辑器或者是图像配置编辑器XGCONF来编辑,双击打开.cfg文件:
单击System Overview,可以显示程序当前使用的主模块(带绿色小箭头的):
各种APIs模块的添加这里有两种方法,一种是直接双击主模板进入,然后勾选Add:
各个API模块的作用
在项目中导入LOG模块
LOG模块实际上是一个实现打印信息的API。
添加LOG模块,默认是自动添加的。
LOG模块定义了许多比如Log_error、Log_info、Log_warning、Log_print等之类函数,这些函数的用法同printf函数的用法很相似,这些函数都可以在<xdc/runtime/Log.h>找到,其实际上是将printf的有用法分成许多不同的类(如错误信息、提示信息、警告信息等),LOG模块打印的内容查看:
右下角会出现面板:
LOG中定义了许多如下的函数,比如Log_info1函数后面的数字代表函数接的变量数目,如:
Log_info1("%d",s1); Log_info2("%d, %d", s1, s2)
在项目中导入TSK任务模块
TSK任务模块是操作系统中最基本的模块,其实际上反映了多线程抢占,每个任务单独是一个线程,各个线程(任务)具有各自的优先级。
创建新任务,我们创建两个任务task0、task1,分别对应其函数func_tsk0、func_tsk1。其优先级都为1:
编写任务函数:
不同任务有不同优先级,而软件中断具有比任何任务都高的优先级,而其中硬件中断(HWI)又比软件中断(SWI)优先级更高。
添加软件中断Swi:
代码:
编译调试,运行查看结果(这里我们只需要选择单核运行就可以了):
可以看到两个任务的每次都会使得软件中断计数trigger减1(通过Swi_dec函数),直到trigger的值减少到0时,执行软件中断,中断后,trigger恢复到原来的值,这里的trigger初始值为2,所以执行两次任务后就会触发一次软件中断。
在项目中导入信号量Semaphore模块

代码:
编译调试,运行查看结果(这里我们只需要选择单核运行就可以了):
可以看到只有当软件中断执行后,此时信号量才解锁,task0才能执行,而任务执行两次,才能触发一次软件中断。
在项目中导入时钟Clock模块
Clocks模块主要提供周期性执行函数,我们这里新建一个周期性执行函数,其每四个周期执行一次.
添加时钟:
代码:
编译调试,运行查看结果(这里我们只需要选择单核运行就可以了):
可以看到只有当周期函数func_clk每隔5个周期开始执行,开始执行时间为5。
__EOF__

本文链接:https://www.cnblogs.com/xiaojianliu/p/8655505.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App