建立一个属于自己的AVR的RTOS
- 格式:pdf
- 大小:249.80 KB
- 文档页数:36
互联网上下载AVR STUDIO 4首先,请放松,我们首先要做的只是下载AVR开发软件和相关的资料。
下载前确保这些软件有效,下载的时间取决于你连接互联网的速度。
下载以下文件到你的计算机中(如C:\Temp)∙AVR STUDIO4:这个文件是一个完整的开发工具,包括编辑、仿真功能,利用这个工具,我们可以编辑源代码,并在AVR器件上运行。
这个文件大概15MB。
∙代码实例:这是一个用于演示完整代码,大概1KB。
∙AT90S8515数据手册:这是AT90S8515芯片的完整资料。
AT90S8515芯片是一款非常容易上手的AVR芯片。
现在你不用担心AVR其他型号的产品,以后你会发现AVR系列产品有非常大的相似性,你掌握了一款芯片(比如说8515),学会其他芯片也非常容易。
这个文件大概4MB。
∙指令说明:如果你要详细的了解各种指令的话,这个文件非常有用。
这个文件大概2MB。
如果以上的文件你都下载了,下面的工作就是安装软件了。
安装AVR Studio 4AVR Studio现在也提供版本3,不过版本4将逐步替代版本3。
使用Windows NT/2000/XP的用户请注意,安装AVR Studio软件时,必须使用管理员(Administrator)权限登陆,这是Windows系统限定只有管理员才可以安装新器件。
安装过程:1.双击AVRSTUDIO.EXE文件。
这是一个自解压文件,双击后系统询问将文件解压到哪个目录底下,一般情况下是放在系统默认临时目录下,这个目录是隐藏在你的硬盘中的。
为了记忆方便,一般输入指定的目录,如C:\temp。
2.当所有文件解压缩完成以后,打开temp目录,双击SETUP.EXE文件。
好了,开始安装了,推荐适用默认的安装路径,当然,用户也可以设定自己的安装路径,但是在指南中,我们使用默认路径。
好了,开发工具安装好了,就这么简单。
现在你可以开始编写代码,在AVR器件上运行了。
注意,将芯片资料和指令说明放在旁边,这些资料以后经常用到。
、建议工程文件AtmeIStUdi6.0这个全新的环境使用起来极其不顺手,因为首先我对AtmeIStUdiO以前的版本也根本没有使用经验,就根据很陌生,其次,这个新版本软件还根本没有人用,根本没有任何的相关教程资料,唯一可以参考的只是官网的比较简单的视频教程,还是英文讲解,反正没怎么搞透。
不过还是硬着头皮用下去,因为软件是免费的,而且当后來我知道代码编辑环境其实就是微软VS环境的时候,我就更不犹豫了,大家应该都了解VS的代码编写环境是很智能的,尤其自动补全功能。
现在,我己经能很熟练的使用AtmelSUdio6.0软件了,随若使用我也更加喜欢玩AVR单片机做一些小作品了,而不再用普通51和SrC了。
当使用熟练以后也就感觉到其实这个免费智能的编译环境其实是很简单的,那现在我就帮助更多喜欢使用AVR而没用使用AtmeIStUCliO软件的同学们轻松越过这一个门槛,进入一个美好的编程世界。
该软件的不足之处:一是软件相对较大,打开比较慢,但是运行还是比较顺利的;二是不支持山寨仿真器,这可苦了没钱的劳苦电工们了。
(不过我都是用ISP烧求调试,一般不用仿真)最下而附件有一个简单的LED_test工程文件,编译通过的。
大家可以试用。
下面开始介绍的软件工程的建立。
1. 软件总界面总体界面还是比较简洁的,和其他编译软件都是差不多的,而Jl•和KEIL软件的界面是很相似的,使用很方便。
•SiΛPage・.:m∙Ytvdkl‰dπvΛ⅞r∙Mo<ι曰T W rWV,Mι⅛t×ΛΛfPrqeCtOaQTOd‰WirHRPJj∙4)JfiJr¾ɔ⅛∙'∙';TJ Clo$«NKafterProxet⅛>ad J S*>OWp»®ecoy∣owCUtPHt⅛oαr2. 新建工程新建工程很简单:FlLE->NEW->Project然后就看到下而的新建工程界而了,选择第一个GCCCEXeCUtabIeTS就可以,第二个GcCCStatiCLibrary是用來新建.h文件的。
AVR教程(4):AVRStudio仿真调试快速入门发布: 2010-1-10 12:30 | 作者: tiankai | 来源: 电子园AVR单片机学习专区AVRStudio仿真调试快速入门[p=30, 2, left] ● AVRStudio的安装到 ATMEL 官方: .atmel./dyn/products/tools_card.asp?tool_id=2725 下载安装。
● AVRStudio之建立、打开相关调试文件--使用汇编语言,软件仿真若使用汇编语言进行源代码的编写,由于AVRSTUDIO自带ASM编译器,可以直接建立、打开。
[/p][p=30, 2,left][/p][p=30, 2,left][/p] 接着,进行代码编写,之后按进行编译。
--使用ICCAVR,软件仿真若使用C进行编写,由于AVRSTUDIO不带C编译器,所以需要打开相应的调试文件。
打开*.COF(使用ICCAVR编译器编写源代码)或*.D90文件(使用IAR 编译器编写源代码)。
这类文件与您需要调试的*.C文件所处同一文件夹。
下面以ICCAVR为例,进行介绍。
接着,保存*.aps文件,改文件将记录目标芯片、文件路径等信息。
在打开项目文件的时候,如下图:选择“AVR Simulator”,右边选择实际使用的器件型号,之后点击“Finish”即可进行软件仿真。
选择完成后,即可进行仿真调试了。
[p=30, 2, left] --使用JTAGICE仿真器,硬件仿真与软件仿真不同的是:在打开项目文件的时候,如下图:选择“JTAG ICE”,其它的步骤与软件仿真一致,见上。
[/p]--使用JTAG ICE mkII仿真器,硬件仿真与软件仿真不同的是:在打开项目文件的时候,如下图:选择“JTAG ICE”,其它的步骤与软件仿真一致,见上。
● AVRStudio之调试程序下面简单介绍使用AVRStudio进行仿真调试调试控制栏调试控制栏可以控制程序的执行状态,所有的调试控制都可以由菜单,快捷键和调试工具栏实现。
建立一个属于自己的AVR的RTOS (mega128)2009-09-26 16:46对原作者黄健昌先生表示由衷的感谢,正是这篇文章给我学习嵌入式操作系统铺平了道路,循序渐进、受益良多,由于正在使用mega128做项目,编译器为WinAVR20080610,所以将原文中的实例做了改动,并在开发板上进行了验证。
出于对原作者的尊敬,只对原文做一些必要的改动,基本上维持原貌。
第一篇:函数的运行在一般的单片机系统中,是以前后台的方式(大循环+中断)来处理数据和作出反应的。
例子如下:makefile的设定:运行WinAvr中的Mfile,设定如下MCU Type: mega128Optimization level: sDebug format :AVR-COFFC/C++ source file: 选译要编译的C文件#include <avr/io.h>#include <avr/Interrupt.h>#include <util/delay.h>void fun1(void){unsigned char i=0;while(1){i++;PORTC=0x01<<(i%8);_delay_ms(200);}}int main(void){DDRC=0xFF;fun1();}首先,提出一个问题:如果要调用一个函数,真是只能以上面的方式进行吗?相信学习过C语言的各位会回答,No!我们还有一种方式,就是“用函数指针变量调用函数”,如果大家都和我一样,当初的教科书是谭浩强先生的《C程序设计》的话,请找回书的第9.5节。
例子:用函数指针变量调用函数#include <avr/io.h>#include <avr/Interrupt.h>#include <util/delay.h>void fun1(void){unsigned char i=0;while(1){i++;PORTC=0x01<<(i%8);_delay_ms(200);}}void (*pfun)(); //指向函数的指针int main(void){DDRC=0xFF;pfun=fun1; //(*pfun)(); //运行指针所指向的函数}第二种,是“把指向函数的指针变量作函数参数”#include <avr/io.h>#include <avr/Interrupt.h>#include <util/delay.h>void fun1(void){unsigned char i=0;while(1){i++;PORTC=0x01<<(i%8);_delay_ms(200);}}void RunFun(void (*pfun)()) //获得了要传递的函数的地址{(*pfun)(); //在RunFun中,运行指针所指向的函数}int main(void){DDRC=0xFF;RunFun(fun1); //将函数的指针作为变量传递}看到上面的两种方式,很多人可能会说,“这的确不错”,但是这样与我们想要的RTOS,有什么关系呢?各位请细心向下看。
从零开始全面打造avr开发平台(avrgccide)本文讨论如何大造一个适合自己的软硬件开发环境,主要介绍avrgcc的windows下的集成开发环境avrgccide的使用及一些必备的硬件工具。
1,软件环境当前,常用的avr的编译器有atmel的avrstudio,iaravr,iccavr,codevisionavr,avrgcc,还有基于bas的几种软件。
调试器有avrstudio,iaravr,avrgcc,其他两种软件没有自己的调试器。
Iaravr,iccavr,codevisionavr都是商用软件,使用要支付大量的费用。
尤其是iaravr费用很高不是普通爱好者能够接受的。
(盗版例外)avrgcc是gnu组织开发的免费软件,功能强大,免费的资源较多,是我们学习的好选择。
但是使用较为复杂,入门很难。
有没有办法让使用avrgcc变得容易,avrgccide就是在这种环境下开发出来的,它可以让使用avrgcc像其他如iccavr一样简单,并且它集成在线下载器,可以让你的思想马上转变为现实,集成超级终端让您调试串口更为容易。
调试可通过它产生的.cof与avrstudio无缝结合或生成elf文件用avr-gdb调试(太繁琐不建议)。
目前它是免费的。
(关于avrgccide可以与mcu598@讨论) 2,安装avrgccide下载avrgccide包解压,双击setup安装,下一步,下一步直到安装完毕,下载最新的avrgccide解压覆盖同名文件,安装完成。
3,创建项目启动avrgccide,选择new project,选择工程目录输入工程名保存,添加文件(这里介绍的是usbasp的编译,以后还要使用这个usb的下载线呢—mega8的软件实现usb)。
下载usbasp包,将fireware目录下的文件解压倒您的工程目录。
将鼠标移到avrgccide的工程栏右击鼠标,将所有的.c,.s文件添加到工程。
简单方便自制的几个AVR/51 ISP编程器(下载线)AVR单片机有许多优点,我也是个忠实支持者,是从51过度到AVR的,中途还学PIC,初学51时买了学习板,液晶屏等不少东西,有经验后,学AVR时就从自制的下载线开始了,注意,这只是个开始,简单的东西总存在着一些局限性,但对于初学者来说,这可是个非常有用的东西,有了它就可以开始学习AVR单片机,甚至是一些开发了,这些编程器都是出自网上流传的,虽然我也不是很清楚出自那位高人,但感谢原作者.以下分享我的自制经验.1.由于AVR的编程方式有并行高压和串行ISP (In System Program 在系统编程)方式,高压并行编程能修复一些错误的配置位,但这并不常用,因为并行通信其布线会较多,不便于在成品中预留编程接口,也不便自制,而串行的ISP是基于SPI(Serial Peripheral interface)通信方式的,SPI通信时只需三根数据线, 分别是SCK,MISO,MOSI,再加上VCC,GND,Reset共需6根线,而VCC是可选的,用于向目标芯片供电,或由目标板反供电给编程器.那么设计目标板时,最少只要保留6根线,以后就可随时烧写,升级芯片上的程序了.而无需将芯片取下.这是ISP方式的最大特点,具体6根线连到那个引脚,不同型号不一样,要看芯片引脚定义图,例如ATtiny2313引脚定义如下:至于编程接头,尽可能以官方的10针接口为准,也可像我一样自定义一个6针的,因为我更喜欢水晶头,其实都是排列不同而已,只要再制作一条线进行转换就什么都搞定了.2.基于并口的ISP下载线,我最初也是自制了这款,这种下载线可以下载AVR全系列和AT89S系列51单片机,成本较低,不过需要PC机有并行口,许多笔记本电脑现在都没有并口了,比较麻烦,市场上卖的USB转并口,大都是用于打印机的,无法使用.以上是原理图,74HC244是用于信号的隔离驱动的,它从目标板经4148供电,由于ISP编程器只有4根是信号线,实际上我用了74HC125取代74HC244,以减小体积和引脚焊点数.下面是我使用的原理图,和成品图片:元件全装在内部,整体就很美观了,注意下载线不宜过长,最好50cm以内,PC上位机软件很多都可以支持的像双龙的SLISP,PonyProg2000(但51的型号很少,2.0a 版中也只有两个),智峰的progisp试过都成功烧写和效验.不足是烧写速度偏慢,综合来说还算满意.如果首次不成功,可能是软件设置问题,双龙的几乎不用(或说是不能)作什么设置,PonyProg200和Progisp或许需要设置一下才能把它使用得更好,比如Ponyprog用直接IO方式要比API方式快些,而Progisp它的端口引脚是可以自定义的,如果不同,把它设为和原理图一样不可以了.否则根本就用不了.3.基于串口的ISP下载线.,因为之前还在用51做些板子,初看这电路时,觉得由于reset在默认上拉,认为不适合51系列(51是高电平复位),并且更重要的是ponyprog2000的器件列表也没 89s52这型号,所以一直没去做过.但如果只对AVR编程来说,这个也是非常好用的.其中6,7端口必须直连,Ponyprog程序用来检测是否插入此接口,制作完成后试过还可以,速度和并口的差不多,只是必须要用PC机上的物理串口,用USB转串口的就无法使用.我起初觉得可能是驱动能力问题,曾用74HC125对它隔离驱动,花了时间却不成功,用示波器观察四条线的时序,发现原来是USB转串口线有问题,它的SCK(7脚),输出像随机的方波,而从物理串口出来的SCK时序,其频率在20K 左右,并连续稳定,如下图,这也许是USB转串口芯片的问题,才20K频率,难道被当燥声给滤掉了??请有了解的朋友请帮我分析一下,但这条转换线是好的,目前正在用它为ARM系统进行通迅,下载都很正常,芯片型号没打开看,驱动名称是Prolific USB-to-Serial Comm Port.有WHQL的,应该没问题,下面是我的原理图(我参考并口那个画的),实物,与波形.示波器测量时是直接测量转接口,未接下载线,通道1(绿)是物理串口的,通道2(黄)就是USB转串口的,已用示波器量了9个脚,不会错的,由于目前在学ARM9系统,已对这些问题放低了,对它有研究的朋友请告诉小弟,解决这小点问题,可以把它当USB的编程器用了!此线直接插到物理串口上,仍然可用.4.当制作完成这样简单的编程器后,就可以开始学习AVR或8051单片机了,熟悉后可以制作一个USB接口的编程器,USBASP,它内部是用一块ATMega8单片机来模似USB时序的,所以制作它的前提是至少需要一个编程器,例如上面的,将程序写入单片机中.这最好是在熟悉AVR的情况下制作.我是根据网上的公板图自己重画了这张原理图,来方便自己制作.晶振必须为12MHz,否则不可能完成USB时序的模似,单片机可以用低压版的ATMega8L 8PU超频使用,USB的数据线上的电压是3.3V,最高不超过3.6伏,那两个稳压管也就必须是3.6伏的,至于其它元件,其取值有些偏差影响也不大,JP1跳线是强制低速工作的,比如烧写那些有内部有RC振荡的单片机,首次使用就可能要用低速模式,因为其默认就是使用1M的内部振荡.由于USB供电已足够使用,JP5通常保持断开就可以了,JP3只在烧写或更新此编程器固件时使用,平时必须断开,整个电路其实很少东西,JP2连接USB线,或USB公头时要注意顺序不要搞错,上面这个PCB是专为万用板,有人叫洞洞板画的,并且4个LED位置是焊插针的,用来引出到外壳,这个单片机是直插的,建议不要焊上去,而是使用IC插座,当把电路做完,用表量一下确认无误后,插入USB口,此时PC端应该提示为无法识别的USB设备,不必理会,接着开始烧写固件,先短接JP3,再用另一个编程器通过编程口将程序写入Mega8单片机.此过程和平时烧写目标板是一样的.确认成功烧写和效验后,接着烧写熔丝位,这步主要就是设置单片机为外部晶振工作模式,设置熔丝时要小心,如果点错的话,先点恢复默认,再去修改.否则后果难以意料.下面分别是Ponyprog,progisp和SLISP的熔丝设置界面:注意不要设错,完成后将JP3取下,拔下并重插USB,如无意外,你会看到发现新硬件这样的提示,然后装USB驱动,就算大功告成了.至于软件目前就智峰的Progisp支持得比较好.因为经常用,最好是搞外壳保护它,我是在壳体店买的小盒,总之都是小问题了.那个低速开关我是用另一个8脚的单片机.实现按键检测,电平求反输出,和将状态保存到片内EEPROM进行记忆来实现的自锁开关,因为这是我后来扩展的,并且是用了PIC的12F629单片机,这些用AVR单片机(如Tiny13)实现都很简单,就不多说了,不过想它反应得好些要下些功夫,或者是直接用机械的自锁开关来实现.至此,可以慢慢享受自己的成果所带来的乐趣了.USBASP制作资料已打包,有兴趣的朋友可下载学习研究:(用浏览器打开,单线程下载)/self.aspx/.Public/MCU/u sbasp.rar。
AVR单片机项目开发实践教程项目一AVR单片机系统开发与设计工具1.硬件工具准备首先,我们需要准备一些硬件工具来进行AVR单片机的开发。
常见的硬件工具包括:-AVR单片机开发板:包含一个AVR单片机芯片、外部电路和接口等。
-调试器:用于调试和监视AVR单片机芯片的运行状态。
2.软件工具准备- WinAVR:是一个开源的C语言编译工具链,可以将C语言源代码编译成可执行的机器码。
3.项目开发实践接下来,我们将以一个简单的LED闪烁项目为例,介绍AVR单片机的项目开发实践。
步骤1:硬件连接首先,将AVR单片机芯片插入开发板中,并将开发板与计算机通过编程器连接。
确保连接稳定和可靠。
步骤2:编写代码```c#include <avr/io.h>#include <util/delay.h>int main(void)DDRB,=(1<<DDB0);//设置PB0引脚为输出while (1)PORTB,=(1<<PB0);//将PB0引脚设置为高电平_delay_ms(1000); // 延时1秒PORTB&=~(1<<PB0);//将PB0引脚设置为低电平_delay_ms(1000); // 延时1秒}return 0;```步骤3:编译代码使用AVR Studio或WinAVR等工具,将C语言源代码编译成可执行的机器码。
编译成功后,将生成一个.hex文件。
步骤5:调试和测试使用调试工具,对AVR单片机程序进行调试和测试。
可以监视变量的值、跟踪代码的执行过程,以及分析程序的性能和效率。
AVR单片机的RTOS-AVRX应用摘要:详细介绍AVR系列单片机的专用实时嵌入式操作系统AVRX的特点,并以ATmega16单片机为平台,结合AVR单片机应用实例分析AVRX的内核代码及移植方法,并对系统的相关性能进行测试。
采用AVR X可以大大简化程序设计,满足实时要求,降低编程难度,提高系统可靠性。
本文为在AVR单片机上进行嵌入式系统开发提供了参考。
关键词: RTOS AVRX AVR单片机移植系统测试引言随着技术的发展,嵌入式系统的设计及应用对人们的生活产生了很大的影响,并将逐渐改变人们未来的生活方式。
在特定的操作系统上开发应用程序,可以使开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便、易于维护、开发周期缩短并且降低开发成本,因而嵌入式操作系统深得开发人员的青睐。
AVR微处理器是Atmel公司开发的8位嵌入式RISC处理器,它具有高性能、高保密性、低功耗、非易失性等优点,而且程序存储器和数据存储器可独立编址,并具有独立访问的哈佛结构。
AVR单片机内核有丰富的指令集,通过32个通用寄存器直接与逻辑运算单元相连接,允许在一个周期内一条单一指令访问两个独立的寄存器,这样的结构使代码的执行效率比传统的复杂指令集微处理器快了将近lO倍。
AVRX是由lbarello编写的源码公开的嵌入式操作系统,它专门针对AVR系列单片机的RTOS,具有免费和可以修改的特点。
它的缺点是由于做为一种专用的操作系统很难移植到其他平台上。
1 AVRX系统的特点AVRX做为AVR专用RTOS有如下的特点:◆完全支持占先式、优先级驱动的任务调度算法;◆16个优先级,相同的优先级的任务采用Round-robin调度算法轮流执行;◆信号量可以用于信号传递、同步和互斥信号量,支持阻塞和非阻塞语法;◆任务之间可以用消息队列相互传递信息,接收和确认消息可以用阻塞和非阻塞调用;◆在中断子程序中,大部分非阻塞的中断服务程序可以使用;◆支持单个定时器的时间队列管理,任何进程都可以设置一个定时器,并且任何一个任务都可以等待定时器时间到;◆支持单步调试运行着的进程;◆程序空间小,包含所有功能的版本占用1000字节;◆与定时器/计数器有关的一些事务可以用AVRX写成任务级代码。