Linux下AT90S8515单片机GCC编程点灯实验纪实

原创 2003年09月10日 11:29:00
 

LinuxAT90S8515单片机GCC编程点灯实验纪实<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

唐铁鑫

    看着那发光二极管一闪一闪的,我的高兴得又蹦又跳。成功啦!对于一个新手来说,这第一次太难忘了。

    ……

    CSDN的论坛听说过AVR,下载编程之类的东东,在网上搜索相关资料时发现了Linux focus上有一篇Guido Socher写的《AVR单片机GCC编程》,觉得有可操作性,于是把相关的资料、软件下到了硬盘。

可是,跑遍了广州的电子商店都找不到AT90S4433,只有AT90S8515,怎么办呢?从网上看到《AVR高速嵌入式单片机原理与应用(修订版)》的介绍,到书店找来看了看,发现两个片子下载编程的原理是一样的,只是引脚有些不同,不如就……

 

硬件制作:

到电子城买来以下东东:AT90S8515单片机(比OTP51片贵了n倍,n>5)一个,40脚普通锁紧插座一个,30pf的陶式电容两个(我找不到27pf的,不过就我所了解的,起振用1030pf都行),4M晶振一个,聚酯板一块,DB25并口一个,单排针、双排针各一排(其实也可以不用),电阻、发光二极管我是从坏了的显示器上卸下来的。电阻我没有470欧的,用100欧加380欧串联代替,我把三节1.5V电池用导线串联焊在一起做的电源。

一切都齐了,动手吧。按照Guido Socheravrledtest-0.1.tar里的原理图,根据《AVR高速嵌入式单片机原理与应用(修订版)》上AT90S8515的接脚,重画了原理图。很简单,我描述一下吧:6PB5MOSI)串联480欧电阻接并口2针,7PB6MISO)串联220欧接电阻并口11针,8PB7SCK)串联480欧电阻接并口2针,9PB8RESET)串联480欧电阻接并口16针之外再连10千欧电阻接电源正极(VCC),15PD5串联1千欧电阻和一个发光二极管(注意方向)后接电源正极(VCC),18XTAL219XTAL1接晶振和起振电容(标准接法),振荡电路GND、单片机20脚(GND)、并口18针(GND)接到电源负极,单片机40脚(VCC)接电源正极。

做板子,你肯定要有焊锡、烙铁、导线和万用表等东西。做好后,检查线路有没接错,用万用表测测电路通不通,电阻、电容有没坏,然后就搞定了。

 

软件安装:

软件我开始想用我已经有的Redhat 7.0,结果没有ppdev的补丁,于是装Redhat 9.0(即7.3Linux内核2.4.18)。这Redhat 9.0,在我的intel 810上装了56遍我才明白,你不给810的显卡分配4M以上的内存,Xfree86-4Sever它就启动不了,倒霉!

没有gxtar的话,你要会用gzipbzip2tar解压;都是源代码安装,你要会;另外,以root身份操作。安装方法我不详细讲了,参照Guido Socher的《AVR单片机GCC编程》。提醒注意:1、装完binutils-2.11.2后一定要添加/usr/local/atml/lib这行到/etc/ld.so.conf文件里面,并运行/sbin/ldconfig命令重建连接器缓存,如果忘了,你要从这步开始往后重装一遍;2、装avr-libc-20020106前,有

export CC=avr-gcc
export AS=avr-as
export AR=avr-ar
export RANLIB=avr-ranlib
export PATH=/usr/local/atmel/bin:${PATH}

几步,用export命令看看你的环境设置的path是什么样的,那就是这里的 ${PATH}所指的,千万不要直接输入export PATH=/usr/local/atmel/bin:${PATH}后敲回车,那不对,或者到你的root目录下,把隐藏文件显示出来,配置你的.bash_profile文件,加入:/usr/local/atmel/bin路径,重启系统,这就一劳永逸了;3、千万记住,Linux下是区分大小写的,我在Win下解压的uisp-20011025,到了Linux下就不能make,原来DAPA.C变成了dapa.c,真是气死我了!折腾了半天。

   安装好后,解压avrledtest-0.1.tar,因为我用的是AT90S8515,所以,把解压后的avrledtest-0.1文件夹里的avrledtest.hexavrledtest_pre.hex删了,那是AT90S4433的。用Gedit或其他文本编辑器打开makefile文件,把MCU=at90s4433改成MCU=at90s8515,把

# here is a pre-compiled version in case you have trouble with

# your development environment

load_pre: avrledtest_pre.hex

    uisp -dlpt=/dev/parport0 --erase  -dprog=dapa

    uisp -dlpt=/dev/parport0 --upload if=avrledtest_pre.hex -dprog=dapa -dno-poll -v=3 --hash=32

#-------------------

这一段删掉,因为我要重新编译一个MCU=at90s8515的avrledtest.hex,如果development environment有麻烦,那就完成不了啦!

 

