tag 标签: 任务

相关博文
  • 热度 30
    2020-7-5 12:48
    2733 次阅读|
    0 个评论
    【富芮坤物联网开发板评测】任务模式编程和经验主义教训记录
    很高兴能够申请到富芮坤物联网开发板。富芮坤开发的FR8016H是符合BLE5.0标准的SOC芯片,内置16位audio codec,内置PMU,在蓝牙协议范围内提供了强大的连接特性。FR8016HA封装为QFN 32,长宽高为4x4x0.75mm,引脚间距为0.4mm pitch,l内含512KB flash, 15 GPIOs, UART, IIC, SPI, PWM, ADC, I2S,LDO, Li-Charger, Audio CODEC好多组件。拿到开发板发现很精致、漂亮,特别是有一块小小的彩屏。忍不住要通上电看一下板载例程的运行效果。上电开机画面如下,显示富芮坤公司的LOGO,画面细腻,很好看。 于是犯了一些经验主义的错误,也没仔细看开发板的说明书和大侠们的评测文章,拼命试三个按钮看能出什么画面和信息。结果发现只有RST键是能起作用的,画面一直就是这副单调的富芮坤LOGO,难道我收到的开发板有问题,没仔细想,失望地冷落了它一段时间。后来关注开发评测里大侠们发的一些评测开箱之类的文章才知道,按键没反应是有原因的,因为K1、K2并没有和主芯片连接,而是要通过跳线帽自行连接才能让按键发生作用。 跳线帽这个东西太小,平常也不太用到,记得以前曾买过一小包,翻箱倒柜居然没找出来翻出了这条连接USB串口模块用的杜邦线,终于把K1、K2和PC5、PC6连接起来,SCL、SDA和PC8、PC7连接了起来,再按K1就有了反应,切换到SENSOR_DATA模式界面,终于有了传感器的数值显示。第一个skip count应该是计步器之类的数值,一直保持在0,还需探索。下面是温度和湿度数值,在下面CAPB18的气压和温度数值,两个温度值稍有差异,还是比较接近的。 和家用的温湿度计比较一下,温度数值有些偏高,湿度数值则偏低了点。 接下来刷各种例程先熟悉一下开发板的编程方式,下载官方的SDK,在FR801xH-SDK\tools目录下面有串口烧写工具FR8010H_Download_Tool,USB数据线连接并安装CP210x模块驱动,这里就不赘述了,工具非常简单:打开串口——开发板复位——连接——导入DAT文件——写入所有内容。 接下来就是提供可供烧写的bin固件文件,SDK的FR801xH-SDK\examples\dev1.0目录下面有三个示例工程,没有编译,然后安装了MDK5.30,打开例程,就出现了上面一幕:字面的意思是设备未发现。 经验主义错误又犯了,少设备,是不是就少了Cortex-M3这个库文件呢?下载安装库文件后问题依旧,于是查找对应信息,有说是MDK5不兼容MDK4创建的工程,工程扩展名加个x就能解决,有说下载安装一个兼容旧版软件包可以解决,事实证明兼容包安装一下能够解决这个问题。MDK是一架生产软件的大机床,这个机床可以安上各种设备和刀具,了解一下MDK的架构方式还是有一定必要的:核心、编译器、各种器件、软件包,有时候需要进行按需选择组装。 MDK旧版软件包安装程序下载地址为http://www2.keil.com/mdk5/legacy/,英文网站,用一下浏览器的翻译网页功能就容易理解多了,这是一个较大的的文件,在下载过程中还是耗费了不少时间的,作用就是一个打开工程时不会先弹出那个设备找不着的的提示了,而实际上忽略那提示也不要紧,真正产生不能编译生成目标文件的原因其实是工程配置的一个选项问题。 打开工程配置对话框,在C/C++选项卡中部右侧,有个C99 Mode选项打上勾,那么编译时出现上百个Error、不能产生目标文件的现象就完全解决了。好像这个还不是一劳永逸的,下次打开一个新的工程文件还需要来这里再设置一次才行。 编程工具的问题也解决了,接下来就是开始编程调试实践了。先上个图,变了一个新任务,按K1后进入了新任务的显示画面,希望是能够突出显示温度、湿度信息,还未全部完成。下面就任务模式编程的经验主义教训做些记录分析。 从基于函数的编程到基于任务的编程,那就是在工程里面添加任务,然后实现任务切换就好了,想象中是这样。编程练习从修改例程起步,首先将FR801xH-SDK\examples\dev1.0目录下的ble_simple_peripheral例程的工程文件夹整体复制一个副本,作为新工程的母本,可以修改文件夹名为自定义的工程名。打开工程,在ble_simple_peripheral.h中找到如上图定义任务位置添加一个任务Show_Temp 在user_task.c里创建一个任务函数showtemp_task_func,里面简单地设置了屏幕底色为GREEN,也可以设成其它的颜色。其它需要执行的操作可以在这里继续添加。 还是在user_task.c里找到uesr_task_init函数,里面添加提取任务id的语句。这样添加编译是会报错的,原因是showtemp_task_id未定义,在哪定义呢? 当然还是在user_task.c文件的顶部,接着原有的两个任务id变量定义,ok 任务创建好了,还需要去调用切换才能让任务执行起来。调用任务的方式是通过任务id实现的,需要在user_task.h里对showtemp_task_id进行申明。否则根据经验主义会在调用文件里又去重复定义,删了又会显示未定义错误。 用按键来调用任务是怎么实现的呢? 在button.c文件中button_send_event函数里有一个调用任务的语句,注释掉原有的,改成调用showtemp_task_id的句子,新添加任务的调用局实现了。 只显示绿底背景总觉得太单调了点,显示点什么才能突出点个性呢?找一下display下的lcd.c,找到好多个能显示图形、文字的函数,调来用用呗。选了一个画线函数LCD_DrawLine(x1,y1,x2,y2,colour);很简单,从(x1,y1)到(x2,y2)画一条线,颜色为colour,如上图所示,在user_task.c里的任务函数showtemp_task_func中加上三个画线函数语句,绿底背景上的彩线就显示出来了。按这个经验来的话,温湿度数值的显示也就是调用几个函数的事,这么就又进入经验主义的误区了。为什么?调用函数显示的内容是静态不变的,温湿度值需要实时更新。在这里是不能直接调用函数显示实时数据,这就要找一个不断刷新循环的位置来显示不断变化的温湿度数值。 这个实时显示动态数值的地方在哪里呢?这个要用上前面定义的一个任务模式App_Mode = Show_Temp,经过搜索找到这个用到App_Mode参数的位置在ble_simple_peripheral.c的timer_refresh_fun函数里面。timer_refresh_fun是一个由定时器驱动会被循环调用的函数,在这里加入的语句会定时被重复执行,显示实时刷新的数值就没问题了。App_Mode参数的作用就是要实现因“应用模式”施“显示内容”,switch……case……当App_Mode = Show_Temp时,调用读取温湿度和显示函数,如上图所示,if结构考虑到读取失败的意外情况。 经过这一番的探索,不断克服经验主义的误导,终于基本搞清了FR8016H开发板的硬件结构和任务模式编程的基本结构,希望这些写真能帮助到一些初次接触开发板的人。当然,显示温湿度数值只是一个初初的入门,蓝牙、WiFi把传感器收集到PC端才是FR8016H芯片强项所在,在这个入门的基础上要继续去探索更深入的秘密。感谢富芮坤官方和面包板论坛,有了开发板能学到不少,支持国产芯片继续做大。
  • 热度 22
    2014-6-30 01:00
    2038 次阅读|
    1 个评论
      1 、任务控制器块是什么: UC/OS-II 用来记录任务的堆栈指针、任务的当前状态、任务的优先级等这些与任务管理相关的属性的表 ——就是任务控制块; UC/OS-II 通过把系统所有任务的控制块链接为两条链表,并且是通过这两条链表来管理各个任务的;   2 、任务控制块链表 为了便于后面需要, UC/OS-II 在初始化时也要按照配置文件所设定的任务数(在 OS_CFG.H 中设定)事先定义一批空白任务控制块,如此,当你需要创建一个任务时肯定需要一个任务控制块,那么我直接把手中事先创建好的空白的一个给你,让你填上任务的属性即可使用。 如前所述, UC/OS-II 需要两条链表来管理任务: ( 1 )空任务块链表(所谓空:就是所有任务控制块都还没分配给任务); ( 2 )任务块链表(其中所有任务都已经分配给任务);   ——为了更快的访问任务控制块, UC/OS-II 在 uCOS _H.h 文件中,定义了一个数组 OSPrioTbl , 这数组的一个元素是一个字节, 8 位,每一位以 1 或 0 来表示任务的就绪状态( 1 则为就绪, 0 为不就绪),可以表达 8 个任务的就绪状态。为了管理更多的任务, UC/OS-II 还定义了一个数据类型为 INT8U 的变量 OSRdy Grp, 并使该变量的每一位对应了上述的 OSRdy Tbl[] 的一个元素,如此,一 OSRdy Grp 可以管理 8*8=64 个任务。       由上可知,对就绪任务表的操作主要有三个: ( 1 )登记:在就绪表中将该任务的对应位置置 1 ; ( 2 )注销:在就绪表中将该任务的对应位置置 0 ; ( 3 )查找最高优先级的就绪任务;   5 、任务挂起与恢复 ( 1 )任务挂起:通过函数 OSTa skSupend() ; ( 2 )任务恢复:通过函数 OSTa skResume() ; 在任务被挂起后,只能通过恢复函数 OSTa skResume() 使其恢复为就绪状态。
  • 热度 18
    2013-9-2 16:08
    2413 次阅读|
    0 个评论
    状态机 任务和并行思想 本文主要写了自己对 状态机 任务 并行思想和流水线设计的一些认识   为什么把这几个放在一块写呢 先看一个 IIC 写 EEPROM 的代码大致框架吧 通信线为 SDA SCL   Module  eeprom_w // 输入输出定义 // 变量定义 // 参数定义   Assign SDA=(out_***==1)? Sda_buf   :1’bz;        // 控制 IIC 数据线接收发送   Initial Begin     // 参数初始化 End   Always @(negedge sys_clk) // 为 iic 产生时钟 If( 复位 )     Scl=0; Else     Scl=~scl;   Always @ ( scl 下降沿)      如果复位 初始化某些参数 否则 begin     Casex(main_state)  // 状态机       状态 1      空闲 准备跳入下一个状态       状态 2      发开始信号   (调用任务)  准备跳入下一个状态         状态 3     发设备地址(调用任务)   准备跳入下一个状态       状态 4     发数据地址(调用任务)    准备跳入下一个状态       状态 5    发数据(调用任务)       准备跳入下一个状态       状态 6     发停止信号   (调用任务)  准备跳入下一个状态       状态 7     发 ACK 应答信号(调用任务) 准备跳入下一个状态 Default : Endcase End        任务 1 发送 IIC 起始信号(代码实现)    任务 2 将 8 位数据发到 IIC 总线(代码实现)    任务 3 从 IIC 总线上读取 8 位数据 (代码实现)    任务 4 发送 IIC 结束信号(代码实现)    任务 5 发送 IIC ack 应答信号(代码实现)   Endmodule     因为通过阅读代码发现无论是 UART 收发器, LCD1206 驱动程序还是 IIC 收发器的实现 1 ,最清晰明白的实现方法就是使用状态机(看来大部分程序都离不开它) ,2 ,有状态机的地方就可以通过调用任务 使程序看起来更有调理 ,3 ,而收发器的工作运行都是并行的    我把并行称为随时准备执行 只要收到使能命令立刻执行 比如立即发送 FIFO 中的数据到 uart 口   这就是 fpga 的优势之一吧     状态机: 它不是一种电路,而是一种设计思想。我的感觉就是实现任务执行流程的控制 往往用 always 配合 case 语句实现。 Moore 有限状态机:输出与输入无关,仅依赖于内部状态。 Mealy 有限状态机:输出不仅决定于内部状态还跟外部输入有关。 其中要注意状态码的实现,状态码的设计会直接影响使用的逻辑资源数并影响执行速度。 常见的有二进制码 00 01 10 11 位值变化跨度大,枚举型 1 2 3 ,格雷码 0010 0110 0111 每次变化一位但是难以理解记忆,独热码 00 01 10 010 100 每次 1 向左移动便于观察和理解。 描述方式 1  状态机描述方法   状态机描述时关键是要描述清楚几个状态机的要素,即如何进行状态转移,每个状态的输出是什么,状态转移的条件等。具体描述时方法各种各样,最常见的有三种描述方式:   1 、一段式:整个状态机写到一个 always 模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;   2 、二段式:用两个 always 模块来描述状态机,其中一个 always 模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出;   3 、三段式:在两个 always 模块描述方法基础上,使用三个 always 模块,一个 always 模块采用同步时序描述状态转移,一个 always 采用组合逻辑判断状态转移条件,描述状态转移规律,另一个 always 模块描述状态输出 ( 可以用组合电路输出,也可以时序电路输出 ) 。   一般而言 , 推荐的 FSM  描述方法是后两种。这是因为: FSM 和其他设计一样,最好使用同步时序方式设计,以提高设计的稳定性,消除毛刺。状态机实现后,一般来说,状态转移部分是同步时序电路而状态的转移条件的判断是组合逻辑。   关于描述方法看参考(一段式,两段式等) http://keendawn.blog.163.com/blog/static/888807432011824113626238/ http://wenku.baidu.com/view/ffb87c679b6648d7c1c7466e.html http://wenku.baidu.com/view/30f2f2dca58da0116c1749e6.html     任务: 任务比函数更灵活所以在设计中得到了广泛的使用。 设计时要注意控制任务的执行顺序 执行结束时返回一个信号或修改一个变量   否则执行顺序容易出错 . 任务就是一段封装在“ task-endtask ”之间的程序。任务是通过调用来执行的,而且只有在调用时才执行,如果定义了任务,但是在整个过程中都没有调用它,那么这个任务是不会执行的。调用某个任务时可能需要它处理某些数据并返回操作结果,所以任务应当有接收数据的输入端和返回数据的输出端。另外,任务可以彼此调用,而且任务内还可以调用函数。 任务定义语法:                                                                 task 任务名 ;     端口及数据类型声明语句     语句 1...... endtask 注意: ( 1 )若任务中含有时延或时间控制的语句,则任务是不可综合的。 ( 2 )其他情况下的函数和任务是可以综合的。     并行与流水线: 这就和 C 语言的函数调用不一样 C 编程中在需要的地方调用一下函数(比如 uart 发送) 是一步一步顺序执行的 Fpga 中任务借助时钟激励随时准备执行 一旦发现使能信号立即执行(比如 uart 发送使能) 还可以把庞大的任务分解成多个任务 小任务之间添加寄存器   使复杂的逻辑分步完成 减少了每一步的延时 从而使系统的运行频率提高 缺点是耗费了寄存器资源         流水线设计的概念 :      所谓流水线设计实际上就是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组暂存中间数据。 K 级的流水线就是从组合逻辑的输入到输出恰好有 K 个寄存器组(分为 K 级,每一级都有一个寄存器组)上一级的输出是下一级的输入而又无反馈的电路。  
