主机:Win11家庭版

Linux:Ubuntu22.04WSL

开发板:100ask-MP157-PRO

任务

一、NFS搭建

工欲善其事,必先利其器。一个便捷快捷的开发环境能够愈加便捷的进行开发与学习。

在学习中,主机上的Linux环境选用WSL,其缘由是启动快捷,而且功能比较齐全。而主机与开发板之间使用如SecureCRT之类的终端仿真工具进行设置。

对于WSL搭建NFS本身就是一件不容易的事情,WSL的网路设置很复杂,WSL2与Windows是不同网关的,但是对于Windows家庭版是少了好多开发插件的,例如Hyper-v虚拟机的网路管理等;WSL1与主机为相同ip,但在开发板挂载的时侯很难找到共享的位置。但借助WSL1的根目录在Windows系统中以目录的方式储存,并非像WSL2将系统使用虚拟驱动封装,则可以退而求其次在Windows中搭建NFS。haneWINNFS似乎不错,是收费软件。在此,发觉了这篇文章中在Windows搭建NFS的工具——WinNFSd。

Windows10WSL2搭建支持nfs的hi3518开发环境

在文章中使用WSL2,WSL会在/mnt/中挂载Windows中的硬碟,而作者将NFS搭建在/mnt/挂载的Windows硬碟中其本质也是在Windows中搭建的NFS。而WSL1的根目录在WIndows文件系统中,则环境与作者所做的相像。WinNFSd下载地址。

Releases·winnfsd/winnfsd·GitHubContributetowinnfsd/winnfsddevelopmentbycreatinganaccountonGitHub.

下载WinNFSd.exe文件即可运行。

环境安装是什么意思_环境安装步骤_linux安装sdk环境

常用的使用方法:

WinNFSd.exe [-log off]  [alias path]

在Linux中挂载:

mount -t nfs -o nolock,vers=3 : 

选做:编撰脚本Windows

WinNFSd设置了环境变量以便捷后续操作。

环境安装是什么意思_linux安装sdk环境_环境安装步骤

按照WinNFSd命令用例,编撰脚本代码:

@echo off
WinNFSd -log off d:homeproject /project

-logoff即关掉日志输出

这儿对Linux内的目录进行搭建,但是由于目录名称过长,挂载的时侯会很不便捷,因而起了别称(/project)。

开发板

编撰Shell脚本:

#!/bin/bash
mount -t nfs -o nolock,vers=3 :/project /mnt/nfs/

环境安装步骤_环境安装是什么意思_linux安装sdk环境

二、以SSH联接开发板

NFS是通过网路传输的,而仿真终端是通过并口传输的,这时侯想要使用开发板就须要联接并口线和网线两条线,十分特别不便捷,要是能联接才能愈加便捷就好了。

因而使用SSH联接开发板,SSH借助网路传输,即同时也能兼并NFS的挂载。因而静态设置主机和开发板网线端口的ip达到便捷联接的疗效。

对于Windows,对选中网路进行属性配置或网路适配器设置即可。

环境安装步骤_linux安装sdk环境_环境安装是什么意思

网路属性配置

环境安装是什么意思_linux安装sdk环境_环境安装步骤

网路适配器设置

对于该开发板,依据开发指南,须要到/etc/systemd/network下创建work文件进行配置:

[Match]
  Name=eth0
[Network]
  Address=10.1.1.3/24
  Gateway=10.1.1.1

之后重启开发板即可。

互相ping通即可,即Linux/Windows与开发板互ping,由于WSL1与主机公用ip。

之后使用SSH联接:

环境安装步骤_linux安装sdk环境_环境安装是什么意思

环境安装步骤_linux安装sdk环境_环境安装是什么意思

SSH联接

三、内核源码查看

WSL须要安装的基础软件:网路工具net-tools,C语言库gcc,编译工具make,交叉编译gcc-arm-linux-gnueabihf等等。

至于ide,使用了VSCode,在主机上安装了VSCode,WSL也可以使用。

VSCode安装CLang支持浏览以及编撰C语言程序。(目测谷歌官方的C/C++插件也可以)

整个流程:首先安装CLang,怎么编译内核,编译内核的同时生成compile_commands.json给CLang索引。