测试:

搞定makefile后,把硬件上的并口接到电脑打印口,接通电源;然后,打开linux的console,进到/sbin目录下,lsmod看看有没

parport_pc
ppdev
parport

如果没有,要用

insmod parport_pc
insmod ppdev
insmod parport

可能这样parport还不能加载,再insmod一次。用lsmod看看,确定都加载了,进到avrledtest-0.1目录里,输入

make

顺利的话avrledtest.hex就产生了,然后

make load

make load了三四次,因为我的板子有毛病,检查了好一会才搞好。我make load成功的画面是console里出现

uisp dlpt=/dev/parpart0 erase dprog=dapa

Atmel AVR AT90S8515 is found.

Erasing Device

……

Uploading:flash

#####

(total 146 bytes transferred in 0.68s (216 bytes/s))

Polling:count=145,min/avg/max=3.00/3.14/12.08ms

OK,下载到芯片了,拿开并口,断电,重新接通,片子就reset了,发光二极管一闪一闪的。点灯实验成功了,以后就可以自己做其他的实验了,AT90S8515flash可以刷1000次。Cool!原来做单片机实验也可以这么便宜!仿真机、编程器都省了。(不过,十几片AT90S8515多出来的钱,都可以买编程器了。开发产品还是要用仿真机、编程器)。

 

如果你做不出来,可以和我联系,netscaner@sina.com.cn

PIC单片机编程 (点灯程序)

IO口控制方向寄存器 TRISA~TRISAE            比如 TRISB=0x00; //  1为输入,  0为输出  ,  这样就把portB端口全部设为输出 数据寄存器 PORTA~...
  • mckend
  • mckend
  • 2010年10月15日 12:19
  • 545

AVR单片机GCC编程

Atmel公司的AVR 8位RISC单片机是一种非常普通的单片机.它是一个具有电擦写可编程只读存储器(EEPROM),随机访问存储器(RAM),模数转换器,大量的输入和输出线路,计时器,RS-232通...
  • zxxSsdsd
  • zxxSsdsd
  • 2013年11月02日 20:10
  • 969

【51单片机】六种亮灯方式

51单片机中关于点亮灯管的简单程序: (1)点亮第一盏灯: #include sbit D1=P1^0; void main() { D1=0; } 若要点亮第二盏,改为...
  • LDan508
  • LDan508
  • 2016年03月30日 18:39
  • 1760

单片机C51 - 串行通信原理及串口编程实验

一、两种通信方式概念 1.并行通信 传输原理:并行通信时数据的各个位同时传送,以字节为单位并行传输优点:并行通信速度快,传输的数据宽度可以是1~128位,甚至更宽缺点:并口上导线之间数据同步难处理...
  • u012313335
  • u012313335
  • 2016年09月07日 10:42
  • 1293

NJUPT GNU/Linux编程 实验1-6总结(走过的坑)

课程小结:总结实验中一些踩过的坑。
  • think_ycx
  • think_ycx
  • 2015年12月28日 20:02
  • 918

ARM点灯,PWM,中断实验

点灯实验: 实验目的:控制LED2灯闪烁   一、看原理图       找到灯的原理图,分析灯的电气连接关系 1. 通过搜索LED2或者目录在设备板原理图上找到LED2 2. 分析LED2的...
  • ZHYFXY
  • ZHYFXY
  • 2017年03月13日 19:00
  • 276

机器人点灯(light-bot)2.0通关攻略(一)——递归

知乎答者陆zz在题目“有什么神构思的游戏”下作的回答,推荐了这款游戏,网络上的攻略都是1.0的,所以写一篇2.0的攻略...
  • FIELDOFFIER
  • FIELDOFFIER
  • 2015年11月15日 18:56
  • 6442

linux 下初学使用gcc编程

gcc是GNU C Compiler的缩写,是Linux下一款功能强大的编译器。它支持多种硬件平台,并且编译出的可执行代码执行效率较高。下面我们就一起学习如何使用它。        首先,简单介绍一...
  • haikuhaiku
  • haikuhaiku
  • 2013年11月21日 11:43
  • 402

TinyOS学习篇1 - Ubuntu11.04下安装

1.在Ubuntu系统下安装TinyOS 我安装的时TinyOS2.1.0,安装过程参考TinOS官网的安装指导,但有问题,具体步骤如下: 首先修改ubuntu的源,以便找到和获取TinyOS依赖...
  • leo115
  • leo115
  • 2012年04月16日 10:48
  • 2714

ZigBee组网学习笔记(一)无线点灯

内容摘要: Hardware layer 放在最底,肯定是你实现数据传输的基础。 Hardware Abstraction layer 它提供了一种接口来访问TIMER,GPIO,UART,ADC等。...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2014年12月02日 16:45
  • 2744
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下AT90S8515单片机GCC编程点灯实验纪实
举报原因:
原因补充:

(最多只允许输入30个字)