日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 工業(yè)控制 > 電路設(shè)計項目集錦
[導(dǎo)讀]這一切都開始于一個“簡單”的HDL調(diào)整-你知道,只是添加一個小的自定義IP和一個額外的DMA。Vivado很高興,比特流產(chǎn)生了,ZCU102的燈像迪斯科舞廳一樣閃爍。接下來是真正的boss大戰(zhàn):讓Linux啟動。

這一切都開始于一個“簡單”的HDL調(diào)整-你知道,只是添加一個小的自定義IP和一個額外的DMA。Vivado很高興,比特流產(chǎn)生了,ZCU102的燈像迪斯科舞廳一樣閃爍。接下來是真正的boss大戰(zhàn):讓Linux啟動。

Petalinux非常引人注目,它拋出了警告、依賴性發(fā)脾氣和“設(shè)備樹不匹配”,這可能會讓任何工程師質(zhì)疑他們的生活選擇。

如果您對這個故事感到熟悉,那么恭喜您,您已經(jīng)進入了adi公司ADRV9009平臺定制工程師精英俱樂部。

本教程是您的健康路線圖:我們將使用Vivado和Petalinux 2024.2重新構(gòu)建ADRV9009 + ZCU102的Linux映像,為您的自定義HDL設(shè)計完美調(diào)整-沒有隱藏腳本,沒有黑魔法,只是干凈,可重復(fù)的步驟。

2. 概述:我們正在構(gòu)建的內(nèi)容

那么,任務(wù)是什么?我們不是在這里從頭開始編寫內(nèi)核或召喚Linux之神-我們只是想要一個穩(wěn)定的,可引導(dǎo)的Petalinux映像,它可以與基于Analog Devices的ADRV9009 + ZCU102參考設(shè)計的自定義HDL設(shè)計無縫協(xié)作。

Ob jective

重建一個Linux鏡像(BOOT.BIN + image. zip)。b)與您修改的HDL項目兼容,其中包括:

ADRV9009收發(fā)鏈

?自定義IP塊(AXI流接口)

?一個額外的ADI DMA IP (AXI內(nèi)存映射接口)

?Zynq UltraScale+ MPSoC (ZCU102)

最后,你會得到:

?在硬件上運行Linux的可引導(dǎo)SD卡

?為RF前端正確加載IIO驅(qū)動程序

To ols & Environment

專業(yè)提示:始終匹配您的Vivado和Petalinux版本-混合工具鏈就像跨線程BNC連接器:它可能適合,但您稍后會后悔。

最終目標(biāo)

在本教程結(jié)束時,您將擁有一個經(jīng)過驗證的Linux映像:

?成功啟動您的定制HDL設(shè)計

?識別ADRV9009, SPI, IIO和DMA設(shè)備

?啟用調(diào)試、流和用戶空間測試

3. 先決條件

在繼續(xù)之前,確保只準(zhǔn)備好這兩件事:

?已安裝Petalinux 2024.2并獲取其環(huán)境源

?自定義HDL硬件(.xsa)文件(帶比特流)從Vivado導(dǎo)出

就是這樣,您已經(jīng)為構(gòu)建做好了準(zhǔn)備。

4. 搭建環(huán)境

用你的。xsa準(zhǔn)備好了,Petalinux也安裝好了,現(xiàn)在是準(zhǔn)備構(gòu)建工作區(qū)的時候了。

創(chuàng)建工作目錄

首先,讓我們創(chuàng)建一個父文件夾,這個文件夾將包含所有的圖像構(gòu)建材料和克隆的元圖層文件夾,然后移動到這個文件夾。

Petalinux環(huán)境的源代碼

現(xiàn)在將petalinux工具鏈源到petalinux安裝目錄下的這個文件夾中,特別是settings.sh文件。

克隆所需存儲庫

現(xiàn)在通過模擬設(shè)備將meta-adi yocto層克隆到父文件夾

創(chuàng)建一個新的Petalinux項目

現(xiàn)在在父文件夾中創(chuàng)建一個petalinux項目

5. 使用自定義硬件構(gòu)建Linux映像

現(xiàn)在讓我們開始建造吧,我假設(shè)你。從您的vivado成功構(gòu)建Xsa文件。

