正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建

前言:

本文是根据哔哩哔哩网站上"Arm(iMX6U)Linux系统移植和根文件系统构键篇"视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

引用:

正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com

《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》

正点原子资料下载中心 --- 正点原子资料下载中心 1.0.0 文档

正点原子imx6ull-mini-Linux驱动之Linux I2C 驱动实验(21)-CSDN博客

正文:

本文是 "Arm(iMX6U)Linux系统移植和根文件系统构键篇--5.1 讲uboot顶层Makefile分析创建VSCode工程。本节将参考正点原子的视频教程和配套的正点原子开发指南文档进行学习。

0. 概述

先在 Ubuntu 下编译一下 uboot,然后将编译后的 uboot 文件夹复制到 windows 下,并创建VScode 工程。打开 VScode,选择:文件->打开文件夹...,选中 uboot 文件夹,如图 31.2.1 所

打开 uboot 目录以后, VSCode 界面如图 31.2.2 所示:

点击"文件->将工作区另存为...",打开保存工作区对话框,将工作区保存到 uboot 源码根目录下,设置文件名为"uboot",如图 31.2.3 所示:

保存成功以后就会在 uboot 源码根目录下存在一个名为 uboot.code-workspace 的文件。这样一个完整的 VSCode 工程就建立起来了。

但是这个 VSCode 工程包含了 uboot 的所有文件, uboot中有些文件是不需要的,比如 arch 目录下是各种架构的文件夹,如图 31.2.4 所示

在 arch 目录下,我们只需要 arm 文件夹,所以需要将其它的目录从 VSCode 中给屏蔽掉,比如将 arch/avr32 这个目录给屏蔽掉。

在 VSCode 上建名为".vscode"的文件夹,如图 31.2.5 所示

输入新建文件夹的名字,完成以后如图 31.2.6 所示

在.vscode 文件夹中新建一个名为"settings.json"的文件,然后在 settings.json 中输入如下内容:

bash 复制代码
{
    "search.exclude": {
        "**/node_modules": true,
        "**/bower_components": true,
    },
    "files.exclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true,
    }
}
  • 其中"search.exclude"里面是需要在搜索结果中排除的文件或者文件夹,
  • "files.exclude"是左侧工程目录中需要排除的文件或者文件夹。

我们需要将 arch/avr32 文件夹下的所有文件从搜索结果和左侧的工程目录中都排除掉,因此在"search.exclude"和"files.exclude"中输入如图 31.2.8 所示内容:

保存一下 settings.json 文件,然后再看一下左侧的工程目录,发现 arch 目录下没有 avr32 这

个文件夹了,说明 avr32 这个文件夹被排除掉了,如图 31.2.9 所示:

我们只是在"search.exclude"和"files.exclude"中加入了: "arch/avr32": true,冒号前面的是要排除的文件或者文件夹,冒号后面为是否将文件排除, true 表示排除, false 表示不排除。用这种方法即可将不需要的文件,或者文件夹排除掉,对于本章我们分析 uboot 而言,在 "search.exclude"和"files.exclude" 中需要输入的完成的内容如下:

bash 复制代码
"**/*.o":true,
"**/*.su":true,
"**/*.cmd":true,
"arch/arc":true,
"arch/avr32":true,
"arch/blackfin":true,
"arch/m68k":true,
"arch/microblaze":true,
"arch/mips":true,
"arch/nds32":true,
"arch/nios2":true,
"arch/openrisc":true,
"arch/powerpc":true,
"arch/sandbox":true,
"arch/sh":true,
"arch/sparc":true,
"arch/x86":true,
"arch/arm/mach*":true,
"arch/arm/cpu/arm11*":true,
"arch/arm/cpu/arm720t":true,
"arch/arm/cpu/arm9*":true,
"arch/arm/cpu/armv7m":true,
"arch/arm/cpu/armv8":true,
"arch/arm/cpu/pxa":true,
"arch/arm/cpu/sa1100":true,
"board/[a-e]*":true,
"board/[g-z]*":true,
"board/[0-9]*":true,
"board/[A-Z]*":true,
"board/fir*":true,
"board/freescale/b*":true,
"board/freescale/l*":true,
"board/freescale/m5*":true,
"board/freescale/mp*":true,
"board/freescale/c29*":true,
"board/freescale/cor*":true,
"board/freescale/mx7*":true,
"board/freescale/mx2*":true,
"board/freescale/mx3*":true,
"board/freescale/mx5*":true,
"board/freescale/p*":true,
"board/freescale/q*":true,
"board/freescale/t*":true,
"board/freescale/v*":true,
"configs/[a-l]*":true,
"configs/[n-z]*":true,
"configs/[A-Z]*":true,
"configs/M[a-z]*":true,
"configs/M[A-Z]*":true,
"configs/M[0-9]*":true,
"configs/m[a-w]*":true,
"configs/m[0-9]*":true,
"configs/[0-9]*":true,
"include/configs/[a-l]*":true,
"include/configs/[n-z]*":true,
"include/configs/[A-Z]*":true,
"include/configs/m[a-w]*":true,

上述代码用到了通配符"*",比如"**/*.o"表示所有.o 结尾的文件。"configs/a-l*"表示 configs 目录下所有以'a' ~'l'开头的文件或者文件夹。 上述配置只是排除了一部分文件夹,大家在实际的使用中可以根据自己的实际需求来选择将哪些文件或者文件夹排除掉。排除以后我们的工程就会清爽很多,搜索的时候也不会跳出很多文件了。

相关推荐
茯苓gao3 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
艾莉丝努力练剑6 小时前
OpenCode AI 编程:Ubuntu 24.04 环境安装与使用指南
linux·服务器·网络·人工智能·tcp/ip·ubuntu
崇山峻岭之间6 小时前
Keil5输出hex转换为bin的设置
linux·运维·服务器
HERR_QQ6 小时前
强化学习的数学原理 学习笔记
人工智能·笔记·学习·自动驾驶
谷雪_6586 小时前
Linux 网络命名空间:从内核原理到企业级容器网络架构全景实战
linux·网络·架构
MartinYeung57 小时前
[论文学习]DP-Fusion:面向大语言模型的令牌级差分隐私推理-深度解析
人工智能·学习·语言模型
qq_163135757 小时前
Linux 【03- chgrp命令超详细教程】
linux
zwenqiyu7 小时前
非线性字符串数据结构串讲
数据结构·c++·学习·算法
CodeStats8 小时前
【编程语言】深度梳理C/C++、Java、Python、Go、Rust的区别
java·linux·c语言·c++·python·rust·go
我会尽全力 乐观而坚强8 小时前
MySQL库与表的操作
linux·数据库·mysql