2017-06-14 123 views
0

我能夠使用Kernel Image項目中的輔助時鐘API,但是當試圖在RTP項目中使用相同的API時,例如sysAuxClkRateSet(int ticksPerSecond)我得到未定義的引用sysAuxClkRateSet錯誤。我正在研究Vxworks 7.0。我將API添加到自定義系統調用列表並嘗試使用,編譯器錯誤得到解決,但是當控件遇到該API時,它無法工作並且電路板正在重新啓動。我正在使用TI Sitara a9,4377電路板。任何關於如何獲得它的投入都會有幫助。提前致謝 !!在VxWorks RTP應用程序中不能使用sysAuxClkRateSet(int ticksPerSecond)

+0

您是否在Image項目中添加了所需的組件? – Harry

+0

RTP(用戶空間)不具有與DKM(內核空間)相同的權限。 另一種可能是sysAuxClkRate在內核配置上有限制 – endTunnel

+0

@Harry:Image Project? Image項目工作正常,問題在於RTP。是的,當我與Image項目一起嘗試時,我將所有必需的組件添加到配置中。 – Sukum

回答

0

sysAuxClkRateSet是內核空間API,不存在於用戶模式頭文件中。

爲了從RTP使用此功能,您可以使用諸如msgQ之類的機制將命令從RTP發送到內核空間任務,也可以編寫自定義系統調用來公開此函數。

對於這個特定的用例,您可能需要創建一個靜態系統調用,這意味着您可以直接從RTP調用sysAuxClkRateSet。這需要對VxWorks庫進行修改和重建,因此您可能希望將內核基於VSB項目而不是默認庫 - 儘管如果您使用的是VxWorks 7,則您將擁有VSB。

+0

感謝您的信息!無論如何,我已經實現了它使用靜態自定義系統調用,但我想知道我可以如何使用msgQ實現相同。您能否詳細介紹一下這種方法? – Sukum

+0

@Sukum基本思想是你在讀取msgQ的內核中有一個任務。當它收到消息時,它會調用sysAuxClkRateSet。你的RTP通過a發送一個msg,可能包含你想要設置的值。您可以擴展它以處理任意數量的命令,並且可以使用第二個q在需要時發送響應。 – mjs

+0

但這對於這個目的來說是過分的,而靜態系統調用是最好的方法。 – mjs

0

sysAuxClkRateSet是內核空間API,因此在RTP中不起作用。

相關問題