提示:確保指向包含。Xsa文件-不是。Xsa文件本身。否則,您將遇到AMD Xilinx更新的Petalinux構(gòu)建工作流中引入的SDT錯誤。

在我的例子中命令是這樣的:

這將打開Petalinux System Configuration GUI,如圖5所示。導(dǎo)航到Y(jié)octo設(shè)置→用戶層→用戶層0(新),并輸入克隆存儲庫的路徑:

. . / meta-adi / meta-adi-xilinx

然后Save and Exit應(yīng)用更改。完整的流程如下圖所示。

提示一:

大多數(shù)設(shè)置都是根據(jù)XSA中指定的硬件設(shè)計細(xì)節(jié)自動配置的。我發(fā)現(xiàn)自己在大多數(shù)PetaLinux項目中更新的主要硬件配置設(shè)置位于Image Packaging configuration選項卡下。這是配置根文件系統(tǒng)類型和相關(guān)引導(dǎo)設(shè)置的地方。特別是對于基于zynqmp的設(shè)計,我的根文件系統(tǒng)位于SD卡上。我還希望它是持久的(即-它保持電力循環(huán)之間的變化)。因此,在根文件系統(tǒng)類型下,將其更改為EXT4 (SD/eMMC/SATA/USB)。

圖11顯示了保存并退出后應(yīng)該看到的日志。

(b)到目前為止,我們已經(jīng)成功添加了meta-adi-xilinx Yocto用戶層?,F(xiàn)在,我們需要通過將內(nèi)核指向正確的設(shè)備樹配置來更新默認(rèn)設(shè)備樹配置。dts文件。您可以使用以下命令直接從終端執(zhí)行此操作:

echo "KERNEL_DTB=\"${dts_to_use}\"" >> project-spec/meta-user/conf/petalinuxbsp.conf .

這確保了Petalinux構(gòu)建使用ADRV9009 + ZCU102設(shè)計的預(yù)期設(shè)備樹blob (DTB)。

在這個例子中,對于adi公司的ADRV9009 + ZCU102參考設(shè)計,我使用的設(shè)備樹文件是:

zynqmp-zcu102-rev10-adrv9009-jesd204-fsm

注意:請確保不包含任何文件擴展名(如。dts或。Dtb)在名稱的末尾-只有基本文件名。

下圖顯示了在我的設(shè)置中使用的確切終端命令。

重要提示:運行命令后,打開project-spec/meta-user/conf/petalinuxbsp.conf文件,檢查是否正確添加了完整的設(shè)備樹名稱。有時名稱的某些部分可能會被截斷,這可能導(dǎo)致在構(gòu)建過程中出現(xiàn)無盡的“未找到文件”錯誤-因此值得仔細(xì)檢查!

(c)“有趣”部分-自定義設(shè)備樹修改

好了,現(xiàn)在是這個過程中最“令人愉快”的部分——編輯設(shè)備樹。

首先,我們有意地讓第一個構(gòu)建失敗(是的,是有意的)。這將生成pl.dtsi文件——Petalinux基于.xsa創(chuàng)建的自動生成的設(shè)備樹。

現(xiàn)在,這里有一個問題:雖然AMD/Xilinx在處理自己的ip方面做得很好,但其他方面……我們只能說Petalinux對第三方區(qū)塊的猜測充其量是樂觀的。

換句話說,您通常會為您的ADI ip得到一個可愛的垃圾節(jié)點集合。

為了解決這個問題,Analog Devices采取了干凈的路線——他們刪除了petalinux為ADI ip生成的節(jié)點,并用正確的參數(shù)覆蓋他們自己的設(shè)備樹。

我們將遵循同樣的理念:

?檢查Petalinux生成了哪些節(jié)點。

?使用清理文件刪除不正確的。

在system-user中添加正確的ADI設(shè)備樹節(jié)點。Dtsi文件-位于其他所有文件之上的文件。

因為沒有什么比刪除您的工具剛剛自豪地構(gòu)建的一半更能說明“定制嵌入式Linux”了。

在項目目錄中導(dǎo)航到構(gòu)建文件夾并鍵入

