首先在win10或win11下安装wsl,选择wsl1或者wsl2都可以,wsl2的性能更高一些,wsl1的跨系统文件操作速度更快一些,我这里因为有一些工程在win文件系统下,所以选择了wsl1,发行版使用最新的Ubuntu 22.04.01 LTS。
这里我没有选用vm虚拟机安装ubuntu开发的原因是虚拟机下的文件交互不够方便,特别是git和文件对比,有时在内核源码改了一些文件,使用win下的TortoiseGit工具就可以很方便的查看差异,提交变更。使用beyond compare也可很方便的比较各种文件文件夹的不同版本的差异。
这里编译开发的核心软件只有一个,就是VS code,安装好后添加所需的插件。
串口调试工具使用MobaXterm
下载交叉编译器,这里使用arm官方最新的GCC 12.2
Arm GNU Toolchain Downloads – Arm DeveloperDownload the Arm GNU Toolchain, an open-source suite of tools for C, C++, and Assembly programming for the Arm architecture.https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
下载后解压在wsl的主目录,在.bashrc中添加编译器路径
PATH="$PATH:/home/wsl/arm-none-linux-gnueabihf/bin"
之后重新连接终端,arm-none-linux-gnueabihf-gcc -v确认安装成功
wsl@DESKTOP-NQRKTHB:~/t113/buildroot-2022.11$ arm-none-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/wsl/arm-none-linux-gnueabihf/bin/../libexec/gcc/arm-none-linux-gnueabihf/12.2.1/lto-wrapper
Target: arm-none-linux-gnueabihf
Configured with: /data/jenkins/workspace/GNU-toolchain/arm-12/src/gcc/configure --target=arm-none-linux-gnueabihf --prefix= --with-sysroot=/arm-none-linux-gnueabihf/libc --with-build-sysroot=/data/jenkins/workspace/GNU-toolchain/arm-12/build-arm-none-linux-gnueabihf/install//arm-none-linux-gnueabihf/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/data/jenkins/workspace/GNU-toolchain/arm-12/build-arm-none-linux-gnueabihf/host-tools --with-mpfr=/data/jenkins/workspace/GNU-toolchain/arm-12/build-arm-none-linux-gnueabihf/host-tools --with-mpc=/data/jenkins/workspace/GNU-toolchain/arm-12/build-arm-none-linux-gnueabihf/host-tools --with-isl=/data/jenkins/workspace/GNU-toolchain/arm-12/build-arm-none-linux-gnueabihf/host-tools --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-mode=thumb --with-arch=armv7-a --with-pkgversion='Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24)'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.2.1 20221205 (Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24))