2016-04-28 36 views
-1

我是一名學生中國,我試圖將操作系統(Barrelfish)移植到Jetson TK1上。 現在我已經使主要核心工作。我如何啓動Jetson TK1中的次級核心(arm a15)

但是當我開始處理次要核心時,就出現了問題。首先,我只知道使用「SEV」指令可以喚醒核心(在WFE或WFI中)。我不知道我還有什麼要做?

最重要的是我不知道如何設置輔助核心的啓動地址。

我試圖從Jetson TK1的linux代碼中找到答案,但是我沒有找到任何設置地址的代碼。

你能告訴我要我應該做什麼嗎?

+0

我自己並沒有碰過Tegra,但我非常懷疑次要核心會在線,並且在引導加載程序中執行WFE循環 - 它們幾乎肯定需要上電並從復位中釋放。如果你幸運的話,可能會有一些固件可以打電話給你做這份工作;如果你不幸的話,它會涉及到那些特定的SoC所要求的棘手的功率控制器等複雜的舞蹈。從mainline Linux的arch/arm/mach-tegra/platsmp.c中快速瀏覽一下,我懷疑你可能很不走運...... – Notlikethat

+0

我假定每個內核都有單獨的重置和啓用。但是如果你看看樹莓派,他們會立即釋放它們,早期啓動軟件必須將它們整理出來。儘管它是芯片特定的,並且您需要查找芯片文檔,但它仍然是芯片外的核心。我假設次要核心也像小學一樣從零開始,這應該在arm文檔中。 –

回答

0

我已經明白了。感謝所有關心這個問題的人。

在jetson tk1 TRM中,我剛剛發現cpu從復位向量寄存器(位於EVP寄存器)[TRM 15.1.6.2]中獲取代碼,EVP的描述非常簡單。如下:

EVP register

這:

enter image description here

所以我試着寫引導地址爲00000000,但它並沒有影響。

最後,我不得不嘗試使用u-boot轉儲內存(md 0x0 100)。

我在0x400的和0x500處發現一個有用的值(0x83d8e000,的U-Boot的加載地址)...(從0×400到從0x1400)

所以我試着寫barrelfish的內存開機地址(所有字節0x400-0x1400),次要核心工作!

然後我試圖找到真正的二級核心註冊,它的0x500

順便說一下,啓動輔助核心的代碼來自linux。

就這些,我的英語很差。如果我的話有任何錯誤,請原諒我。

相關問題