從現(xiàn)在開始,喝一大杯(或三杯)咖啡——這部分將是一場馬拉松。錯誤會像打地鼠一樣彈出,但不要擔(dān)心—我們將一個接一個地查找它們,直到Petalinux最終揮動白旗并構(gòu)建。錯誤1:License Checksum Mismatch

jsd -status-dev-r0 do_populate_lic: QA問題:jsd -status: LIC_FILES_CHKSUM不匹配file://license .txt;md5 = 38 c01601d5c4b84986a8f48ece946aa1

jed -status:新的md5校驗和為982e522e7ec5a0beed8de5114ebfea50

啊,是的——經(jīng)典的LIC_FILES_CHKSUM不匹配。這通常發(fā)生在包中的許可文本被更新,但配方仍然引用舊的校驗和時。

修復(fù):只需復(fù)制錯誤日志中顯示的新MD5校驗和,并替換導(dǎo)致問題的配方文件中的舊校驗和。

在我的例子中,錯誤指向:

meta-adi / meta-adi-xilinx recipes-support / jesd-status / jesd-status_dev.b

于是,我打開了。并將舊的MD5替換為新的MD5:

LIC_FILES_CHKSUM = "file://LICENSE.txt;md5 = 982 e522e7ec5a0beed8de5114ebfea50”

對于顯示相同問題的任何其他包重復(fù)此操作。這是一個無害的“歡迎來到Y(jié)octo”時刻——乏味,但卻是入會儀式的一部分。此外,不要取消構(gòu)建,即使它正在繼續(xù)執(zhí)行一些其他任務(wù)

錯誤2:取回錯誤

錯誤:linux-xlnx-6.6.40-adi-v2025.1+git-r0 do_fetch: Fetcher失?。?

獲取命令export PSEUDO_DISABLED=1;出口SSL_CERT_DIR =…

這是典型的“獲取失敗”——基本上是Petalinux在說“我無法連接互聯(lián)網(wǎng),請修復(fù)你的Wi-Fi”。

修復(fù):只要確保你有一個穩(wěn)定的互聯(lián)網(wǎng)連接,然后重新運行構(gòu)建:

petalinux-build

十有八九,這個錯誤會在連接正常的那一刻消失——不需要深入調(diào)試。

錯誤3:內(nèi)核版本完整性檢查失敗

錯誤:linux-xlnx-6.6.40- di-v2025.1+git-r0 do_kernel_version_sanity_check:

包版本(6.6.40-adi-v2025.1+git)與正在構(gòu)建的內(nèi)核(6.12)不匹配。

請更新PV變量以匹配內(nèi)核源或集

你的配方中的KERNEL_VERSION_SANITY_SKIP="1"。

啊,臭名昭著的內(nèi)核版本不匹配——Petalinux用這種方式提醒我們,它希望所有東西都完美匹配(即使它無關(guān)緊要)。

解決辦法:這個是無害的。構(gòu)建環(huán)境中的內(nèi)核版本與配方中指定的內(nèi)核版本不一致。要使警告靜音(并保持完整),只需將這一行添加到Linux配方文件中:

Kernel_version_sanity_skip = “1”

您將在錯誤日志的最后一行找到正確的配方位置,例如:

meta-xilinx / meta-xilinx-core recipes-kernel / linux / linux-xlnx_6.6.40-v2024.2.bb

編輯完成后,保存文件并重新構(gòu)建:

petalinux-build

Petalinux將高興地停止抱怨版本不匹配——因為有時候,無知是福。

(d)修改設(shè)備樹

最后——構(gòu)建失敗。好消息:這正是我們想要的。為什么?因為此故障生成pl.dtsi文件—從.xsa派生的自動生成的設(shè)備樹。

在我定制的ADRV9009 + ZCU102參考設(shè)計中,我添加了:

基于軸流的DSP IP

ADI axis - dma控制器IP(內(nèi)存映射)。

當(dāng)Petalinux創(chuàng)建設(shè)備樹時,新的DMA綁定到一個名為misc_clk_0的時鐘。但是ADI的Yocto層包含一個清除機制,可以刪除許多自動生成的節(jié)點——包括這個時鐘。結(jié)果:構(gòu)建失敗。(圖12顯示了“misc_clk_0 not found”錯誤。)

