您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机如何开发arm(1) 正文
如何开发arm(1)

如何开发arm(1)

点击数:7108 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   ARM单片机

目前因为两台电脑都已经安装WINDOWS系统,又装了很多软件。为了没有什么风险,就装了VMWARE软件,就是虚拟机软

件,这个软件的虚拟速度确实快很多,它跑图形的操作系统也不慢。如果BOCHS,一运行图形的操作系统,就会很慢,

因此放弃了这个自由软件。如果我的电脑速度也很快,比如用AMD64位的最新CPU或许用BOCHS也不慢。

装好VMWARE软件,然后就是在里面安装LINUX,那么用什么LINUX比较好呢?目前,我是用最流行的REDHAT。并且用的

是9.0版本,这个版本确实不错。一路下来,几乎不用动什么手,就可以装完了。

吸取了上几次的经验,所以这次我选择了全部安装所有软件,硬盘的空间还有10G,所以我虚拟机硬盘就分配10G硬盘

空间。这样全部安装LINUX后,大小也才3G左右。这个LINUX已经把图形和网络,开发源程序和所有工具,全部安装完

成。像我很少使用LINUX的用户,一定不会再回到像DOS那种环境的,或许很久没有用DOS了,所以打命令总是很艰难的

,总记不住LINUX下的命令,所以我选择了图形的方式。目前在LINUX下,使用图形的方式,已经很方便了。跟WIN95的

水平已经不相上下了,如果WINDOWS真的要收我的钱,就改到LINUX下了,REDHAT9.0已经使用起来很方便了。如果是只

办公,用LINUX,已经很好用。到了2005年,LINUX确实进步了很大。REDHAT9.0已经很实用了,LINUX肯定可以成为办

公的PC标准配置了。

装好LINUX后,就要配置它的网络部份。以前几次都配置不成功,是因为不了解LINUX,或许它的帮助太少,以为每个

都是高手。现在用REDHAT9.0的中文版,总算比较了解。设置网卡的IP地址为192.168.0.2,掩码:255.255.255.0,网

关是192.168.0.1。这样就配置好了LINUX的网络了。

接着下来,就要设置VMWARE的网络部份,我选用NAT的方式。所以我找到那个VNET8那个虚拟网卡,然后设置它的IP地

址为192.168.0.8,掩码:255.255.255.0,网关是192.168.0.1。这个是在WINDOWS的网络里配置的。这样设置好之后

,在WINDOWS里,就可PING到虚拟机里的LINUX的192.168.0.2了。

在LINUX访问WINDOWS的IP是多少呢?这个问题刚开始,我也是不知道的。后来试了一下,只能PING到WINDOWS

192.168.0.8这个地址。不过,只要PING得通这个地址,就证明LINUX和WINDOWS的网络已经设置好。

接着下来,就是解决WINDOWS与LINUX共享文件的问题。这个有很多的解决方案。我的选择是用FTP。

因为我对LINUX不了解,所以我试着配置LINUX的VSFTPD总是配置得不好,达到不我的要求,而我的要求就是简单,任

何文件都可以上传也可以下载,但LINUX缺省的方式是很安全,搞得我有时候能上传,就不能下载,有时能上传了而不

能删除文件,是因为权限太复杂,总算了解为什么WINDOWS好用,就是因WINDOWS没有那么多权限控制。

既然配置LINUX不成功,我就选择了WINDOWS的FTP服务器。拿出WINDOWS的光盘,然后添加WINDOWS的FTP服务器,在

WINDOWS后只选择两个设置,就可以设置任何人都可登录,任何文件都可上传和下载。这样太快了,还是WINDOWS方便

,全是界面的。因为目前安全是不用考虑的,用LINUX那个,要改为不安全,很难设置。

设置好WINDOWS的FTP服务器之后,就可以用LINUX后那个图形的GFTP工具连接到WINDOWS了。只要在WINDOWS的FTP目录

里,放任何文件,都可以在虚拟机的LINUX里用GFTP来拷贝入去,也可以从LINUX里拷贝文件出来了。

这样的操作系统装好之后,就是安装ARM的开发环境了。这个就是下载arm-elf的交叉编译器。这个以后再说了。

到这里,就完成LINUX的安装和文件共享的问题。这样的好处是,可以在LINUX下编译程序,可以WINDOWS上用VC等工具

写源程序和修改源程序,速度快,并且写中文的注释也很方便了。并且可以把uClinux的目标文件拿WINDOWS下用