首先构建工作区,将Linux内核和驱动程序文件包含在工作区内,进行编译。

————————————————————更新————————————————————

2024年5月12日

灰字部份是手稿,目前关于环境变量的问题所在以及解决办法早已整理下来了,完成配置后下边的ARCH以及CROSS_COMPILE不需再要设置。

Linux环境变量随谈-CSDN博客文章浏览阅读108次。将环境变量写入/etc/bash.bashrc(全局)或则~/.bashrc(指定用户)中保证环境变量被加载生效。

——————————————————————————————————————————

出现”Kernelconfigurationisinvalid.”的错误,是由于该内核文件未指定具体的系统设置。因开发板为100ask-STM32MP157,则找到内核文件中./arch/arm/configs/100ask_stm32mp157_pro_defconfig进行设置。

环境安装步骤_环境安装是什么意思_linux安装sdk环境

sudo make ARCH=arm 100ask_stm32mp157_pro_defconfig

正题:如何晓得是这个路径的?由于没有指定ARCH参数时会指向x86linux 虚拟主机linux使用教程,旁边的配置基本就错了,之后报错在./arch/x86/configs/中找不到配置文件……

在期间可能会报错”flex:notfound.”,”bison:notfound.”这听说是一些例程,安装一下。

sudo apt install flex bison

按照指南,下一步开始编译内核。

sudo make ARCH=arm CROSS_COMPILE=/opt/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf- uImage LOADADDR=0xC2000040

在编译内核的同时要生成compile_commands.json,这儿使用bear生成。高版本bear须要在指令前加入”--“。

sudo apt install bear
sudo bear -- make ARCH=arm CROSS_COMPILE=/opt/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf- uImage LOADADDR=0xC2000040

可能有人问:为何要加ARCH定环境?为何CROSS_COMPILE要写那么长一串?

第一个问题,Makefile当中说明了,若在交叉编译的情况下须要指定ARCH否则会像前面一样检查为x86(即当前系统)。

第二个问题linux安装sdk环境,在几次编译当中,都出现先了”compiler'arm-buildroot-linux-gnueabihf-gcc'notfound”或则是”unrecognizedargumentinoption‘-mabi=aapcs-linux’.”的错误。后者是由于找不到指令,须要像上述语言完全的路径;前者是编译器使用了非交叉编译的编译器,须要加入CROSS_COMPILE进行指定。倒也不是由于没有设置环境变量的问题,CROSS_COMPILE以及PATH都设置了,用交叉编译工具还是可以正常运行的,但就是这儿的make总是会出错,也是没有办法的办法吧,给有须要的人一个方案,其实也欢迎见谅,后续假如排查出问题所在我会及时更改。

环境安装是什么意思_linux安装sdk环境_环境安装步骤

查看compile_commands.json,把下方”gcc”全部修改为交叉编译工具,不然建立了索引也用不了(有时侯生成的就是交叉编译,有时侯是gcc,一旦前面文件引用不上就先看这儿的问题)

cat compile_commands.json
//下方为在vi中修改指令
:%s//[path & gcc compiler]//[path & cross compiler]

环境安装是什么意思_环境安装步骤_linux安装sdk环境

————————————————————更新————————————————————

2024年5月12日

完成环境变量的设置后指令应为:

su
make 100ask_stm32mp157_pro_defconfig
make uImage LOADADDR=0xC2000040
bear -- make uImage LOADADDR=0xC2000040

同时,compile_commands.json中的gcc替换为工具链的交叉编译arm-buildroot-linux-gnueabihf-gcc即可。

——————————————————————————————————————————

最后打开工作区,可以看见左下角正在构建索引。

环境安装是什么意思_linux安装sdk环境_环境安装步骤

当进行驱动项目开发时linux安装sdk环境,在工作区中加入文件,而且”bear--make”生成compile_commands.json即可。

参考文章​​​​​​​

Windows10WSL2搭建支持nfs的hi3518开发环境

makemenuconfig错误:/bin/sh:1:flex:notfound和/bin/sh:1:bison:notfound-CSDN博客

编译Android源码和Linux内核源码时侯遇见的一些错误

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复