LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5309|回复: 15

打造Linux下的avr系列单片机编程环境

[复制链接]
发表于 2004-5-14 18:38:51 | 显示全部楼层 |阅读模式
打造Linux下的avr系列单片机编程环境
这也是交叉编译环境的建立过程
我们所需要的软件:
1、binutils-2.14.tar.bz2 ftp://ftp.gnu.org/gnu/binutils
2、gcc-core-3.4.0.tar.bz2 ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.0
3、avr-libc-20020203.tar.gz http://www.amelek.gda.pl/avr/libc
4、uisp-20040311.tar.bz2 http://savannah.nongnu.org/download/uisp

我是在redhat9.0下安装的,别的版本没有试验过,不过应该不会有太大的问题:

把上面四个软件包下载到一个目录下,比如我以root用户来安装它们,下载到/root/tmp目录里,进入/root/tmp目录:

cd /root/tmp

首先安装binutils-2.14.tar.bz2,解压文件:

tar jxvf binutils-2.14.tar.bz2

这里得到解压后的目录binutils-2.14

gnu推荐新建一个目录来安装它:
mkdir binutils-build

cd binutils-build
../binutils-2.14/configure --target=avr --prefix=/usr/local
make
make install
这样,在/usr/local/avr目录下安装了binutils的软件,让新安装的库加入系统的搜索路径:
echo "/usr/local/avr/lib" >>/etc/ld.so.conf
/sbin/ldconfig

然后安装gcc-core-3.4.0.tar.bz2,步骤和上面的一样,也新建一个目录来安装:
tar zxvf gcc-core-3.4.0.tar.gz
mkdir gcc-build
cd gcc-build
../gcc-3.4.0/configure --target=avr --prefix=/usr/local --disable-nls --enable-language=c
make
make install

设置一些环境变量(bash shell) :
export CC=avr-gcc
export AS=avr-as
export AR=avr-ar
export RANLIB=avr-ranlib
export PATH=/usr/local/atmel/binPATH

接下来安装avr-libc-20020203.tar.gz,这个不新建目录安装了:
tar zxvf avr-libc-20020203.tar.gz
cd avr-libc-20020203
./configure --prefix=/usr/local/avr --target=avr --enable-languages=c --host=avr
make
make install
上面的库会被安装在/usr/local/avr/avr/lib里,这样我们应该把它加入到系统的库搜索路径中:
echo "/usr/local/avr/avr/lib">>/etc/ld.so.conf
/sbin/ldconfig

编程环境到此已经全部安装完毕,可以进行测试了:
cd /usr/local/avr/bin
cat > ./hello.c <<"EOF"
main()
{printf("Hello,World!");
}
EOF
/usr/local/avr/bin/gcc -o hello hello.c
如果幸运的话,不会出现错误,表明上面的软件都安装成功了,要是不幸运出错了请检查一下上面的步骤,一般是没把/usr/local/avr/avr/lib加入到/etc/ld.so.conf并用/sbin/ldconfig让它生效。

最后安装的是uisp-20040311.tar.bz2,它是一个编程器,用来把编译好的目标代码下载到单片机里。
由于上面把CC,AS等变量改变了,我们可以退出shell再重新登录让变量改回原来的来进行这个软件的安装或是在x-window下重新开一个新的虚拟终端来进行这个软件的安装。
新打开一个虚拟终端,回到/root/tmp目录下:
cd /root/tmp
tar jxvf uisp-20040311.tar.bz2
cd uisp-20040311
./configure --prefix=/usr/local/avr
make
make install
这样可执行文件被安装在/usr/local/avr/bin目录下,文件名为uisp

至此,一套的avr的开发的软件环境已经建立起来了。希望你和我一样幸运安装成功了。

希望能和有兴趣学习单片机和嵌入式系统的同好互相交流:huangyiddle@21cn.com
参考文章:
1,AVR单片机GCC编程:http://www.linuxfocus.org/ChineseGB/March2002/article231.shtml
2,LFS中文文档:http://lfs.linuxsir.cn/cgi-bin/wiki/moin.cgi/_cf_c2_d4_d8
发表于 2004-5-14 19:27:14 | 显示全部楼层
这几天也正在弄这个,可是gcc时老出错,还把写了一半的东西给搞丢了,真让人郁闷啊。

