学习ARM开发(3)
学习ARM开发(3)上一次说到装好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执行代码是三步进行的,取指---译码----执行。
下一个目标学习ARM汇编。
学习ARM开发(3)相关推荐
- 学习ARM开发01-09
/*********************************** *作者:蔡军生 *出处:http://blog.csdn.net/caimouse/ ***************** ...
- 学习ARM开发(11)
学习ARM开发(11) 昨天又是星期天,在家里又可以对那块开发板进行软件研究了. 由于前几次,把编译好的UBOOT写到FLASH老是运行不了.那么怎么办呢?思考了很久,也查看 了源程序,还是没有发现问 ...
- 学习ARM开发(4)
学习ARM开发(4) 已经把CPU大体架构学会了,当然我之前已经学习过80X86的结构,所以对于像RISC的计算机,也能想像到它是什么样的东西.如果没有学习过<微机原理>,那最好去看看,或 ...
- 学习ARM开发(2)
学习ARM开发(2) 今天是星期天,刚好在家里休息.又是学习ARM的大好时机了. 早上起得很早,因为都想着怎么样搞好这个ARM开发环境,总是心急的.搞得睡觉,也睡不好.立即把电脑打开,为了更加快点,把 ...
- 学习ARM开发(6)
学习ARM开发(6) 上一次,说到要学习ARM汇编,好,现在就开始.目前我的引导程序是在UBOOT1.1.2上修改过来的,大家可以下载UBOOT的源程序,也许你们会问在那里有下呢?这个问题不用我回答了 ...
- 学习ARM开发(10)
学习ARM开发(10) /* 用循环调用所有初始化函数 */ for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ ...
- 学习ARM开发(1)
#1 学习ARM开发(1) 做任何事情之前,一定要想好目标.没有目标的事情是做不好的,也做不成.我的目标就是学习ARM开发,当然是深入的学习. 目标如下 : 1.学习ARM开发环境. 2.学习ARM ...
- 学习ARM开发(15)
使用GCC来开发ARM,就一定遇到编译器的问题.比如遇到编译C代码各种警告和错误.像我昨天就遇到了几个警告,那么就来看看这几个警告是什么引导的呢? 警告如下: armlib/memory.c: 91 ...
- 在Ubuntu下使用QEMU搭建arm开发环境(一)搭建基本开发环境
马上就要开学了,开学后就会开始arm+Linux的学习,因为马上就要去学校了,就没有买板子,打算去了学校再买,但是想学习的心是迫切的(O(∩_∩)O哈哈~),在网上浏览的时候发现了QEMU这个&quo ...
最新文章
- 支付接口教程,详解支付宝接口(二)
- 航空购票系统源码java_航空售票系统 - WEB源码|JSP源码/Java|源代码 - 源码中国
- unity中脚本编辑器UnIDE
- mysql事务所_mysql事务
- 变位齿轮重合度计算公式_齿轮“模数”是如何计算的?
- TCP/IP学习笔记(2)-数据链路层
- 英文的写作 —— 词汇的积累(环境的描写、写人)
- 计算机相关专业及本科课程整理
- JavaSE学习笔记(七)—— 继承final关键字
- 如何在Hexo中对文章md文件分类
- Python字符串地常规操作:取值,切片,查找,替换,分割,拼接,转义
- TCP/IP传输层协议实现 - TCP接收窗口/发送窗口/通告窗口(lwip)
- j2me游戏开发之LWJGL(Lightweight Java Game Library)
- 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
- 《打造Facebook》书摘(1):CEO小扎
- C语言红楼梦人物分析系统
- render函数的使用
- 《阴阳师》手游分析报告
- 利用appimage工具对开发好的项目进行打包
- java自动旋转矫正图片方向