CSRBLUELAB的任务信息和信息处理入门.docx
- 文档编号:10844586
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:46
- 大小:367.66KB
CSRBLUELAB的任务信息和信息处理入门.docx
《CSRBLUELAB的任务信息和信息处理入门.docx》由会员分享,可在线阅读,更多相关《CSRBLUELAB的任务信息和信息处理入门.docx(46页珍藏版)》请在冰豆网上搜索。
CSRBLUELAB的任务信息和信息处理入门
1General
1概述
BlueLabTMSDKsprovidedeveloperswithaseriesoflibrariesthatsupporttheimplementationofBluetoothapplicationsthatrunonBluetooth
chips.
BlueLabTMSDKs为开发者提供了一系列的资料,从而支持Bluetooth
芯片上的应用程序。
TheuseofthesuppliedlibrariesallowsengineerstodevelopBlueCoreapplicationsthatimplementBluetoothProfileswithoutbecomingdistractedbythecomplexityoftheunderlyingBluetoothProtocols.
通过使用所提供的资料,让工程师们在没有复杂的蓝牙议定书的情况下发展BlueCore应用软件以实行蓝牙配置文件。
ThisapproachhastheadditionalbenefitofallowingtheunderlyingBlueCorefirmwaretobeconsideredasapre-qualifiedcomponentofthefinalproduct.
这种做法有特别的好处,就是在组成最终产品时优先考虑BlueCore底层固件。
ThisdocumentillustratesataconceptuallevelhowthesourcecodeandsuppliedlibrariesareusedtobuildBluetoothapplicationstorunonBlueCorechips.
本文件在一个概念性的水平上说明了源代码和库文件是如何构建一个蓝牙应用软件在BlueCore芯片上运行的。
ThisdocumentshouldbereadinconjunctionwiththeReferenceGuidesprovidedaspartofBlueLab’son-linedocumentationthatdetailsthelibrary-definedfunctionsandthemessagesgeneratedbythesuppliedlibraries.
在阅读本文件时应与参考指南中提供的BlueLab’s在线文件部分相联系,该部分详细介绍了库定义的职能和库中产生的信息。
1.1Introduction
1.1导言
ThisdocumentintroducesthefundamentalconceptsemployedwhendevelopingapplicationsdesignedtorunonCSR’sBlueCorechips.
本文件介绍了开发应用程序在CSR的BlueCore芯片上运行时所使用的基本概念。
Thedocumentcovers:
该文件包括:
●Thefundamentalsoftasks,messagesandmessagehandling
●任务,信息和信息处理的基本原理
●Howtheseareusedbythelibraries
●如何在库中进行应用。
●HowthisdefinesthearchitecturalofatypicalBlueCoreapplication
●详细说明典型的BlueCore芯片如何应用.
ThebasicconceptsandsimplecodingexamplesinthisdocumentareintendedtoillustrategoodpracticewhenwritingcodetorunonBlueCore’sVirtualMachineandtohelpengineersgainaclearerunderstandingofusingBlueLabSDKstodevelopapplications.
这份文件中的基本概念和简单的编码例子是为了说明编写BlueCore虚拟机运行代码的良好习惯和做法,使工程师对BlueLabSDK的开发应用获得更清晰的了解。
InadditionthereferenceapplicationssuppliedwithBlueLabprovideengineerswithavaluableresourcethatcanbeusedasabasisfortheirownapplicationdevelopmentorsimplytohelpincreasetheunderstandingofhowtoimplementBlueCoreapplications.
此外,该文件所提供的参考应用软件BlueLab为工程师们提供了一个宝贵的资源,它不仅可以作为应用软件开发的基础,还对理解BlueCore应用起到了重要作用。
TheVMMemoryMappingandMemoryUsageapplicationnoteisalsorecommendedreadingforengineersembarkingontheprocessofdevelopingBlueCoreapplications.
VM内变换和存储器使用操作说明也被作为推荐资料推荐给正在开发BlueCore芯片应用的工程师们。
2Tasks,MessagesandMessageHandlers
2任务,信息和信息处理
Itisimportanttounderstandtheconceptoftasks,messagesandmessagehandlingastheyareintegraltothewayBlueLabapplicationsareimplemented.
了解任务,信息和信息处理的概念是很重要的,因为它们在运行BlueLab应用软件时是一个整体.
Thesections2.1to2.3introducetheseconcepts:
2.1和2.3两节分别介绍了这些概念:
2.1Tasks
2.1任务
TasksarethebasicarchitecturalbuildingblocksusedtoconstructanapplicationandtoprovideaninterfacewiththeBlueCorefirmware.
任务是构建一个应用软件和提供一个与BlueCore固件相接触的基础。
Tasksprovidefunctionalitytotheapplicationi.e.aninstanceoftheappropriatetaskmustbeinitializedbythecodeinorderforthefunctionalityitsupportstobeavailabletotheapplication.
任务对应用软件提供功能性,即一个适当的任务是编写代码功能的基础,支持应用软件的功能性。
Ataskisbasicallyamessagehandlingfunctionandastructurecontainingthetask’scurrentstate.Alltasksarerunasasinglethreadi.e.tasksdonotexecuteconcurrently.
任务大体是一个具有信息处理功能和包含初始电流状态的结构。
各项任务都作为一个单一的线路运行,即不执行兼容。
Thetasksthatmakeuptheapplicationincludeatopleveltaskknownastheapplicationtask.Theapplicationtaskrespondstomessagesandcontrolsthebehavioroftheapplication.
编辑程序任务包括一个被称为应用任务的高层任务。
该任务回应信息并控制应用程序的行为。
Note:
注:
Morecomplexapplicationsmaydefinemorethanoneapplicationtask.
更复杂的应用程序可能会定义一个以上的应用任务。
2.2Messages
2.2信息
Messagespassinformationbetweenthetasksandareconstructedintheform:
信息在任务之间传递报告并构建成以下形式:
Taskt,MessageIdid,Messagepayload
任务t,信息Idid,信息有效载荷
Theelementsofamessagearedescribedbelow:
各项信息要素说明如下:
●Taskt:
Identifiesthedestinationofthemessagei.e.itisapointertotherecipienttaske.g.&AppTask.
●任务t:
识别该信息的目的地,即它是接收任务的一个指示器,例如:
&AppTask。
●MessageIdid:
isthemessagelabelthatallowsthetaskreceivingthemessagetoidentifytheappropriatefunctionwithinthehandlercode.
●信息Idid:
是信息标签,它允许任务接收信息以识别管理编码中适当的功能。
TheMessageIdidalsoimpliesthefieldsthatcanbeexpectedinthepayload.Thisallowstherequiredinformationtobeextractedbycastingpointerstothepayloadfields.
MessageIdid同时意味着该领域在有效载荷内可以被预计。
这使得所需的资料被指针提取到有效载荷领域。
Note:
注:
Byconvention,amessage’sstructureisalwaysenumeratedastheMessageIdwithasuffixof_T.
按照惯例,一个信息的结构总是列举有后缀T的信息Id。
Forexample,thestructureofthemessageCL_INIT_CFMisenumeratedasTypeCL_INIT_CFM_T.
例如,信息结构CL_INIT_CFM的列举类型是CL_INIT_CFM_T.
●Messagepayload:
Thepayloadshouldcontainanystatedatarequiredbythehandlerfunctiontocorrectlyreacttothemessage.Thepayloadisfreedafterthemessagehasbeendelivered.
●信息有效载荷:
有效载荷应包括任何数据处理功能所必需的正式数据,以便正确与信息起反应。
有效载荷在信息传输后被释放。
Tomaximizetheefficientuseofmemorythedatapassedinthepayloadshouldbekepttotheminimumrequiredbythemessagehandlingfunctiontoimplementtheappropriateresponse.
尽量有效的使用被有效载荷存储的数据,应该保持最低限度的信息处理要求以执行适当的回应。
Insomecases,themessageidalonemaybesufficient.Therefore,thepayloadfieldisoptionalandcanbeNull.
在某些情况下,只有信息id就足够了。
因此,有效载荷是可有可无的。
2.2.1MessageIDNumbering
2.2.1信息ID编号方式
ThebasenumberforMessageIDsadheretothefollowingconventions:
信息标识部分的基础数字需遵守以下公式:
●Messagessendbyatasktoitselfstartat0x00.
●一个任务的信息发送本身开始在0×00。
●Systemmessagesstartat0x8000.
●系统信息开始在0×8000。
●Messagessentbyspecificprofilelibrariestotaskshavebeenassignedbasevaluese.g.theconnectionlibrarymessagesstartatbase0x7000andtheSPPlibrarymessagesstartat0x6f00.SeeAppendixB.
●信息被特定的配置文件发送到任务并分配基础值,例如:
连接库信息初始基础值为0x7000和SPP库的信息初始值为0x6f00。
见附录B。
2.2.2SendingMessages
Anumberoffunctionsareprovidedtofacilitatethesendingofmessages,seemessage.hintheon-linehelpCReferenceGuide.
一些功能是为发送信息提供帮助的,参阅在线指南message.h。
2.3MessageHandling
2.3信息处理
Themessagehandlingfacilityforeachtaskmustbeabletosuccessfullyhandleallthemessageidsandstatesthatcanbepassedtoit.
每项任务的信息处理装置必须能够成功地处理所有信息的识别部分和状态,使其能够被信息处理装置传递。
Inpracticethedeveloper’smainresponsibilityistoprovidethemessagehandlingcodeforthemessagesthatwillbereceivedbytheapplicationtask.
在实践中,开发者的主要责任是为运行任务中接收到的信息提供操作代码。
Note:
注:
ThemessagehandlersforprofileandsupporttasksinitializedfromBlueLaborSDKlibrariesneednotconcerndevelopers.ThehandlersforthesetasksareimplementedbythelibrariesandareselectedasaresultofcallingtheappropriateInitfunction.
BlueLab和SDK库中的信息处理器和初始的支持任务未涉及到开发者。
这些任务的处理程序由库执行并选择,其结果是适当的Init函数。
Theapplicationmusthandlemessagesreceivedfromthelibrariesthatithasinitialized.
这项应用程序必须处理从已经设定初值的库中接收到的信息。
2.3.1MessageLoopfunction
2.3.1MessageLoop功能
TheMessageLoopfunctioncontrolsthemainschedulerloopandhandlesthedeliveryoftaskmessages.
MessageLoop的功能是控制主要调度程序循环和处理任务信息传输。
Messagesareaddedtothequeueintheordertheyareduetobedelivered.Theschedulerchecksthefirstmessageinthequeueandifduedeliversthemessagetotheappropriatetask.
信息按照传输顺序添加成列。
调度程序检查队列中的第一条信息,并且检查是否传输正确的信息到适当的任务。
Note:
注:
TheMessageLoopfunctionneverreturnsandthereforeisthelastfunctioncalledbeforethereturnstatementinmain.
MessageLoop功能从不返回,因此它是主程序返回语句之前最后一个被调用的程序。
Tasksandmessagesallowtheapplicationdevelopertosplittheapplicationupintocooperatingmodules(i.e.tasks)thathandlemessagesfromthefirmwareandeachother.
任务和信息让应用软件开发者把应用程序分成多个合作模块(即任务),操作固件(软件和硬件相结合)和其它部分中的信息。
3TaskandMessages,WorkingExamples
3任务,信息,运行实例
Thepreviouschapterintroducedtheconceptsoftasks,messagesandmessagehandling.
上一章介绍了任务,信息与信息处理的概念。
Thischapterlooksatworkingexamplestoexaminehowtheseprincipalsareappliedinsimpleimplementationsofcodeandgivesabriefexplanationoftheelementswithinthecode.
这一章着眼于运行实例,从而检查这些主程序在简单的执行代码上的应用,并且对代码的原理给出了一个简要的说明。
3.1Example1
3.1实例1
ThefirstexamplelooksatasingletaskapplicationthatflashesanLEDonaPIOpinwitharegularon/offperiodof500milliseconds.
第一个实例着眼于一个单一任务应用程序,该程序通过一个PIO引脚控制LED以500毫秒的频率闪动。
Note:
注:
Theapplicationhasbeenchosenforsimplicity,asitisoneofthefewexamplesthatcanberunonBlueCorechipswithoutusingtheconnectionlibrary.
该应用程序选择了一个最简单的例子,它是可以不使用关系库而直接在BlueCore芯片上运行的一些例子中的一个。
Todothisthecode:
操作代码如下:
●Definesastateforthesingletaskrequired.
●定义一个单一任务所需的状态。
●Definesahandlingroutineformessages(thatwillreadthestateofaPIOpinandswitchitatregularintervals).
●定义一个信息处理程序(即可读取PIO引脚状态并每隔一定间隔进行状态转换)。
●SetsthePIOasoutput.
●设置PIO作为输出。
●Declaresaninstanceofthetaskandinitializesit.
●命名一个实例任务并把它初始化。
●Sendsaninitialmessagethatwillinvokethehandlercode.
●发送一个初始信息,它将调用处理代码。
●CallstheMessageLoopfunction.
●调用MessageLoop函数。
3.1.1TheCode
3.1.1编码
Figure3.1:
LEDFlashingApplicationExample1
图3.1:
LED闪动的应用实例1
3.1.2AnalysisofCode
3.1.2代码分析
1.Thecodeemploysfunctionsdeclaredinthemessage.handpio.hheaderfilessothefirststepisto#includethesefiles:
程序中使用的部分函数在message.h和pio.h标题函数中已被定义,因此第一步要#include(调用)这些文件。
2.ThenextlineofcodedefinesavariableusedtosetamaskthatidentifiesthePIOpinnumberthattheLEDisattachedto(inthisexamplePIO6):
下一行程序定义了用于设置掩膜的变量,这样可以识别LED附属的PIO引脚的数值(本实例中的PIO6)。
3.Thenextstepistodefineastructureforthetaskstate.Thisisdoneusingthet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CSRBLUELAB 任务 信息 信息处理 入门