一、嵌入式交叉开发环境
前期嵌入式系统因为目标设备资源有限都是采用交叉开发方式,在宿主机的X86平台上生成另一个硬件平台(arm、mips等)的可执行代码。
由于嵌入式开发板的资源有限,通常不能直接在开发板上进行程序编译。因此,需要在台式机上安装适合开发板架构(如 ARM 架构)的交叉编译工具链。以 ARM 为例,可以从官方渠道或者开源社区获取 arm - none - linux - gnueabi - gcc 等工具链。在 Linux 系统下,下载后可以通过设置环境变量来方便地使用这些工具。
-
程序编译:在台式机上,使用交叉编译工具链或者集成开发环境对程序进行编译。例如,在 Eclipse 中,创建一个嵌入式项目,编写 C/C++ 代码后,通过配置好的交叉编译设置进行编译。编译过程中,编译器会根据开发板的架构和配置,将代码转换为可在开发板上运行的二进制文件。
-
程序传输与加载:编译完成后,通过网络(网线连接)将二进制文件传输到嵌入式开发板上。可以使用一些文件传输协议,如 TFTP(Trivial File Transfer Protocol)或 FTP(File Transfer Protocol)。在开发板上,需要运行相应的文件接收程序来接收文件。例如,在 Linux - based 的开发板上,可以通过 tftp - h 命令来接收文件。接收完成后,将文件加载到开发板的内存中,准备运行。
-
调试操作:通过串口线连接,在台式机上打开终端软件,进入开发板的控制台。可以在控制台中启动程序,并查看程序的输出信息,如打印的日志、错误提示等。如果程序出现问题,可以使用调试工具,如 GDB(GNU Debugger)。在台式机上运行 GDB,通过远程调试的方式,连接到开发板上正在运行的程序,设置断点、查看变量的值等,从而定位和解决程序中的错误。
二、本机开发环境
随着芯片技术的发展,高性能嵌入式处理器性能在不断提高,从处理器频率,内存的大小与速度,外部存储空间这些指标上基本上可以满足本机的编辑、编译、调试,可以跟通用PC机应用开发一样,在开发板上直接编译、调试程序。开发板本机安装各种编辑器、GCC编译器、IDE集成开发环境。(这里高资源开发板,一般指主频1GHZ以上,内存512MB以上,硬盘(flash)8GB以上板卡,例如:飞腾派、龙芯派,RK3399/3588开发板等)。
开发方式可以开发板直接连接显示器、键盘、鼠标使用,开发板就相当于主机。更常见的方式使用台式机/笔记本通过SSH连接到开发板的系统上进行开发。
三、飞腾派本机开发环境
-
SHH连接到飞腾派开发板
-
系统软件包操作
//更新软件仓库
$sudo apt update
//搜索仓库中的vim相关软件包
$sudo apt-cache search vim
//找到vim编辑器的软件包进行安装
$sudo apt isntall vim
-
GCC编译器安装与使用
//安装gcc编译器
$sudo apt isntall build-essential
//查看gcc版本
$gcc -v
-
本机程序的编译与运行
输入一个linux的文件操作程序,功能是从键盘输入字符,逐个存到磁盘文件中,直到输入‘#“为止。代码如下:
#include <stdio.h>
#include <stdlib.h>
void main(int argv,char** argc)
{ FILE *fp;
char ch,*filename="out.txt";
if((fp=fopen(filename,"w"))==NULL)
{ printf("cannot open file\n");
exit(0);
}
printf("Please input string:");
ch=getchar();
while(ch!='#')
{ fputc(ch,fp);
putchar(ch);
ch=getchar();
}
fclose(fp);
}
通过下述命令编译运行:
//编译程序
$gcc test.c -o test
//运行程序
$./test