写一个文章,记录一下配置好环境需要的操作,完成最简单的一个软件调试。
目的:在主机Ubuntu上开发并生成可执行文件,把可执行文件传到开发板上,执行这个程序。
Q1: 为什么不在开发板上编辑并调试
因为在开发板上性能有限,很难自主一套完成一套任务。现在虽然开发板性能上在提升,但作为程序员角度来说,还是不够优雅。
Q2: 为什么要用Ubuntu而不用Windows开发
在老师发的文档中有提到
原因解释:
CPU 只能理解其原生指令集
x86_64 指令 ≠ ARM64 指令
就像让只会中文的人读英文书一样,CPU “看不懂” 错误的指令格式
实验条件
已经成功的让虚拟机加入桥接网卡,IP :192.168.137.100。
ssh连接Ubuntu用的NAT模式的网卡 IP :192.168.5.128。
在开发板上
这样即证明虚拟机和开发板连通
1
2
3
4
| debian@lubancat:/mnt/nfs$ ping 192.168.137.100
PING 192.168.137.100 (192.168.137.100) 56(84) bytes of data.
64 bytes from 192.168.137.100: icmp_seq=1 ttl=64 time=2.94 ms
64 bytes from 192.168.137.100: icmp_seq=2 ttl=64 time=2.06 ms
|
同理,在Ubuntu上
两边都成功则肯定没有问题了
在Ubuntu上执行以下命令,检测NFS是否开启
1
| sudo systemctl status nfs-kernel-server
|
出现绿色的
在开发板上运行active √
1
2
| df -h | grep nfs
ls -la /mnt/nfs
|
若没有报错,且看到了Ubuntu上的共享文件,就OK
开发板上的共享文件夹
1
2
| debian@lubancat:/mnt/nfs$ pwd
/mnt/nfs
|
Ubuntu上的共享文件夹
1
2
| fyj@fyj-virtual-machine:/home/frank/nfs_share$ pwd
/home/frank/nfs_share
|
解决方案一(文档里的默认方法)
在Ubuntu上(用vm进入)
1
2
3
| # 若没有这个路径就自己创建一下
cd /home/frank/nfs_share/projects/hello
sudo nano main.c
|
写入代码
1
2
3
4
5
| #include <stdio.h>
int main(int argc, char *argv[]) {
printf("Hello from i.MX8M!\n");
return 0;
}
|
运行指令编译
1
| aarch64-linux-gnu-gcc -static main.c -o hello
|
现在进入开发板(用ModaXterm)
1
2
3
4
5
6
7
8
9
10
11
| # 进入 NFS 挂载点
cd /mnt/nfs/projects/hello
# 查看文件(应该能看到刚编译的 hello 程序)
ls -la hello
# 赋予执行权限
chmod +x hello
# 运行程序
./hello
|
然后就能看到结果了
1
2
| debian@lubancat:/mnt/nfs/projects/hello$ ./hello
Hello from i.MX8M!
|
方案二(笔者更推荐的一种)
我总觉得方案一不够直观,不够方便编辑,用了nano编辑器,又不想在Ubuntu里面下载vscode
所以我用了Windows的vscode,利用了ssh(不会的可以自己去学一下,我这边已经配置好了)

这就是进来以后的界面

优势:秒更新,可视化,很清晰的看到两边的同步。傻瓜式流程,就能感觉和Windows上开发别无两样。
用法:左边是Ubuntu,在上面用ui创建文件/文件夹,右侧即可编辑
编辑好后用vscode内置终端,执行和上面相同操作即可