相关资源
  • 所需E币: 0
    时间: 2023-7-29 09:51
    大小: 1.48KB
    当今社会是科技的社会,是算力快速发展的时代。随着数据中心、东数西算、高性能计算、数据分析、数据挖掘的快速发展,大模型得到了快速地发展。大模型是“大算力+强算法”相结合的产物,是人工智能的发展趋势和未来。目前,大规模的生态已初具规模。其可以实现从“手工作坊”到“工厂模式”的AI转型。大模型通常在大规模无标记数据上进行训练,以学习某种特征和规则。基于大模型开发应用时,可以对大模型进行微调,或者不进行微调,就可以完成多个应用场景的任务;更重要的是,大模型具有自监督学习能力,不需要或很少需要人工标注数据进行训练,降低训练成本,从而可以加快AI产业化进程,降低AI应用门槛。NLP大模型是被认为最接近人类中文理解能力的AI大模型,而CV大模型首次兼顾了图像判别与生成能力。未来的方向1.进一步扩大模型规模,改善模型架构和训练改善模型的架构或者训练过程可能会带来具有涌现能力的高质量模型,并减少计算量。一种方向是使用稀疏混合专家架构,其在保持恒定输入成本时具有更好的计算效率,使用更加局部的学习策略,而不是在神经网络的所有权重上进行反向传播,以及使用外部存储来增强模型。2.扩大数据规模在一个足够大的数据集上训练足够长的时间被证明是语言模型获得语法、语义和其他世界知识的关键。近期,Hoffmannetal.认为先前的工作低估了训练一个最优模型的训练数据量,低估了训练数据的重要性。收集模型可以在其上训练更长时间的大量数据,允许在一个固定模型尺寸的约束下有更大范围的涌现能力。3.更好的prompt虽然few-shotprompting简单有效,对prompting通用性的改善将进一步扩展语言模型的能力。
  • 所需E币: 0
    时间: 2023-7-29 08:52
    大小: 1.21KB
    上传者: 开心就很好了
    AIGC与NLP大模型实战-经典CV与NLP大模型及其下游应用任务实现视频教程下载,视频+源码+课件!AIGC全称AI-GeneratedContent,指基于人工智能通过已有数据寻找规律,并自动生成内容的生产方式。AIGC既是一种内容分类方式,也是一种内容生产方式,还是一种用于内容自动生成的一类技术集合。NLP是目前世界上最实用有效的一门心理行为科学。NLP全名是NeuroLinguisticProgramming,中文译为【神经语言程序学】。大模型又可以称为FoundationModel(基石)模型,模型通过亿级的语料或者图像进行知识抽取,学习进而生产了亿级参数的大模型。其实感觉就是自监督学习,利用大量无标签很便宜的数据去做预训练。AIGC是目前自然语言处理和计算机视觉领域的前沿技术之一。它可以被用于很多应用场景,比如:1、在商业领域,可以帮助企业进行智能客服、舆情监测、自然语言处理等方面的工作;2、在教育领域,它可以辅助学生写作、阅读理解、语言学习等方面的任务;3、在医疗领域,它可以帮助医生进行医学文献智能分析、病历自动填写等工作;4、在游戏领域,它可以用于游戏中的角色设计、场景设计和动画制作等方面,便于游戏开发者更为快速、更准确地创造出高质量的游戏素材,提高游戏的制作效率和品质。
  • 所需E币: 0
    时间: 2023-7-25 15:34
    大小: 1.39KB
    上传者: 蝴蝶结欧恩
    分享一套课程——AIGC与NLP大模型实战-经典CV与NLP大模型及其下游应用任务实现,附源码+课件。本章节以当下最流行大模型技术为核心,通俗讲解CV与NLP任务中的经典大模型及其实现方法,详细解读其论文思想与应用场景,并结合实例进行项目实战。所选内容全部基于当下主流算法及其源码实现,覆盖CV与NLP核心应用场景与落地方案。AIGC全称为AIGeneratedContent,即人工智能生产的内容,认为是继PGC、UGC之后的新型内容创作方式。在技术上,AIGC能够以优于人类的制造能力和知识水平承担信息挖掘、素材调用、复刻编辑等基础性机械劳动,从技术层面实现以低边际成本、高效率的方式满足海量个性化需求。在市场需求上,由于Web3.0时代的到来,人工智能、关联数据和语义网络构建了形成全新格局,相关消费需求高速增长。传统的UGC\PGC内容生成方式将落后于现有需求,而AIGC技术的将成为新的内容生产方式,更被认为是元宇宙和web3.0的底层基础设施之一。
  • 所需E币: 1
    时间: 2023-4-25 14:56
    大小: 178.54KB
    上传者: 张红川
    基于任务驱动的单片机教学方案.pdf
  • 所需E币: 1
    时间: 2023-4-17 09:25
    大小: 224.89KB
    上传者: 张红川
    任务驱动法在单片机教学中的应用.pdf
  • 所需E币: 1
    时间: 2023-3-29 20:57
    大小: 436.46KB
    上传者: 指的是在下
    WSN中基于多目标优化的协同任务分配算法_通信论文
  • 所需E币: 1
    时间: 2023-3-29 20:33
    大小: 436.46KB
    上传者: 指的是在下
    WSN中基于多目标优化的协同任务分配算法
  • 所需E币: 1
    时间: 2023-3-29 12:33
    大小: 436.46KB
    上传者: 指的是在下
    WSN中基于多目标优化的协同任务分配算法.pdf
  • 所需E币: 1
    时间: 2023-3-21 17:44
    大小: 43.73MB
    揭秘NASA的云计算任务
  • 所需E币: 5
    时间: 2023-3-6 22:30
    大小: 31.75MB
    上传者: 小圆梦
    plc应用技术(西门子)任务驱动模式.
  • 所需E币: 5
    时间: 2023-2-13 11:46
    大小: 6.77MB
    上传者: czd886
    面向抓取任务的移动机器人停靠位置优化方法研究
  • 所需E币: 5
    时间: 2023-2-12 18:36
    大小: 1.68MB
    上传者: ZHUANG
    基于FPGADSP的雷达任务管理控制器及其电路设计.
  • 所需E币: 0
    时间: 2023-2-15 11:08
    大小: 1.54MB
    上传者: 王咏梅
    智能巡检机器人在抽水蓄能电站巡检任务规划的优化策略
  • 所需E币: 5
    时间: 2023-2-12 14:55
    大小: 1.14MB
    上传者: ZHUANG
    一种基于DSP的任务调试方法
  • 所需E币: 5
    时间: 2023-2-8 14:37
    大小: 1.04MB
    上传者: ZHUANG
    任务驱动法在高职“计算机网络技术”教学中的应用
  • 所需E币: 5
    时间: 2023-2-6 23:22
    大小: 1.3MB
    上传者: czd886
    任务驱动教学法在中职智能家居教学中的运用
  • 所需E币: 0
    时间: 2022-9-26 23:15
    大小: 677.43KB
    上传者: czd886
    基于任务驱动的“单片机应用技术”课程开发与应用探索
  • 所需E币: 0
    时间: 2022-9-24 15:56
    大小: 632.36KB
    上传者: czd886
    任务驱动在安防专业《单片机应用技术》课程改革中的应用探索.
  • 所需E币: 3
    时间: 2022-7-27 13:41
    大小: 829.82KB
    上传者: ZHUANG
    单片机课程任务驱动教学法的研究与实践
  • 所需E币: 5
    时间: 2022-7-19 13:55
    大小: 485.81KB
    上传者: czd886
    应用离散粒子群-郭涛算法分配多无人机协同任务.