裸机
我们在使用电脑时,比如创建一个文件夹,写入一些数据读取一些数据,这些操作在根本上其实时对底层硬件的操作,是对地址的操作。但是如果让用户通过地址来对手机啊电脑等电子设备进行操作,无疑是不方便的。而操作系统就是底层硬件与用户之间沟通的桥梁。用户可以通过操作系统以一种更简单的方式实现对电脑、手机等电子产品的使用。
所谓的裸机就是在没用操作系统的情况下实现对底层硬件的应用。
裸机的启动流程
芯片厂商在生产时给自己预留了一个64k的IRAM的空间,这个空间是我们无法使用的。这片空间不可访问不可修改,且被芯片厂商加密,硬件设备在启动的过程中会首先执行这片空间里面的内容,这片空间的代码被称之BL0。
BL0开始执行之后会关闭一系列的功能,进行一系列的初始化,最主要的是他会判断开发板的启动方式
编译
首先我们应该知道编译的目的是什么。众所周知我们写出来的.c文件的程序是无法被直接运行的,计算机只能识别0和1,也就是说他只能识别二进制文件。而编译的目的就是为了将写好的.c文件先编程汇编语言,再将汇编语言变成二进制文件。
但在不同的架构下底层汇编是不一样的。同样的他们对汇编语言的识别也不一样。我们以前采用gcc编译的代码他是无法被linux识别的,我们需要一种针对于linux的编译器。交叉编译器。
交叉编译器的安装
1: 解压压缩包
sudo tar -xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /
会在根目录生成 opt 文件夹 !
这个就是交叉编译工具
2: /etc/profile
传说中 环境变量文件!
你的环境变量可以再此修改!
在最后一行添加
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
3:64位的系统需要安装32位的库
sudo apt-get install lib32ncurses5 lib32z1
4: 重启这个文件
source /etc/profile
执行
arm-linux-gcc -v
执行成功即代表安装成功