目標(biāo)是什么?

我們將遵循ADI的清理流程,使我們的自定義硬件運行良好:

生成pl.dtsi(通過失敗的構(gòu)建完成)。

識別其中的自定義IP節(jié)點。

通過ADI的pl-delete文件顯式刪除這些節(jié)點。

在system-user.dtsi中添加這些節(jié)點的正確的手寫版本。

步驟1 -識別自定義節(jié)點

導(dǎo)航到:

組件/ plnx_workspace /設(shè)備樹/設(shè)備樹

打開pl.dtsi并查找屬于自定義ip的節(jié)點。就我而言:

axi_dmac_0: axi_dmac@80000000 {

clock-names = "m_dest_axi_aclk", "s_axi_aclk", "s_axis_aclk";

clocks = <&zynqmp_clk 72>, <&zynqmp_clk 71>, <&misc_clk_0>;

compatible = "xlnx,axi-dmac-1.0";

reg = <0x0 0x80000000 0x0 0x10000>;

};

這是我們自動生成的節(jié)點,我們將很快用一個干凈的節(jié)點替換它。

步驟2 -添加節(jié)點到ADI的刪除列表

進入ADI層:

meta-adi / meta-adi-xilinx / recipes-bsp /設(shè)備樹/文件/打開:

pl-delete-nodes-zynqmp-zcu102-rev10-adrv9009-jesd204-fsm.dtsi

在頂部,你會看到包含如下內(nèi)容:

/ include /“pl-delete-nodes-zynqmp-zcu102-hdl-adrv9009.dtsi”

第二個文件實際上包含刪除命令。pl-delete-nodes-zynqmp-zcu102-hdl-adrv9009開放。Dtsi并添加節(jié)點的刪除行:

/ delete-node / &axi_dmac_0;

為什么:這告訴Petalinux在構(gòu)建期間從pl.dtsi中刪除自動生成的DMA節(jié)點。稍后,我們將在system-user.dtsi中重新添加一個正確定義的版本。

(圖13顯示了修改后的刪除節(jié)點文件。)

步驟3—在system-user.dtsi中添加Clean Node

現(xiàn)在編輯:

說明/ meta-user / recipes-bsp /設(shè)備樹/文件/ system-user.dtsi

將新的DMA節(jié)點附加到其余內(nèi)容下面:

/include/ "system-conf.dtsi"

/ {

};

&fpga_axi {

pdm_dmac: dma-controller@8000000 {

compatible = "adi,axi-dmac-1.00.a";

reg = <0x8000000 0x10000>; // Base address and size

dma-controller;

interrupts-extended = <>;

#dma-cells = <1>;

#clock-cells = <0>;

dma-coherent;

clocks = <&zynqmp_clk 73>;

};

};

提示:此頂級文件覆蓋已刪除的節(jié)點,并在構(gòu)建時注入干凈的定義。這就是ADI層保持模塊化的方式——所有自定義的東西都在這里,而不是直接在pl.dtsi中。

最后指出

在pl-delete-nodes中刪除…確保ADI的清理不會重新生成錯誤的自動生成配置。

添加到system-user。dtsi確保Linux完全按照預(yù)期看到您的DMA和時鐘綁定。

在這之后,cd…從構(gòu)建文件夾中重新運行構(gòu)建:

petalinux-build

再抓一個——這次,它會過去的。瞧!構(gòu)建成功了!

如果一切順利(并且在此過程中沒有意外地刪除理智),Petalinux將最終完成構(gòu)建。

現(xiàn)在,您應(yīng)該在終端上看到類似于圖14的成功消息——這是每個工程師夢寐以求的美好時刻:

“構(gòu)建成功完成。”

深吸一口氣,喝一口遺忘已久的咖啡,向自己點一點頭——您剛剛像專業(yè)人士一樣為ADRV9009 + ZCU102構(gòu)建了一個自定義Linux映像。

6. 打包引導(dǎo)二進制文件(Boot . bin)

一旦項目成功構(gòu)建,就該生成引導(dǎo)二進制文件了- boot . bin .該文件結(jié)合了ZynqMP設(shè)備正確啟動所需的基本引導(dǎo)組件。