看到兄弟写出来了,很不错。希望大家一块研究!

--target=<CPU体系结构>
CPU体系结构,如arm-linux、powerpc-linux等
 楼主| 发表于 2004-5-14 21:20:32 | 显示全部楼层
最初由 renbagshoes 发表
这几天也正在弄这个,可是gcc时老出错,还把写了一半的东西给搞丢了,真让人郁闷啊。

看到兄弟写出来了,很不错。希望大家一块研究!

--target=<CPU体系结构>
CPU体系结构,如arm-linux、powerpc-linux等


我也实验了好几次才成功的,发觉这方面的中文资料实在缺乏,这几天为搞好arm-linux的编程环境看了不少英文资料仍没有搞成功,真是沮丧,看来还得看看,另外想把51系列的编程环境搞出来,上网找不到资料,不知道怎么弄才行,兄弟们一起努力研究吧,先建立一套完整的开发工具再进行实质开发才行,加油!!
发表于 2004-5-17 20:32:59 | 显示全部楼层
我狂顶。
发表于 2004-5-17 21:54:47 | 显示全部楼层
建议安装Debian Linux或FreeBSD,诸如avr-gcc和sdcc都带了,安装简单。
另外,如果想用gdb+jtag对avr单片机调试,请参见如下软件链接:
http://avarice.sourceforge.net/
以上系统我都用过,很好用的。
还可用sdcc,不过俺没用过。
SDCC is a C compiler for the Intel MCS51 family, AVR, HC08, PIC
and Z80 microcontrollers。
发表于 2005-10-22 16:20:35 | 显示全部楼层
对了,不知有没有人在LINUX下用过AVR-GCC,它支持ATMEL原装的USB下载线不。
不过我觉的还是不要在AVR上用操作系统比较好,AVR太小了,直接写一个专用内核就行哪。
回复 支持 反对

使用道具 举报

发表于 2005-10-22 16:45:14 | 显示全部楼层
我一直以为无论是xxx-gcc还是原生的gcc,都是为32位处理器工作的,例如arm-elf-gcc等,没想到还有8位单片机的。

为啥没有gcc for mcs51?

另外楼上的说avr不要用操作系统,这里好像没说要用。
debian和freebsd的软件源里有avr-gcc的工具集。
回复 支持 反对

使用道具 举报

发表于 2005-10-22 16:49:48 | 显示全部楼层
Post by kiron
我也实验了好几次才成功的,发觉这方面的中文资料实在缺乏,这几天为搞好arm-linux的编程环境看了不少英文资料仍没有搞成功,真是沮丧,看来还得看看,另外想把51系列的编程环境搞出来,上网找不到资料,不知道怎么弄才行,兄弟们一起努力研究吧,先建立一套完整的开发工具再进行实质开发才行,加油!!



不是有现成的arm-elf-tools下载的么
www.minigui.org
www.uclinux.org  上都有阿

是个自解压的.sh文件
回复 支持 反对

使用道具 举报

发表于 2005-11-17 09:56:58 | 显示全部楼层
请教楼主:
export CC=avr-gcc
export AS=avr-as
export AR=avr-ar
export RANLIB=avr-ranlib
export PATH=/usr/local/atmel/binPATH
~~~~~~~~~~~~~~~~~~~~~~~~~~这个PATH:=/usr/local/atmel/bin是怎么回事情?应该是:=/usr/local/avr/bin吧?

还有,我按照这篇文章安装完毕后,用hello.c做了个测试,编译不过去啊,老是出现这个问题:
/usr/local/avr/lib/gcc-lib/avr/3.3/../../../../avr/bin/ld: cannot
   open crts8515.o: No such file or directory
怎么回事情?
我用的debian系统,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-17 10:24:28 | 显示全部楼层
回楼上的,我已经暂时不做嵌入开发了
这篇文章我很久之前写的,所有的步骤都测试过了。
你看一下你的PATH的赋值不是PATH:=而是PATH=
最后编译不过去的原因是不能找到链接库,如果你安装成功了我觉得你应该是没有把新的库路径增加到/etc/ld.so.conf配置文件中,还要记得刷新一下链接路径的缓存,这个你应该检查一下。
就是文中类似:
echo "/usr/local/avr/avr/lib">>/etc/ld.so.conf
/sbin/ldconfig
的命令。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表