51.Linux裸机开发--ARM基础概念及汇编环境搭建

之前学习了Linux的应用层开发,下面要开始linux的底层开发,当然最开始我们不是学习bootloader,也不是内核移植,而是开始ARM的裸机开发,那么我们老说ARM,那ARM是什么?目前比较火的,美国封锁我们的华为,ARM公司又和华为有什么关系?

一.ARM基础概念

详细的内容可以看一下我之前整理的博客:

https://blog.****.net/lzs940320/article/details/90021068

下面只对一些关键的知识进行一个复习总结。

51.Linux裸机开发--ARM基础概念及汇编环境搭建

二.环境搭建及启动文件编写及调试

作为单片机开发的自然对寄存器,中断等更好理解,但是就像我们平时debug调试时一样,只知道用哪个功能,点点按钮,到了Linux中就是使用GDB,其实道理都是一样的。但是我们平时会注意到,但是又不太重视的.s启动文件,还有反汇编文件,机器指令等,学了linux后这些确是在调试中的利器,能够帮助我们更深入的了解芯片,更快速的定位到问题。

接下来我们进行开发环境搭建,然后debug下看一下他们之间是如何配合的。‘

虽然我们ARM的开发都是在linux下开发,但是其实都是一样的,为了更清晰的理解,我们使用常用的集成开发环境keil添加上工具链来对我们的一些启动文件和裸机程序进行调试。

后期还是继续使用linux下进行。

详细安装步骤可以看下“ARM汇编环境搭建”文档。

1. 安装交叉编译工具链

我们用的交叉编译工具链是arm-2011.09-70-arm-none-linux-gnueabi.exe

在该可执行文件上右键->属性 -> 兼容性 选择兼容window 7

确定后以管理员身份运行即可,可能需要很长时间。

2. 安装keil(MDK)

直接运行ARM环境\ARM-tools\mdk454_mcu123\MDK454

安装路径选择默认,一路next,会花费很长时间。

3. 创建一个project

3.1 新建一个文件夹(keil_proc/test),用于存放工程。

3.2 新建一个工程,Project -> New..., 然后选择型号,arm9(小端)

3.3 在工程里面添加或者new一个文件(start.s),在工程管理区的Source Group右键, 选择add group .. 选择自己

新建的文件,或者是其他文件添加到工程里面.

3.4. 可以通过Target -> Manage components去修改工程和groups的名字,或者批量添加文件

4. 关联arm-none-linux-gnueabi工具链

Project -> Manage-> Components ... -> Folders/Extensions

5. 导入链接脚本

Project -> Options for Target ... -> Linker

设置Linker Scipt file为工程目录下的map.lds(需要先将ARM环境\ARM-tools\里面的map.lds放到新建的工程里面即

keil_proc/test里面)

6. 写代码

.text

.global _start

_start:

movr1, #0xff

stop:

b stop

.end

编译和调试