《嵌入式程序设计实训报告.docx》由会员分享,可在线阅读,更多相关《嵌入式程序设计实训报告.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式程序设计实训报告一、实训目的1 .掌握任务同步机制:信号量。2 .掌握信号量实现生产-消费问题应用实例。二、实训基本原理1 .生产消费问题是一个经典的数学问题,要求生产者一消费者在固定的 仓库空间条件下,生产者每生产一个产品将占用一个仓库空间,生产者生产 的产品库存不能越过仓库的存储量,消费者每消费一个产品将增加一个仓库 空间,消费者在仓库产品为0时不能再消费。2 .信号量主要用来实现任务间同步,标识某类资源可用个数,或者说, 对于某个特定资源,可以供多少个任务同时使用。三、实训要求1 .对于生产者来说,其需要申请的资源为仓库中的剩余空间,因此,生 产者在生产一个产品前,申请sem_pr
2、oduce信号量,当此信号量的值大于0, 即有可用空间,将生产产品,并将sem_produce的值减去1 (因为占用了一 个空间);同时,当其生产一个产品后,当前仓库的产品数量增加1,需要 将sem_custom信号量自动加1。2 .对于消费者来说,其需要申请的资源为仓库中的产品,因此,消费者 在消费一个产品前,将申请sem_custom信号量,当此信号量的值大于0时, 即有可用产品,将消费一个产品,并将sem_custom信号量的值减去(因为 消费了一个产品),同时,当消费一个产品,当前仓库的剩余空间增加1, 需要将sem_produce信号量自动加1。四、实训仪器设备1 .支持安装运行VM
3、ware虚拟机的笔记本2 .安装并破解Keil uVision3软件。五、实训步骤1 .安装并破解好keil uVision32 .找到并打开串口程序sem32中的demol. Uv22 Windows XP Protwttxwl VMware Wortcstabon如(D wwoj ft#(v)ma取m)星的qd | -与 a E B B a1 0 0RMa,3RMa,3G Window% XP PiofeMionalWindows XP PcofeswondlWindows XP PcofeswondlQ中涛远见开发环境V1?BV3.0IQ ubuntu 1604 (RHEL7-3-0.
4、d .叫网 3夕,6le10y void nnn,v“dOSIfiltO;I, J23OS.tr. 3OS.CT. 3Srrt. QferUl. cL:1C:116 弊osrsxcteatT3He gt gjea 皿q BlocM ACS 忡8 *XnitTiaexOO lInitSeciftlBuffecO:veld , . :Tskl_psorid Taskl-produTor 1! Rdam xwmtrant; void I ask J custcaex vld 卜xentxant.void TAik3 :void ppdaxal rentrantOS.srx T3lcl_produce
5、cStk(NaxStkSize: M 立:?;.; / 4 :? 一 0213TK Taalt2cuatOBetBtic (NAxStkBizt J J8二3TK Taalt3Stk(MaxSUSizej;8_VEHTt8:。匚EVINT ,5 二 XOgOe;Q-匕:一-3*9vr*e Wvpr w 名 RMU tfiCSUUB: rwi 如 Soret Gro4)|i g danoic,054PUC* jKosjrc XOSFVJkA要两6人定的*1机.清将以标邮博入H中磁CHUG.3.为其添加lib库C51L. LIB,并删除自带的lib库C51L. L1B01 日#include 01
6、 日#include 02030405060708091011121314void void voidTa:Ta:Ta:OS_STK 1 OSSTK OSSTK 1 oseven OS-EVEN,void ma15316171819202122OSI:Add Files to Group Source Group 1查找范围(D: |OLIB1C51BCLIB3C51BFPC.LIB 1C51BFPL.LIB 1C51BFPS.LIB1C51BL.LIB1C51BS.LIB1C51C.LIBC51DS2A.LIB gC51DS2T.LIB SC51FPC.LIB 画 C51FPLUB国 c51
7、mc,lib 二I - O Wndom XP Pro4c、,ioMl。君运兔开发球境VI ?B V30C Ubuntu6.04G RHEL 7-3匚 HMISMSI陕 E M Reject Qetug F。locte S*CS gJ u u B r - AlH3 ” -旧 回 g|Bj Bfc - o =:间情 我回h回nt w I V01 finclude 英 0) o 050, o 01ld Tarr, producecvoid rpdatai reentrantA TaaKIfi”。r, tv,d *(plat4l veentiant void Ts3c3 Told *ppcerSt4
8、|Hix3ttSi:eJ; / aS. 混江 A/文伴XUCnKJod.8 87K TASIC2 custcaerStX: |Mx3tWiz;e-8W msK3款IC IIUx3t“Hel;void tan. void.oexnito;SnitTutatCsei cu3tmcestaetd;iwreuUART1-:- Izi 二一 二一二三二二七二工三三. 季隹栉隹运芒雪有淳运yTMrl:r t:720?2屋“ , , ,切汜停转。】;以在会餐tt先我任孑里,OS打J怙3用TSSLHMMhty :策-4 =*r*先生光级, E “:clcscrO;B Wl.c QC.C7. Qos.CP. Q
9、 rri. QrUI. 9 Jlr It:0rXT Lur* A“rhl,Figs /tl:0C02501tiiK安可喻人正育撕蒯Wm. UWKl标旧入H中或被CbUQ6.再进行串口程序seni3调试,分别同以上步骤。 void Taskl_producer (void *ppdata) reentrant (INT8U err_p;ppdata=ppdata;ETO=1;clrscr ();PrintStr (ntt*n);PrintStr(tt* Hello! The world. *n); PrintStr (tt*nnn);for (; ;) OSSemPend (sem_produc
10、e, 300*0S_TICKS_PER_SEC, &err_p); if (err_p-=0S_N0_ERR) bufferinput=rbuf;for (k=0;k=5) input=0;rbuf=,A;)OSSemPost(semcustom);OSTimeDly(OS_TICKS_PER_SEC);void Task2_customer(void *ppdata) reentrant(INT8U err_c;ppdata=ppdata;for(; ;) OSSemPend (sem_custoni, 0, &err_c);if (err_c=0S_N0_ERR)odata=buffero
11、utput;bufferoutput=O;PrintChar(odata);PrintStr (n);for(j=0;j=5)(output=0;)PrintStr (,zttttThis is Task2 clistonier. n);OSSemPost(sem_produce);OSTimeDly(OS_TICKS_PER_SEC);void Task3 (void *ppdata) reentrant(ppdata=ppdata;for (; ;) PrintStr (z/tttttThis is Task3. nz/);OSTimeDly(6*0S_TICKS_PER_SEC);文件(
12、D M(D fiW(V) AHVUM) JW-EO) XH)C RHa 7-3Q fn30 fttXI HA 阳0 ta8B)工具(D BQOC MUK *f-9 rror(t). 0 warning )41 - Mrrotoft Aviatf C bufftr2p0Xf*(3 户 0xfff 】:ebuff”。卜 3“f* =0buff”卜 ebuffr(2p3buffer(3p0buffpr(4i)=9buff*r(2p3buffr(3pr(23buffr(3p(itor9input:3 O9*output1input3 tof69*-output2.殖.dtor9*input torA9
13、*outputs1Window* XP ProfcsuonalCiS83itF.-Mflndowt XP Ptofewton 立6VI28 Vi 0IQ ubuntu 16.04I0RME17-3,共费喇机jfrr(e)0 buffr(1p0tord9*input6torw3tput2jff*r(e)-e bufftr12tor9*atnput2toro9*outputs1jffr(epO buffr(1)se tor*9InputM lorwoutput,2调就X在文件1中查N)JIK人定由9WMK1矶.J将占标181,临入H中电检CHIG.,六、实训体会本次的实训实是培养我们综合运用所学知识,发现、提出、分析和解决实际 问题、锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。在经过了这么多天的摸索与实验,我们终于完成了课程设计所要求的内容,有了 一个圆满的结果,但这其中的过程却是很曲折的。虽然在做课程设计以前我们已 经系统地学习了课本上是内容,但是理论与实践往往会有一些差距,在一开始拿 到课题我们还是没有头绪。经过上网查询并学习,在实验过程的每一步我们都做 了大量的尝试,倾注了我们大量的时间与心血,曾经为程序的编写冥思苦想过, 为无法找出错误郁闷苦恼过,也为某一功能无法实现犹豫彷徨过,但是在老师的 帮助及大家团结一心下,难题都被一一克服,我们最终成功调试。
限制150内