| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux开发区 > 嵌入应用

在Linux下开发AVR单片机的工具

时间:2007-09-17 11:18:15  来源:Linux联盟收集整理  作者:崔剑
Atmel公司的AVR系列单片机是一种性能优良, 耗电很小的微控制器, 他的主要特点是: N67Linux联盟
N67Linux联盟
1). 单时钟周期指令; N67Linux联盟
N67Linux联盟
2). 很高的C语言编码效率; N67Linux联盟
N67Linux联盟
3). 支持在系统编程(ISP)技术. N67Linux联盟
N67Linux联盟
AVR单片机是我目前在Linux下看到的开发工具最全的微控制器, 它的开发非常方便, 从此我们在Linux下也可以开发单片机了. N67Linux联盟
N67Linux联盟
开发AVR的编译器是gcc, 实际上就是给gcc加上适合于AVR的库, 该库的名字叫avr-libc, 目前支持的开发语言是c和c++, c++的支持还在开发中. 下面就介绍AVR-GCC的安装方法并简单介绍一下通用编程器uisp的安装方法. N67Linux联盟
N67Linux联盟
当前avr-libc仍在不断的进行中, 该项目的主页是 http://www.nongnu.org/avr-libc , 该页面上面还有很多AVR在Linux下开发的辅助工具, 本文就不介绍了. avr-gcc的下载地址是: http://savannah.nongnu.org/download/avr-libc/snapshots/src , 请下载binutils-030428.tar.bz2 , gcc-core-20030428.tar.bz2 , gcc-g++-20030428.tar.bz2 , avr-libc-20030422cvs.tar.gz. 以root用户登录, 将它们拷贝到安装目录中(我的习惯是/usr/local/src), 解压缩软件包: N67Linux联盟
N67Linux联盟
bunzip2 *.bz2 N67Linux联盟
N67Linux联盟
tar xvf *.tar N67Linux联盟
N67Linux联盟
tar zxvf *.tar.gz N67Linux联盟
N67Linux联盟
之后会在安装目录中生成`三个子目录, binutils-030438/ , gcc-20030428/ , avr-libc-20030422cvs/ . 下面分别安装之. N67Linux联盟
N67Linux联盟
安装binutils: N67Linux联盟
N67Linux联盟
cd binutils-030428/ N67Linux联盟
N67Linux联盟
./configure --target=avr --prefix=/usr/local/atmel (/usr/local/atmel是安装目录) N67Linux联盟
N67Linux联盟
make N67Linux联盟
N67Linux联盟
make install N67Linux联盟
N67Linux联盟
然后在/etc/ld.so.conf中加入/usr/local/atmel/lib一行, 并运行/sbin/ldconfig更新. N67Linux联盟
N67Linux联盟
在~/.bashrc文件中加入export PATH=/usr/local/atmel/bin:${PATH}, 并且在命令行下也输入该语句. N67Linux联盟
N67Linux联盟
安装gcc: N67Linux联盟
N67Linux联盟
cd gcc-20030428/ N67Linux联盟
N67Linux联盟
./configure --target=avr --prefix=/usr/local/atmel --disable-nls --enable-language=c,c++ N67Linux联盟
N67Linux联盟
make N67Linux联盟
N67Linux联盟
make install N67Linux联盟
N67Linux联盟
安装avr-libc: N67Linux联盟
N67Linux联盟
先设置一些环境变量: N67Linux联盟
N67Linux联盟
export CC=avr-gcc; export AS=avr-as; export AR=avr-ar; export RANLIB=avr-ranlib N67Linux联盟
N67Linux联盟
export PATH=/usr/local/atmel/bin:${PATH}; export PREFIX=/usr/local/atmel N67Linux联盟
N67Linux联盟
./reconf N67Linux联盟
N67Linux联盟
./doconf N67Linux联盟
N67Linux联盟
./domake N67Linux联盟
N67Linux联盟
cd build N67Linux联盟
N67Linux联盟
make install N67Linux联盟
N67Linux联盟
如果一切顺利的话, AVR-GCC就安装完成了. N67Linux联盟
N67Linux联盟
下面介绍通用编程器uisp的安装 N67Linux联盟
N67Linux联盟
uisp是一个通用的编程器, 用来在Linux下控制各种各样的编程器, 该项目正在不断的完善中, 项目的主页是: N67Linux联盟
N67Linux联盟
http://savannah.nongnu.org/projects/uisp N67Linux联盟
N67Linux联盟
从上面下载uisp-20021201.tar.gz N67Linux联盟
N67Linux联盟
解压缩: N67Linux联盟
N67Linux联盟
tar zxvf uisp-20021201.tar.gz N67Linux联盟
N67Linux联盟
开始安装: N67Linux联盟
N67Linux联盟
cd uisp-20021201/ N67Linux联盟
N67Linux联盟
./configure N67Linux联盟
N67Linux联盟
make N67Linux联盟
N67Linux联盟
make install N67Linux联盟
N67Linux联盟
这样uisp也装好了. 运行之前我们还要作些准备工作. 运行lsmod命令, 看列表中有没有parport, parport_pc, ppdev 三个模块, 有的话就跳过下面一段. N67Linux联盟
N67Linux联盟
编译内核, 确信选中parallel port support -> parallel support 和 parallel port support -> pc-style hardware 及 Character devices -> Support for user-space parallel port device drivers 三项. 编译好内核后, 进入/lib/modules/<内核版本号>/kernel/drivers/parport/ , 运行 insmod parport.o ; insmod parport_pc.o ; cd .. ; cd char/ ; insmod ppdev.o , 可以将加载模块的命令加入rc.sysinit, 这样就不用以后再手工输入了. N67Linux联盟
N67Linux联盟
下面简单讲讲avr-gcc和uisp的使用方法, 详细的handbook我会以后翻译. 假定mcu为at90s8515, 源程序为avr.c . N67Linux联盟
N67Linux联盟
1). 编译C源程序 N67Linux联盟
N67Linux联盟
生成.o文件: avr-gcc -mmcu=at90s8515 -Os avr.c N67Linux联盟
N67Linux联盟
生成.out文件: avr-gcc -mmcu=at90s8515 -o -Wl,-Map,avr.map avr.o avr.out N67Linux联盟
N67Linux联盟
生成.hex文件: avr-objcopy -R .eeprom -O ihex avr.out avr.hex N67Linux联盟
N67Linux联盟
2). 在线下载 N67Linux联盟
N67Linux联盟
刷新: uisp -dlpt=/dev/parport0 --erase -dprog=dapa N67Linux联盟
N67Linux联盟
编程: uisp -dlpt=/dev/parport0 --upload if=avr.hex -dprog=dapa -dno-poll -v=3 --hash=32 N67Linux联盟
N67Linux联盟
3). 下载线 N67Linux联盟
N67Linux联盟
PC 并口 AVR N67Linux联盟
N67Linux联盟
Init (Pin 16) -> Reset N67Linux联盟
N67Linux联盟
D0 (Pin 2) -> MOSI N67Linux联盟
N67Linux联盟
Busy(Pin 11) -> MISO N67Linux联盟
N67Linux联盟
Strobe(Pin 1) -> SCK N67Linux联盟
N67Linux联盟
GND(Pin 18) -> GND N67Linux联盟
N67Linux联盟
注意: N67Linux联盟
N67Linux联盟
引线要串1K的电阻, AVR的Reset端接10K的上拉, 要给单片机3-5V的外部供电. N67Linux联盟
N67Linux联盟
最后祝大家都能顺利的使用Linux开发AVR. N67Linux联盟
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目更新
栏目热门