学习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)相关推荐

  1. 学习ARM开发01-09

    /***********************************  *作者:蔡军生  *出处:http://blog.csdn.net/caimouse/  ***************** ...

  2. 学习ARM开发(11)

    学习ARM开发(11) 昨天又是星期天,在家里又可以对那块开发板进行软件研究了. 由于前几次,把编译好的UBOOT写到FLASH老是运行不了.那么怎么办呢?思考了很久,也查看 了源程序,还是没有发现问 ...

  3. 学习ARM开发(4)

    学习ARM开发(4) 已经把CPU大体架构学会了,当然我之前已经学习过80X86的结构,所以对于像RISC的计算机,也能想像到它是什么样的东西.如果没有学习过<微机原理>,那最好去看看,或 ...

  4. 学习ARM开发(2)

    学习ARM开发(2) 今天是星期天,刚好在家里休息.又是学习ARM的大好时机了. 早上起得很早,因为都想着怎么样搞好这个ARM开发环境,总是心急的.搞得睡觉,也睡不好.立即把电脑打开,为了更加快点,把 ...

  5. 学习ARM开发(6)

    学习ARM开发(6) 上一次,说到要学习ARM汇编,好,现在就开始.目前我的引导程序是在UBOOT1.1.2上修改过来的,大家可以下载UBOOT的源程序,也许你们会问在那里有下呢?这个问题不用我回答了 ...

  6. 学习ARM开发(10)

    学习ARM开发(10) /* 用循环调用所有初始化函数 */         for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ ...

  7. 学习ARM开发(1)

    #1  学习ARM开发(1) 做任何事情之前,一定要想好目标.没有目标的事情是做不好的,也做不成.我的目标就是学习ARM开发,当然是深入的学习. 目标如下 : 1.学习ARM开发环境. 2.学习ARM ...

  8. 学习ARM开发(15)

    使用GCC来开发ARM,就一定遇到编译器的问题.比如遇到编译C代码各种警告和错误.像我昨天就遇到了几个警告,那么就来看看这几个警告是什么引导的呢? 警告如下: armlib/memory.c: 91 ...

  9. 在Ubuntu下使用QEMU搭建arm开发环境(一)搭建基本开发环境

    马上就要开学了,开学后就会开始arm+Linux的学习,因为马上就要去学校了,就没有买板子,打算去了学校再买,但是想学习的心是迫切的(O(∩_∩)O哈哈~),在网上浏览的时候发现了QEMU这个&quo ...

最新文章

  1. 支付接口教程,详解支付宝接口(二)
  2. 航空购票系统源码java_航空售票系统 - WEB源码|JSP源码/Java|源代码 - 源码中国
  3. unity中脚本编辑器UnIDE
  4. mysql事务所_mysql事务
  5. 变位齿轮重合度计算公式_齿轮“模数”是如何计算的?
  6. TCP/IP学习笔记(2)-数据链路层
  7. 英文的写作 —— 词汇的积累(环境的描写、写人)
  8. 计算机相关专业及本科课程整理
  9. JavaSE学习笔记(七)—— 继承final关键字
  10. 如何在Hexo中对文章md文件分类
  11. Python字符串地常规操作:取值,切片,查找,替换,分割,拼接,转义
  12. TCP/IP传输层协议实现 - TCP接收窗口/发送窗口/通告窗口(lwip)
  13. j2me游戏开发之LWJGL(Lightweight Java Game Library)
  14. 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
  15. 《打造Facebook》书摘(1):CEO小扎
  16. C语言红楼梦人物分析系统
  17. render函数的使用
  18. 《阴阳师》手游分析报告
  19. 利用appimage工具对开发好的项目进行打包
  20. java自动旋转矫正图片方向

热门文章

  1. 没有技术含量,但能每天赚50刀的GGAD赚钱办法分享
  2. 使用docker engine 运行时 集群部署 kubernetes v1.23
  3. SpringBoot用MultipartFile.transferTo传递相对路径的问题
  4. jacob操作API
  5. vncserver密码修改
  6. 隔直电容大小如何选择
  7. Cadence 计算器使用——settling time
  8. 华为Honor6打开开发者选项
  9. c语言双精度浮点数,使用C语言的十进制(浮点数,双精度)
  10. 作业及管理系统(二)