摘要:
8.ARM寄存器详细解说 ARM寄存器的简单分类:图1-1: 图1-1 ARM微处理器中共有37个32位寄存器,其中31个通用寄存器,6个状态寄存器。但是这些寄存器不能被同时访问,在七种模式中,可以访问的寄存器种类不同。但是,通用寄存器R14——R0、程序计数器PC、一个状态寄存器cpsr都是可以被 阅读全文
摘要:
7.ARM处理器的工作模式 ARM七种工作模式:图1-1: 图1-1 上面的七种工作模式可以在cpsr设置:如下的M[4:0]=Mode number。 图1-2 之所以要有这么多种模式,是为了避免致命的错误。例如我们写的应用程序运行在User模式,操作系统的运作在比较高的模式。 User模式:普通 阅读全文
摘要:
6.认识ARM家族 先看一幅图:图1-1: 图1-1 看到上面都是好像跟ARM公司有关的,但是他们到底各自是啥呢? 其实上面的这些名词分为三类: 芯片:6410、210、2440. ARM核:arm11、A8、arm9 指令架构:armv7、armv6 所以可以对上面的那朵"花"进行简化:图1-2: 阅读全文
摘要:
5.Eclipse集成开发环境 Eclipse集成开发环境不仅可以编译裸机工程,还可以调试整个裸机工程,这样当程序异常的时候,可以更加有效的进行修改。接下来就是搭建整个eclipse集成环境:这个调试环境的框架如下图1-1: 图1-1 从上面的框架图看到,要实现eclipse在线调试裸机程序,需要安 阅读全文
摘要:
4.链接器脚本 一、体验: 首先先看一个例子:图1-1: 编译烧写的过程: main.c的截图: 可以看到在main函数中点亮了第一个盏灯: 图1-1 点灯 在这个例子中的gboot.lds的代码为: OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { . = 0x5 阅读全文
摘要:
3.Makefile工程管理 一、体验 在前面的笔记里可以看到,要编译一个简单的工程需要的编译步骤是很多的。前面还是只有一个汇编文件,在一个工程里,会有很多文件的,如果像前面的那种编译方式是很不可靠的。这就需要Makefile工程管理。 例如前面的那个led.S,要编译成led.bin的步骤:图1- 阅读全文
摘要:
2.交叉工具链 一、交叉工具链: 交叉工具链,其实他有两个含义,一个就是交叉工具,所谓的交叉工具就是运行的环境和编译的环境不是在一体的。就像我们现在,编译裸机程序是在pc机上面执行的。可我们运行程序是在开发板。链,就是很多的意思,就是一个工具的集合。在我们前面配置arm-linux-gcc的工具中。 阅读全文
摘要:
1.裸机开发环境的体验(Redhat 6.4 + vbox) 一、裸机开发的一般流程 注意:这是假定你已经搭建好了裸机开发环境 我们裸机的一般开发流程:图1-1: 图1-1 裸机开发流程 由于在这篇文章里是体验裸机程序,所以我们跳过了1、2步骤。直接从第三步开始: 二、交叉工具链的安装: 在这里,我 阅读全文
摘要:
17.信号量同步编程 进程同步: 一组并发进程进行互相合作、互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步。 生产者:1.创建文件。2.往文件写内容。(中间有sleep)。 进程同步中经典的实例:生产者与消费者的问题。 Producer.c: #include <stdio.h> #in 阅读全文
摘要:
16.信号量互斥编程 我们先来看一个例子。就是两个进程访问同一个文件,由于线程的先后,导致内容的异常。即是数据内容的混乱。 Student1.c: #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <f 阅读全文