SKYEYE等运行。如果还在虚拟机的LINUX下,再用SKYEYE的话,就会变得非常慢的。


上一次说到装好LINUX后,就要装开发环境了,因为编译在LINUX下,当然是用GCC,但这个GCC跟LINUX本身带的又不一

样。目标代码是ARM,而LINUX带的,一般是I386的目标代码。因此,一定要安装ARM的编译器。到网上下载

arm-elf-tools-20030314.sh,然后运sh ./arm-elf-tools-20030314.sh运行,就可以安装好ARM的GCC编译器了。你在

LINUX下,就可以用arm-elf-gcc -v就可测试一下,是否安装成功了。这个编译器已经包括了as,ld,gcc等三个编译器

,已经可以编译汇编和C代码,并且可以连接成目标文件。

编译器已经安装好之后,就说明整个开发环境已经建立起来,就做你想要做的事情了。至于怎么样写MAKEFILE文件,

我就不说了。因为这些都是很基础的东西,并且都是细节的东西,记不住那么多,要用到的时候再去查手册行了。并

且一个项目或许只用写一个MAKEFILE的格式,然后其它的都可以从这个基础上修改而来。我不会从头去建立一个

MAKEFILE的,那需要太多时间了。只要到其它项目里拷贝一个,自己进行修改,就可以使用。

接着下来,就要写程序,那怎么样写呢?这是一个问题。写程序的目标机器是什么呢?用什么语言来写呢?应从那里

下手呢?其实是有很多问题在这里的。

因为我以前没有学习过ARM,只学习过80X86的微机原理,我想这个ARM也是计算机,只要是一样的东西,就要用一样的

方法来学习。以前我在大学里学习微机原理的流程是这样的:学习二进制表示法,学习中央处理器组成,学习汇编,

学习CPU的内存管理,学习CPU的IO口。那么我也要用这种方法来学习才对。

二进制表示方法是一样的,所以不用学习了。那么我为什么CPU写程序呢?这个一定要搞清楚的,否则也不会怎么样写

。ARM的CPU是与X86的CPU是不一样的。它是采用了RISC设计,以前也不懂这个是什么,所以就到网上查下,在《维基

百科,自由的百科全书》里说明如下:精简指令集,计算机CPU的一种设计模式,也被称为RISC(Reduced Instruction

Set Computing 的缩写)。

早期,这种CPU指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、CPU的实现细节对于机器级程序是

可见的等等。

实际上在后来的发展中,RISC与CISC在争吵的过程中相互学习,现在的RISC指令集也达到数百条,运行周期也不再固

定...... 虽然如此,RISC设计的根本原则--针对流水线化的处理器优化--没有改变。

原来如此,RISC的一般特性是什么呢?采用RISC指令的CPU,大多数都是定长指令,采用加载与储存操作数据的办法。

就是所有要操作的数,都要保存到寄存器才能作运算,不像X86的CPU,可以直接操作内存里的数据。这个在写汇编时

需要了解的。其它的区别,对于写程序来说,是没有区别的。

ARM的CPU执行代码是三步进行的,取指---译码----执行。


已经把CPU大体架构学会了,当然我之前已经学习过80X86的结构,所以对于像RISC的计算机,也能想像到它是什么样

的东西。如果没有学习过《微机原理》,那最好去看看,或者去看看RISC的CPU设计,就是龙芯的设计,在清华上面有

很多关于龙芯的设计文档,这些都是CPU的功能。

为什么要学习汇编呢?现在不是大多数用C编写的了吗?是的,目前嵌入式软件大多数都是用C开发的。其实学习汇编

,是为了更好了解CPU的处理,这个只是为了了解,为了更深入的了解,而不是用它来开发大部份的应用。当然它也是

有用的地方,比如BOOTLOADER这样的程序,没有汇编,是不可能完成的。还有那些有特殊的指令,没有汇编也是不可

能写得出来的。目前,我学习汇编,就是为了写BOOTLOADER。我也没有为了全部去学习它,而去学习,而是拿

BOOTLOADER的源程序出来,从上面了解汇编,看懂别人的BOOTLOADER,或者能修改它的汇编,就算学习完成,而不必

要每条指令都去死记它,去了解它。只要BOOTLOADER中有的指令,才去看它,去了解它,把一个BOOTLOADER看完下来

,就相当于把汇编学习完成,而不必要自己动手去新写什么汇编,只要能修改目前已经有的BOOTLOADER,就已经完成

了任务。




本文关键字:如何  开发  ARM单片机单片机-工控设备 - ARM单片机