ARM
的裸机开发,也就是不带操作系统开发,就和我们开发
STM32
一样,如果
有
STM32
开发经验的话学起本篇会很容易
1
、裸机开发是了解所使用的
CPU 最直接、最简单的方法,裸机开发是直接操作
CPU 的寄存器。
Linux 驱动开发最终也是操作的寄存器
,但 是在操作寄存器之前要先编写一个符合
Linux 驱动的框架
。同样一个点灯驱动,裸机可能只需 要十几行代码,但是 Linux
下的驱动就需要几十行代码。
2. Linux 驱动开发和 STM32 开发区别 很大,比如 Linux 没有 MDK、IAR 这样的集成开发环境,需要我们自己在 Ubuntu 下搭建交叉编译环境。
3
、裸机开发是连接
Cortex-M
(如
STM32
)单片机和
Cortex-A(
如
I.MX6U)
处理器的桥梁
1.开发环境搭建
1.1Ubuntu 和 Windows 文件互传
在 Windwos 下进行 代码编写,然后将编写好的代码拿到 Ubuntu 下进行编译。Windows 和 Ubuntu 下的文件互传我 们需要使用 FTP 服务,设置方法如下:
1.1.1开启ubuntu下的FTP服务
打开
Ubuntu
的终端窗口,然后执行如下命令来安装 FTP 服务:

确保上面两行前面没有“#”,有的话就取消掉
修改完 vsftpd.conf 以后保存退出,使用如下命令重启 FTP 服务:
sudo /etc/init.d/vsftpd restart
1.1.2windows下FTP客户端安装
Windows 下 FTP 客户端我们使用 FileZilla ,这是个免费的 FTP 客户端软件,可以在 FileZilla官网下载,下载地址如下: https://www.filezilla.cn/download![]()
安装完毕界面如图FileZilla 软件设置Ubuntu 作为 FTP 服务器, FileZilla 作为 FTP 客户端,客户端肯定要连接到服务器上,打开站点管理器,点击:文件 -> 站点管理器点击图 中的“新站点 (N)”按钮来创建站点,将新的站点命名为“Ubuntu”
![]()
终端窗口输入ifconfig查看地址及参数然后打开站点管理器,选中要设置的站点“Ubuntu”,选择“字符集”,
设置好字符集以后重新连接到 FTP 服务器上,重新链接到 FTP 服务器以后Ubuntu 下的文件目录中文显示就正常了就可以直接拖文件过去。
1.1.3Ubuntu 下 NFS 和 SSH 服务开启
NFS
服务开启
后面进行
Linux
驱动开发的时候需要
NFS
启动,因此要先安装并开启
Ubuntu
中的
NFS
服
务,使用如下命令安装 NFS 服务:

等待安装完成,安装完成以后在用户根目录下创建一个名为“
linux
”的文件夹,以后所有
的东西都放到这个“
linux
”文件夹里面,在“
linux
”文件夹里面新建一个名为“nfs”的文件夹,


创建的
nfs
文件夹供
nfs
服务器使用,以后我们可以在开发板上通过网络文件系
统来访问
nfs
文件夹,要先配置
nfs
,使用如下命令打开
nfs
配置文件/etc/exports:
重启 NFS 服务,使用命令如下:




SSH
服务开启
开启
Ubuntu
的
SSH
服务以后我们就可以在
Windwos
下使用终端软件登陆到
Ubuntu
,比如
使用
SecureCRT
,
Ubuntu
下使用如下命令开启 SSH 服务:
上述命令安装
ssh
服务,
ssh
的配置文件为
/etc/ssh/sshd_config
,使用默认配置即可。

2.Ubuntu 交叉编译工具链安装
ARM
裸机、
Uboot
移植、
Linux
移植这些都需要在
Ubuntu
下进行编译,编译就需要编译
器,而我们现在 要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架 构代码的 GCC 编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:
1.它肯定是一个
GCC
编译器。
2
、这个
GCC
编译器是运行在
X86
架构的
PC
上的。
3
、这个
GCC
编译器是编译
ARM
架构代码的,也就是编译出来的可执行文件是在
ARM
芯
片上运行的。
交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架
构“交叉”起来了
Linaro GCC
编译器下载地址如下:
https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/
我们要先将交叉编译工具拷贝到
Ubuntu 中,我们在当前用户根目录下创建了一个名为“linux”的文件夹,在这个 linux 文件夹里面再创建一个名为“tool”的文件夹,用来存放一些开发工具。使用前面已经安装好的 FileZilla 将交叉编译器拷贝到 Ubuntu 中刚刚新建的“tool”文件夹中,操作如图





在
Ubuntu
中创建目录:/usr/local/arm,命令如下:

创建完成以后将刚刚拷贝的交叉编译器复制到
/usr/local/arm
这个目录中,在终端使用命令
“
cd
” 进 入 到 存 放 有 交 叉 编 译 器 的 目 录 , 比 如 我 前 面 将 交 叉 编 译 器 拷 贝 到 了 目 录 “/home/zuozhongkai/linux/tool
”中,然后使用如下命令将交叉编译器复制到/usr/local/arm 中:
拷贝完成以后在/usr/local/arm 目录中对交叉编译工具进行解压,解压命令如下:



等待解压完成,解压完成以后会生成一个名为“
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux
gnueabihf
”的文件夹,这个文件夹里面就是我们的交叉编译工具链。
修改环境变量,使用
VI
打开/etc/profile 文件,命令如下:
打开
/etc/profile
以后,在最后面输入如下所示内容:


添加完成以后的/etc/profile 如图
重启
Ubuntu
系统,交叉编译工具链
(
编译器
)
就安装成功

安装相关库
在使用交叉编译器之前还需要安装一下其它的库,命令如下:

交叉编译器验证
首先查看一下交叉编译工具的版本号,输入如下命令:

如果交叉编译器安装正确的话就会显示版本号
可以看出当前交叉编译器的版本号为
4.9.4
,说明交叉编译工具链安装成功。

“
arm-linux-gnueabihf
gcc
”的含义如下:
1
、
arm
表示这是编译
arm
架构代码的编译器。
2
、
linux
表示运行在
linux
环境下。
3
、
gnueabihf
表示嵌入式二进制接口。
4
、
gcc
表示是
gcc
工具