?前言:
本文是根據嗶哩嗶哩網站上“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 中輸入如下內容:
?
{"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" 中需要輸入的完成的內容如下:
"**/*.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’開頭的文件或者文件夾。 上述配置只是排除了一部分文件夾,大家在實際的使用中可以根據自己的實際需求來選擇將哪些文件或者文件夾排除掉。排除以后我們的工程就會清爽很多,搜索的時候也不會跳出很多文件了。
?