在我的情況下,我是從SD卡引導(dǎo)ZCU102,所以BOOT.BIN必須至少包括:

?FSBL(第一階段引導(dǎo)加載程序)

?FPGA位流(.bit)

?U-Boot引導(dǎo)加載程序

所有這些文件都是在Petalinux項目的輸出目錄中自動生成的:

現(xiàn)在把它們包裝在一起,使用:

這個命令在映像目錄中創(chuàng)建BOOT.BIN文件,準(zhǔn)備放到SD卡上進行引導(dǎo)。

提示:如果您稍后重新構(gòu)建項目并需要重新生成引導(dǎo)映像,請使用——force標(biāo)志來覆蓋現(xiàn)有文件:

我的屏幕日志如圖12所示。

7:包裝SD卡鏡像

如果從SD卡引導(dǎo)(而不是直接引導(dǎo)到INITRD或INITRAMFS), PetaLinux提供了一個方便的內(nèi)置實用程序來創(chuàng)建完整的SD卡映像。此工具將所有內(nèi)容打包到??梢允褂弥T如balenaEtcher、Rufus或dd等實用程序?qū)D像文件閃入SD卡。

命令概述

PetaLinux使用PetaLinux -package命令和——wic標(biāo)志來創(chuàng)建這個映像。

在我的設(shè)置中(從SD卡啟動ZCU102板),在SD卡的啟動分區(qū)中需要以下文件:

?BOOT.BIN→引導(dǎo)程序二進制文件(FSBL + bitstream + U-Boot)

?image.ub→合并Linux內(nèi)核和根文件系統(tǒng)映像

?system.dtb→設(shè)備樹Blob

?boot.scr→U-Boot啟動腳本

根文件系統(tǒng)本身(rootfs.tar.gz)放在SD卡的根分區(qū)中。

完整命令示例

在PetaLinux項目目錄下運行以下命令:

期待什么

?該過程可能需要幾分鐘才能完成,具體取決于系統(tǒng)的I/O速度。

?生成。鏡像通常在6 - 7gb左右,所以確保你至少有一個8gb的SD卡可用。

?一旦完成,。哪個映像將出現(xiàn)在項目的images/linux/目錄中。

閃爍SD卡

你現(xiàn)在可以閃光了。在我的案例中,我使用的是balena蝕刻器。

8. 啟動板

現(xiàn)在是最有趣的部分了——讓您的新構(gòu)建的Linux系統(tǒng)煥發(fā)生機!

?插入SD卡:將SD卡(帶有PetaLinux映像)插入主板的SD插槽,如圖15所示。

?設(shè)置啟動方式(ZCU102):對于ZCU102,將啟動方式開關(guān)(ZCU102為SW6)設(shè)置為從SD卡啟動:

On | off | off | off

(開關(guān)位置見圖16)

?為串行控制臺連接UART:使用micro-USB電纜將ZCU102上的UART轉(zhuǎn)usb端口連接到主機PC(參見圖17)。該連接將允許您查看引導(dǎo)日志并與Linux控制臺進行交互。

?安裝ADRV9009 FMC卡:將ADRV9009收發(fā)板固定在ZCU102上的HPC1 FMC連接器上,如圖18所示。

?打開串行終端:啟動您最喜歡的串行終端程序- PuTTY, TeraTerm或類似程序。選擇合適的端口(在我的例子中是/dev/ttyUSB0)。波特率設(shè)置為115200。

一旦所有東西都連接好并通電,您就可以正式啟動到您的定制PetaLinux + ADI系統(tǒng)了。坐下來,看著引導(dǎo)日志滾動,享受Linux終于迎接您的甜蜜時刻——祝賀您,您已經(jīng)從零開始構(gòu)建了它!

結(jié)論

現(xiàn)在,您已經(jīng)成功地為ADRV9009 + ZCU102平臺構(gòu)建了自定義PetaLinux映像,集成了您自己的基于hdl的硬件設(shè)計,并確保了設(shè)備樹的兼容性。這個過程演示了完整的流程——從準(zhǔn)備環(huán)境和合并元數(shù)據(jù)層,到解決構(gòu)建時問題和在硬件上部署最終映像。

