Davinci及U-boot的一些介紹

TI推出的數字多媒體平臺DM系列,集成了ARM與DSP雙核處理器:DSP處理器運行DSP/BIOS操作系統,負責音視頻編解碼算法以及其他圖形處理算法;ARM處理器運行MontaVista
Linux操作系統,負責設備初始化、用戶圖形界面管理。ARM處理器端的MontaVista
Linux 加載啟動,需要有Bootloader完成內核由Flash空間加載到DDR空間并啟動Linux系統。Bootloader就是在OS內核運行之前運行的一段程序,通過這段引導程序,初始化硬件設備、建立內存空間映射圖,使系統的軟硬件環境處于一個合適的狀態,為OS內核的啟動做好準備。目前TI的 DM6446平臺采用U-Boot作為Bootloader引導程序。
一、U-Boot簡介
U-Boot,全稱Universal Boot Loader,是遵循GPL(General Public
License) 條款的開放源碼項目。U-Boot不僅僅支持嵌入式Linux系統的引導,還支持 NetBSD,VxWorks,QNX,RTEMS,artos,LynxOS嵌入式操作系統。U-Boot支持 PowerPC,MIPS,X86,ARM,NIOS,XScale等諸多常用系統的處理器。U-Boot項目的開發目標,即是支持盡可能多的嵌入式處理器和嵌入式操作系統。
U-Boot的特點:
> 開放源碼;
> 支持多種嵌入式操作系統內核,如:式LinuxNetBSD,VxWorks,QNX,RTEMS,artos,LynxOS;
> 支持多個處理器系列,如PowerPC,MIPS,X86,ARM,NIOS,XScale;
> 較高的可靠性和穩定性;
> 高度靈活的功能設置,適合U-Boot調試、操作系統不同引導要求等;
> 豐富的設備驅動源碼,如串口、以太網、SDRAM、FLASH、EEPROM、RTC、鍵盤等;
> 較為豐富的開發調試文檔與強大的網絡技術支持。
二、U-Boot目錄結構
> board: 目標板相關文件,主要包含SDRAM,FLASH驅動;
> common:獨立于處理器體系結構的通用代碼,如內存大小探測與故障檢測;
> cpu:
> 與處理器相關的文件。如mpc8xx子目錄下含串口、網口、LCD驅動及中斷初始化等文件;
> driver: 通用設備驅動,如CFI FLASH 驅動(目前對INTEL FLASH支持較好);
> doc:U-Boot的說明文檔;
> examples:U-Boot下運行的實例程序,如hello_world.c,timer.c;
> include:
> U-Boot頭文件,configs子目錄下與目標板相關的配置頭文件是移植過程中經常要修改的文件;
> lib_xxx:
> 處理器體系相關的文件,如lib_ppc,lib_arm目錄分別包含與PowerPC,ARM體系結構相關的文件;
> net: 網絡功能相關的文件目錄,如bootp,nfs,tftp;
> post: 上電自檢文件目錄,尚待進一步完善;
> rtc: RTC驅動程序;
> tools: 用于創建U-Boot S-RECORD和BIN鏡像文件的工具;
U-Boot目前已經支持TI的DM6446平臺,在board/davinci目錄下為devem目標板相關文件,其中包含了網絡、flash等的驅動程序。
Davinci U-Boot系列之二:U-Boot在SEED-DVS6446平臺上的應用
SEED-DVS6446平臺采用U-Boot-1.2.0版本,針對NAND
Flash、Net、DDR驅動修改,并提供更多的U-Boot命令支持。下面以SEED-DVS6446平臺為例,說明U-Boot在該平臺上的常用配置使用。
一、U-Boot啟動
1.軟件配置
打開串口超級終端(PC超級終端、Hyperterminal、Teraterm),配置相關參數如下:
> 波特率:115200
> 數據位:8
> 奇偶較驗:None
> 停止位:1
> 數據流控制:None
2.硬件配置
> DB9串口線一端連接DAVINCI平臺串口,另一端連接PC機串口;
> DAVINCI平臺的視頻采集口連接攝像頭或者DVD作為視頻輸入;
> DAVINCI平臺的視頻輸出口連接顯示設備;
> DAVINCI平臺的網絡接口通過網線連接至路由器等網絡接口,或者通過直通線與
PC機網口連接;
> DAVINCI平臺采用5V-5A電源供電,啟動系統。
此時可以在串口超級終端看到DVS6446平臺的一些相關信息,比如ARM,DDR時鐘頻率,U-Boot版本等等。
二、U-Boot通過TFTP下載內核啟動并掛載網絡文件系統
TFTP下載內核啟動掛載網絡文件系統方式,即通過TFTP服務器下載內核啟動,文件系統掛載到Linux服務器下的已經搭建好的/opt/nfs文件系統目錄下。過程如下:
1.SEED-DVS6446上電啟動,顯示上述啟動信息,當顯示"hit any key to stop
autoboot:
3"時按下回車鍵,中斷系統自動啟動,進行啟動參數配置,此時顯示如下提示符:SEED-DVS6446_v1.2#:
;
2.配置啟動參數,在提示符下輸入以下配置參數:setenv bootargs mem=120M
console=ttyS0,115200n8 root=/dev/nfs noinitrd rw ip=dhcp nfsroot=nfs
ip=/opt/nfs video=dm64xxfbutput=pal
3.設置tftp服務器的IP地址和DVS6446的IP地址,在提示符下分別輸入如下配置(tftp服務器的IP地址和DVS6446的IP地址,根據實際應用配置):
setenv serverip _._._._
setenv ipaddr _._._._
4.下載內核并啟動(默認用戶已經將內核文件uImage復制到tftp服務的根目錄下),在提示符下配置下載啟動:
tftp 0x80800000 uImage;bootm 0x80800000
5.配置完成系統啟動,并自動掛載網絡文件系統,啟動完畢顯示等待登錄信息。
三、通過U-Boot配置參數實現VGA視頻輸出與復合視頻輸出的配置
SEED-DVS6446支持復合視頻與VGA視頻輸出顯示,默認采用復合視頻輸出,用戶可以通過U-Boot中的參數配置實現VGA輸出。以TFTP下載內核啟動掛載網絡文件系統方式為例,詳細步驟如下:
1.SEED-DVS6446 U-Boot啟動,顯示啟動信息,當顯示"hit any key to stop
autoboot:
3"時按下回車鍵,中斷系統自動啟動,進行啟動參數配置,此時顯示如下提示符:SEED-DVS6446_v1.2#:
;
2.配置啟動參數,在提示符下輸入以下配置參數:setenv bootargs mem=120M
console=ttyS0,115200n8 root=/dev/nfs noinitrd rw ip=dhcp nfsroot=nfs
ip=/opt/nfs video=dm64xxfb format=vgautput=pal
3.設置tftp服務器的IP地址和DVS6446的IP地址,在提示符下分別輸入如下配置:
setenv serverip _._._._
setenv ipaddr _._._._
4.下載內核并啟動,在提示符下配置下載啟動:
tftp 0x80800000 uImage;bootm 0x80800000
5.配置完成系統啟動,并自動掛載網絡文件系統,將VGA接口同SEED-DVS6446平臺的VGA輸出口連接,啟動完畢即顯示等待登錄信息,VGA顯示器左上角顯示Monta
Vista Linux的圖標。
四、從CCS直接燒錄到DDR情況下,不需要U-Boot,此時cmd的通用腳本文件如下:
-lrts32e.lib
-l..\..\csl\arm\lib\Debug\csl_davinciArm9.lib
-l..\..\lib\davincievmbsl.lib
-stack 0x00000800
-heap 0x00000800
MEMORY
{
IRAM: o = 0x00000000 l = 0x00004000
DRAM: o = 0x00008000 l = 0x00004000
AEMIF: o = 0x02000000 l = 0x02000000
DDR2: o = 0x80000000 l = 0x08000000
}
SECTIONS
{
.bss > DDR2
.cinit > DDR2
.cio > DDR2
.const > DDR2
.stack > DDR2
.sysmem > DDR2
.text > DDR2
.ddr2 > DDR2
}
Davinci U-Boot系列之三:U-Boot常用命令和常用環境變量
U-Boot常用命令
?:
得到所有命令列表或者列出某個命令的幫助。
用法:? [command ...]
說明:列出命令的幫助信息,當不帶參數時,列出所有命令及簡要說明。
help:
同?
printenv:
打印環境變量。
用法:printenv [name]
說明:name一般是Hiboot環境變量的名字,也可以是用戶自定義的變量;當value為空時,刪除變量
"name", 否則設置變量"name",且值為"value".
saveenv:
保存變量。
用法:saveenv
說明:保存變量及其值到flash.
ping:
用于簡單判斷目標機網絡狀態或本機網絡工作狀態。
tftp:
從tftp服務器中下載文件至RAM或者Flash中。
用法:tftp addr file
說明:將file文件下載到地址為addr的RAM或者Flash中。注意:使用tftp時,必須先設置好網絡配置,使用setenv配置ipaddr、netmask、serverip參數。
cp:
拷貝內存。
用法:cp[.b,.w,.l]source target count.
說明:把地址為source的內存區域的值,拷貝到地址target的內存區域,區域的大小為count,source和target可以是SDRAM的地址訪問,也可以是flash的地址范圍,實際拷貝的大小,因命令的不同而不同。cp.b拷貝1xcount
bytes,簡單使用cp時,默認為4xcount bytes.
go:
跳轉到指定地址,執行代碼。
用法:go addr [arg ...]
說明:執行地址addr處的二進制代碼,可傳遞arg參數。
reset:
復位cpy處理器
用法:reset
bootm:
設置運行環境,并開始執行二進制代碼。
用法:bootm [addr[arg ...]]
說明:執行addr處的代碼,要求二進制代碼為mkimage處理過的二進制文件。
erase:
擦除Flash內容.
用法1:erase start end.
說明:擦除地址從start到地址為end區域的內容。
注意:flash的擦除操作必須以塊為最小單位,因此地址start必須為某塊的其實地址,end地址則為某塊的結束地址,如flash的基地址為0x34000000,塊大小為0x20000,則操作erase
0x34000000 0x3401FFFF為可操作的,而erase 0x34000003 0x3401FFFF或者erase
0x34000000 0x3401FF00均不可操作。
用法2:erase N:SF[-SL].
說明:擦除第N塊flash的從扇區SF到SL扇區的內容。
用法3:erase bank N.
擦除第N塊flash的內容。
用法4:erase all
說明:擦除所有flash的內容。
nand erase:
擦除nand flash內容
用法:nand erase start size
nand write:
用來將內存數據寫入nand flash
用法:nand write sram_addr start size
說明:將內存sram_addr處的數據寫入nand flash
start地址開始的空間,寫入大小為size.
U-Boot常用環境變量
ipaddr:
設置DVS6446平臺的IP地址
說明:setenv ipaddr 192.168.253.53
serverip:
設置服務器ip地址,多用于tftp中
說明:setenv serverip 192.168.253.33
bootargs:
啟動OS的啟動參數
說明:setenv bootargs mem=120M console=ttys0,115200n8 ...
解釋:設置傳遞參數,如內存大小,控制臺,根文件系統等。
bootcmd:
設置自動及執行命令。啟動延時根據bootdelay的值,若沒有設置bootdelay,默認延時3秒
說明:setenv bootcmd bootm
0x23450000,即設置啟動后自動執行0x23450000處的代碼。
bootdelay:
設置自啟動延時時間,單位為秒。只有當bootcmd變量被設置后,該變量才有效。改變了值范圍為大于等于-1的整數,當設置為-1時,關閉自啟動的功能。
說明:setenv bootdelay 4 ; 設置自啟動延時4秒
說明:setenv bootdelay -1; 關閉自啟動功能
提示:在延時時間內可按任意鍵切換到命令行模式。注意,在產品開發調試階段請勿設置延時時間為0,若設置,可以在啟動瞬間使用CTRL+C中斷程序而進入命令行模式。
netmask:
設置子網掩碼。
說明:setenv netmask 255.255.255.0
gatewayip:
設置網關。
說明:setenv gatewayip 192.168.253.1
ethaddr:
設置以太網網卡MAC地址。
說明:setenv ethaddr xx: xx: xx: xx: xx: xx
注意:設置ethaddr后,應運行saveenv,重啟才能使MAC地址配置有效。
聲明:以上文章來自http://www.tichinese.com/bbs/viewthread.php?tid=151&extra=page%3D9,此處只作為學習之用
附:
uboot常用命令
顯示環境變量: printenv
保存環境變量: saveenv
設置內核文件名: setenv bootfile
uImage-dm355,其中uImage-dm355為對應的文件名
設置內核啟動方式:
1,從網絡啟動:setenv bootcmd 'tftp;bootm'
2,從FLASH啟動
對于DM355: setenv bootcmd 'nboot 0x80700000 0
0x400000;bootm'
對于DM6446: setenv bootcmd 'bootm 0x2040000'
設置bootargs:
DM355:
文件系統:NFS,文件系統的路徑:nfsroot=192.168.1.55:/home/filesys;IP:DHCP;輸入:模擬輸入;輸出NTSC
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys,nolock mem=100M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=ntsc
文件系統:NFS,文件系統的路徑:nfsroot=192.168.1.55:/home/filesys;IP:DHCP;輸入:數字CMOS輸入;輸出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys,nolock mem=100M
v4l2_video_capture=:device=MT9T001
video=dm64xxfb:output=pal
文件系統:本地FLASH;IP:固定IP;輸入:數字CMOS輸入;輸出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw
rootfstype=yaffs2
ip=192.168.1.11:192.168.1.55:192.168.1.1:255.255.255.0:192.168.1.11::off
root=/dev/mtdblock3 nolock
mem=90M v4l2_video_capture=:device=MT9T001
video=dm64xxfb:output=pal
DM6446:
文件系統:NFS,文件系統的路徑:nfsroot=192.168.1.55:/home/filesys;IP:DHCP;輸入:模擬輸入;輸出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys,nolock mem=38M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=pal
文件系統:本地硬盤;IP:DHCP;輸入:模擬輸入;輸出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/hda1
nfsroot=192.168.1.55:/home/filesys,nolock mem=38M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=pal
文件系統:NFS,文件系統的路徑:nfsroot=192.168.1.55:/home/filesys;IP:固定IP;輸入:模擬輸入;輸出NTSC
setenv bootargs console=ttyS0,115200n8 noinitrd rw
ip=192.168.1.240::192.168.1.2 root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys, nolock mem=38M
video=dm64xxfb:output=ntsc v4l2_video_capture=:device=TVP5146
文件系統:本地硬盤;IP:固定IP;輸入:模擬輸入;輸出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw
ip=192.168.1.240::192.168.1.2 root=/dev/hda1
nfsroot=192.168.1.55:/home/filesys,nolock mem=38M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=pal
燒錄內核至FLASH
DM355:
tftp 80700000 uImage-dm355:其中uImage-dm355為對應的文件名
nand erase 400000 200000
nand write 0x80700000 0x400000 0x200000
setenv bootcmd 'nboot 0x80700000 0 0x400000;bootm'
DM6446
tftp
erase 0x2040000
+0x157fb0(其中0x157fb0為對應內核文件的大小,通過tftp命令可以統計出來)
setenv bootcmd 'bootm 0x2040000'
cp.b 0x80700000 0x2040000
0x157fb0(其中0x157fb0為對應內核文件的大小,通過tftp命令可以統計出來)
LINUX 常用命令
路徑切換命令:
顯示當前所在目錄路徑
pwd
進入/root/encode目錄
cd /root/encode
如果目前所在目錄是/root
則輸入:
cd encode即可進入/root/encode目錄
驅動掛載命令:
查看系統上掛載的移動設備
fdisk -l
將USB設備(/dev/sda1)mount到mnt/usb目錄下
mount /dev/sda1 /mnt/usb
拷貝命令:
從目錄A(/root/encode)拷貝一文件到目錄B(mnt/usb)
cp /root/encode/test.mpeg4 mnt/usb
進程終止命令
顯示系統進程:ps -a
終止某進程: kill 996(996為目前某進程的PID號)
應用程序執行命令
執行應用程序encode
./encode
后臺執行應用程序encode
./encode&(在DM355脫機方式,建議通過此方式執行應用程序,方可以通過kill命令進行進程的終止)
打包命令
tar -zcf A.tar.gz B(其中B為欲打包的目錄,A為壓縮包的命名)
解包命令
tar -xzf ti-davinci.tar.gz(其中
ti-davinci.tar.gz欲解包的命名,解壓在當前目錄

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254063.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254063.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

像素越多越好?像元的面積越小越好?為何底大一級壓死人?

像素越多越好?像素點的面積越小越好?為何底大一級壓死人? 像素是:圖像最小單元的數量,例如6000*4000,像素數量就是24*10^6。 像素太少當然圖像就看不見了,看不清晰了。 但是現在幾乎所有手機和相…

設計模式(5)--工廠模式

//5.工廠模式 //ver1 //回顧簡單工廠模式 class OperationFactory { public:static Operation createOperation(char chOper){Operation * op NULL;switch(chOper){case :op new OperationAdd();break;case -:op new OperationSub();break;default:break;}return *op;} };vo…

對于多屬性類型系統的數據庫設計

主要是以下幾類系統: 生活信息系統, 內容:小, 屬性:大,電商商品系統, 內容:大, 屬性:大,風控征信系統, 內容:小, 屬性:大,新聞系統, 內容:大, 屬性:小,這些系統共同的特點, 都是在主體內容上會攜帶多個屬性, 并且屬性需要隨時能調整, 并且要求能兼容舊屬性, 還需要頻繁的通過屬…

linux環境部署常用命令

1.  查看當前所屬目錄:pwd2.  回到上級目錄:cd ../回到上兩級目錄:cd ../ ../3.  查看當前目錄下有哪些文件:ls4.  查看最后100行日志:tail -100 catalina.out動態重看操作日志:tail -f catalina.o…

DM6446開發攻略:V4L2視頻驅動和應用分析

針對DAVINCI DM6446平臺,網絡上也有很多網友寫了V4L2的驅動,但只是解析Montavistalinux-2.6.10 V4L2的原理、結構和函數,深度不夠。本文決定把Montavista 的Linux-2.6.18 V4L2好好分析一下,順便講解在產品中的應用,滿足…

相機像素尺寸(像元大小)和成像系統分辨率之間的關系

相機像素尺寸(像元大小)和成像系統分辨率之間的關系 在顯微成像系統中,常常會用分辨率來評價其成像能力的好壞。這里的分辨率通常是指光學系統的極限分辨率以及成像探測器的圖像分辨率。最終圖像所呈現出的實際分辨率,取決于二者的…

H5網頁播放器播不了服務器上的mp4視頻文件

打開IIS,在功能視圖里找到MIME類型菜單,打開該菜單后鼠標右鍵添加.mp4擴展名的MIME類型video/mp4 其他視頻文件播放不了估計也得在IIS里添加對應的MIME類型(從服務器下載文件時也得添加對應的MIME類型) 轉載于:https://www.cnblog…

不定寬度居中

一、傳統方法 <div class"wrap"><div class"inner">html &#xff1a; 讓 inner 居中</div> </div> .wrap {float: left; /* 自適應內容寬度 */position: relative;left: 50%; } .inner {position: relative;left: -50%; } 二、…

文章目錄自動生成器

提供一個插件&#xff0c;可以實現segmentfault的文章目錄效果啦~~ 不止點擊跳轉還滾動激活當前鏈接 demo地址 使用很簡單 <!-- 文章容器 --> <div id"kCatelog"></div> <!-- 目錄容器 --> <div class"k-catelog-list" id"…

基于ARM+DSP進行應用開發-經驗共享

針對當前應用的復雜性&#xff0c;SOC芯片更好能能滿足應用和媒體的需求&#xff0c;集成眾多接口&#xff0c;用ARM做為應用處理器進行多樣化的應用開發和用戶界面和接口&#xff0c;利用DSP進行算法加速&#xff0c;特別是媒體的編解碼算法加速&#xff0c;既能夠保持算法的靈…

工業相機之全局曝光與卷簾曝光

曝光方式包括兩種&#xff1a; 全局曝光&#xff08;global shutter&#xff09;卷簾曝光&#xff08;rolling shutter&#xff09; CCD相機都是全局曝光&#xff0c;CMOS相機既有全局曝光也有卷簾曝光 全局曝光 全局曝光的方式比較簡單。也就是說光圈打開后&#xff0c;整個圖…

Hibernate入門注解筆記

Entity 代表實體 映射一張表 Table 定義表的屬性 Embeddable 定義類級別可以被嵌入 Id 指定主鍵 GeneratedValue 指定主鍵生成策略 Column指定列級別的屬性 Embedded 指定屬性為被包含類 將被包含類 作為 包含類的 字段屬性 寫入同一張表 EmbeddedId 指定包含類為特定主鍵 實…

.NET 環境中使用RabbitMQ

在企業應用系統領域&#xff0c;會面對不同系統之間的通信、集成與整合&#xff0c;尤其當面臨異構系統時&#xff0c;這種分布式的調用與通信變得越發重要。其次&#xff0c;系統中一般會有很多對實時性要求不高的但是執行起來比較較耗時的地方&#xff0c;比如發送短信&#…

css3 pointer-events:none 允許點擊穿透

開發時加了蒙層&#xff0c;卻可以點擊到蒙層下邊的元素。查了以后才發現是 pointer-events:none屬性具有允許點擊穿透的功能&#xff0c;將其設為 pointer-events:auto就好使了。事件穿透讓我想起了zepto.js中的tap事件同樣會引發事件穿透的效果。如果用tap事件是為了提升響應…

成像質量、像素個數、感光元件尺寸的關系

成像質量、像素個數、感光元件尺寸的關系 感光元件 (影像傳感器) 就是拍攝的照片最終成像的位置。相當于傳統相機里面的膠卷&#xff0c;不同相機的感光元件尺寸是不一樣的。 1. 像素的含義 兩個 100 平方米的房子 A 和 B&#xff0c;A 房子里面平均分成 10 個房間&#xff…

setjmp與logjmp用法總結

setjmp/logjmp的最大用途是錯誤恢復&#xff0c;只要還沒有從主函數退出&#xff0c;一旦發現一個不可恢復的錯誤&#xff0c;可以把主控制轉移大主函數循環&#xff0c;并從那從新開始。使用時必須包含頭文件<setjmp.h> setjmp與longjmp結合使用時&#xff0c;它們必須…

JQ對象到底是什么

jQuery對象是什么&#xff0c;舉個例子&#xff0c;$(#id) 返回的就是jQuery對象&#xff0c;這個東西是整個jQuery的核心所在&#xff0c;所以我先來分析它。 var jQuery function( selector, context ) { // The jQuery object is actually just the init constructor enhan…

15、iOS開發之duplicate symbols for architecture x86_64錯誤

1. 錯誤提示 2. 分析錯誤原因 3. 解決問題辦法 一、錯誤提示 在我們寫代碼過程中可能會經常遇到這樣一個錯誤&#xff1a; [objc] view plaincopy print?<span style"font-size:32px;color:#ff0000;">ld: 4 duplicate symbols for architecture x86_64 clang…

【死磕Java并發】----- 死磕 Java 并發精品合集

【死磕 Java 并發】系列是 LZ 在 2017 年寫的第一個死磕系列&#xff0c;一直沒有做一個合集&#xff0c;這篇博客則是將整個系列做一個概覽。 先來一個總覽圖&#xff1a; 【高清圖&#xff0c;請關注“Java技術驛站”公眾號&#xff0c;回復&#xff1a;腦圖JUC】 【死磕Java…

vs官方使用教程中文版與英文版

Visual Studio IDE 中文文檔 https://docs.microsoft.com/zh-cn/visualstudio/ide/ Visual Studio IDE documentation https://docs.microsoft.com/en-us/visualstudio/ide/