您的設(shè)置現(xiàn)在可以在Zynq UltraScale+ SoC上進行更高級別的系統(tǒng)驗證、驅(qū)動程序集成和應(yīng)用程序開發(fā)。無論您計劃擴展功能,執(zhí)行性能測量,還是集成實時DSP工作負(fù)載,這都是進一步開發(fā)的堅實基礎(chǔ)。

本文編譯自hackster.io

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

特朗普集團近日取消了其新推出的T1智能手機“將在美國制造”的宣傳標(biāo)語,此舉源于外界對這款手機能否以當(dāng)前定價在美國本土生產(chǎn)的質(zhì)疑。

關(guān)鍵字: 特朗普 蘋果 AI

美國總統(tǒng)特朗普在公開場合表示,他已要求蘋果公司CEO蒂姆·庫克停止在印度建廠,矛頭直指該公司生產(chǎn)多元化的計劃。

關(guān)鍵字: 特朗普 蘋果 AI

4月10日消息,據(jù)媒體報道,美國總統(tǒng)特朗普宣布,美國對部分貿(mào)易伙伴暫停90天執(zhí)行新關(guān)稅政策,同時對中國的關(guān)稅提高到125%,該消息公布后蘋果股價飆升了15%。這次反彈使蘋果市值增加了4000多億美元,目前蘋果市值接近3萬...

關(guān)鍵字: 特朗普 AI 人工智能 特斯拉

3月25日消息,據(jù)報道,當(dāng)?shù)貢r間3月20日,美國總統(tǒng)特朗普在社交媒體平臺“真實社交”上發(fā)文寫道:“那些被抓到破壞特斯拉的人,將有很大可能被判入獄長達20年,這包括資助(破壞特斯拉汽車)者,我們正在尋找你?!?/p> 關(guān)鍵字: 特朗普 AI 人工智能 特斯拉

1月22日消息,剛剛,新任美國總統(tǒng)特朗普放出重磅消息,將全力支持美國AI發(fā)展。

關(guān)鍵字: 特朗普 AI 人工智能

特朗普先生有兩件事一定會載入史冊,一個是筑墻,一個是挖坑。在美墨邊境筑墻的口號確保邊境安全,降低因非法移民引起的犯罪率過高問題;在中美科技產(chǎn)業(yè)之間挖坑的口號也是安全,美國企業(yè)不得使用對美國國家安全構(gòu)成威脅的電信設(shè)備,總統(tǒng)...

關(guān)鍵字: 特朗普 孤立主義 科技產(chǎn)業(yè)

據(jù)路透社1月17日消息顯示,知情人士透露,特朗普已通知英特爾、鎧俠在內(nèi)的幾家華為供應(yīng)商,將要撤銷其對華為的出貨的部分許可證,同時將拒絕其他數(shù)十個向華為供貨的申請。據(jù)透露,共有4家公司的8份許可被撤銷。另外,相關(guān)公司收到撤...

關(guān)鍵字: 華為 芯片 特朗普

曾在2018年時被美國總統(tǒng)特朗普稱作“世界第八奇跡”的富士康集團在美國威斯康星州投資建設(shè)的LCD顯示屏工廠項目,如今卻因為富士康將項目大幅縮水并拒絕簽訂新的合同而陷入了僵局。這也導(dǎo)致富士康無法從當(dāng)?shù)卣抢铽@得約40億美...

關(guān)鍵字: 特朗普 富士康

今年5月,因自己發(fā)布的推文被貼上“無確鑿依據(jù)”標(biāo)簽而與推特發(fā)生激烈爭執(zhí)后,美國總統(tǒng)特朗普簽署了一項行政令,下令要求重審《通信規(guī)范法》第230條。

關(guān)鍵字: 谷歌 facebook 特朗普

眾所周知,寄往白宮的所有郵件在到達白宮之前都會在他地進行分類和篩選。9月19日,根據(jù)美國相關(guān)執(zhí)法官員的通報,本周早些時候,執(zhí)法人員截獲了一個寄給特朗普總統(tǒng)的包裹,該包裹內(nèi)包含蓖麻毒蛋白。

關(guān)鍵字: 美國 白宮 特朗普
關(guān)閉