在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開(kāi)源:Qualcomm/Snapdragon設(shè)備USB端口中隱藏的JTAG

KiCad ? 來(lái)源: KiCad ? 作者: KiCad ? 2025-07-08 11:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

高通近期開(kāi)源了其強(qiáng)大的嵌入式USB調(diào)試(EUD)接口源代碼。這一舉措有望徹底改變高通平臺(tái)的底層開(kāi)發(fā)與調(diào)試體驗(yàn),使得以往需要昂貴專業(yè)設(shè)備的復(fù)雜調(diào)試工作,現(xiàn)在通過(guò)一根USB線即可輕松實(shí)現(xiàn)。

今年二月,高通悄悄地發(fā)布了用于與 EUD 交互的源代碼。這或許是他們近期所做的最激動(dòng)人心的事情之一,特別是如果你花費(fèi)大量時(shí)間調(diào)試內(nèi)核或 U-Boot 的話。

EUD 的全稱是Embedded USB Debug(嵌入式 USB 調(diào)試):本質(zhì)上,這是一個(gè)內(nèi)置于幾乎每一款自 2018 年以來(lái)高通 SoC 的調(diào)試接口。在內(nèi)部,它深入到 SoC 的核心,不僅為 CPU 提供調(diào)試功能,還為無(wú)數(shù)的 Hexagon 協(xié)處理器/DSP 提供支持。許多激動(dòng)人心的細(xì)節(jié)可以在這份追溯到 2014 年的專利中找到:

https://patents.google.com/patent/US20160124822A1/en

在實(shí)踐中,對(duì)于非生產(chǎn)設(shè)備(如開(kāi)發(fā)板),EUD 可以通過(guò)寫(xiě)入幾個(gè)寄存器然后啟動(dòng) USB phy 來(lái)啟用。與你可能預(yù)期的任何典型 USB 小工具不同,出現(xiàn)在你電腦上的是一個(gè) 7 端口的 USB 集線器,其中一個(gè)端口被“EUD 控制接口”占用。

通過(guò)發(fā)送正確的 USB 命令,第二個(gè)設(shè)備將會(huì)出現(xiàn),這個(gè)設(shè)備暴露了一個(gè)SWD 接口!沒(méi)錯(cuò)!SWD 直接通過(guò) USB 數(shù)據(jù)線實(shí)現(xiàn),無(wú)需外部工具,無(wú)需焊接,也無(wú)需昂貴的調(diào)試器。這種閉殼調(diào)試(幾乎)讓谷歌的 Suzy-Q 都相形見(jiàn)絀!

對(duì)于不熟悉的人來(lái)說(shuō):JTAG 和 SWD 都是用于調(diào)試設(shè)備內(nèi)部 CPU 核的機(jī)制,就像你可以使用 GDB 來(lái)調(diào)試你電腦上的程序(或你 IDE 的集成調(diào)試器)一樣。它們可以讓你設(shè)置斷點(diǎn)、暫停執(zhí)行、檢查寄存器、單步執(zhí)行指令以及進(jìn)行各種其他有用的操作。

代碼的發(fā)布

相當(dāng)長(zhǎng)一段時(shí)間以來(lái),高通在 CodeLinaro 上發(fā)布了一個(gè)引人注目的 OpenOCD 分支,承諾集成 EUD。然而,它依賴于一個(gè)當(dāng)時(shí)專有的 EUD 庫(kù),該庫(kù)僅對(duì)高通員工及其 OEM 合作伙伴開(kāi)放。

設(shè)備端部分(啟用 EUD 接口使其在你的電腦上顯示出來(lái))在一段時(shí)間內(nèi)已在上游 Linux 中得到部分支持。去年八月,有人嘗試為一些有額外需求的較新平臺(tái)擴(kuò)展此支持。這引發(fā)了一些關(guān)于內(nèi)核策略的討論:在 Linux 中擁有只能由某些內(nèi)部軟件使用的驅(qū)動(dòng)程序,并且這些軟件被高通及其付費(fèi)合作伙伴所把持,這是否可以接受?答案似乎是否定的,這似乎足以推動(dòng)高通朝著正確的方向前進(jìn),因?yàn)樵诔良帕?8 個(gè)月之后,我們終于等到了!

代碼終于發(fā)布了(https://github.com/quic/eud),同時(shí)更新了他們的 OpenOCD 分支,使其指向現(xiàn)在開(kāi)源的庫(kù),太棒了!

讓我們來(lái)試試…

src/swd_api.cpp:408:64: error: castfrom'std::nullptr_t'to'uint32_t'{aka'unsignedint'} loses precision [-fpermissive]408|    queue_swd_packet_special(swd_handle_p, SWD_CMD_STATUS, (uint32_t)NULL,&swd_status);` 

清理工作

公平地說(shuō),它幾乎肯定可以在 Ubuntu 20.10 上用高通的 GCC 8.x 工具鏈正常構(gòu)建。但那并不是大多數(shù)人正在使用的環(huán)境,我們必須修復(fù)這個(gè)問(wèn)題!

事實(shí)證明問(wèn)題不算太糟,只是一些小毛病。不過(guò),他們不知何故啟用了-Wall-Werror標(biāo)志,我們目前還不可能讓所有代碼都通過(guò)檢查。

在所有東西都能構(gòu)建之后,必要的修復(fù)(和一個(gè)全新的.gitignore文件)已經(jīng)提交到了高通的倉(cāng)庫(kù)。

現(xiàn)在我們已經(jīng)可以構(gòu)建 EUD 了,可以用 OpenOCD 來(lái)試試。看起來(lái)他們是基于最新的 OpenOCD 0.12.0 版本進(jìn)行修改的,非常好。但是等等,這個(gè)版本是 2023 年發(fā)布的,而 OpenOCD 仍在活躍開(kāi)發(fā)中……所以這中間有兩年的變更,而且:

; gitlog--oneline v0.12.0 up/master |wc-l10808

將近 11000 次提交!如果最終能將這些變更合并到上游就太好了,所以也許我們可以快速地進(jìn)行一次 rebase,反正我們也需要將它指向清理過(guò)的 EUD 分支。

在高通為支持 EUD 所做的更改中,還有一些增加了 Hexagon 調(diào)試支持的補(bǔ)丁(似乎還有一些對(duì) LLDB 的改進(jìn))。這些在過(guò)程中丟失了,但幾乎肯定值得在某個(gè)時(shí)候研究一下。

所以,我們花了一天來(lái)修復(fù)和 rebase 一些代碼庫(kù):

; ./src/openocd-f tcl/interface/eud.cfg-f tcl/target/qualcomm/qcom.cfgOpenOn-Chip Debugger0.12.0+dev-01935-g234bdc765544 (2025-04-02-15:20)Licensed under GNU GPL v2Forbug reports, read   http://openocd.org/doc/doxygen/bugs.htmlforce hard breakpointsInfo : Listeningonport6666fortcl connectionsInfo : Listeningonport4444fortelnet connectionsInfo :UsingEUD2.1.7Error:Translationfromadapter speedtokhznotimplementedInfo : adapter-specificclock speedvalue6Info : SWD DPIDR0x5ba02477Info : QCOM.cpu0: hardware has6breakpoints,4watchpointsInfo : [QCOM.cpu0] Examination succeedInfo : [QCOM.cpu0] starting gdb serveron3333Info : Listeningonport3333forgdb connectionsInfo : QCOM.cpu0 cluster0core0multi coreQCOM.cpu0 haltedinAArch64 state duetodebug-request,currentmode: EL0Tcpsr:0x00000000pc:0xffff95cf9a4cMMU: enabled, D-Cache: enabled, I-Cache: enabled

你可以在 linux-msm GitHub(https://github.com/linux-msm/openocd) 上找到 rebase 后的 OpenOCD 補(bǔ)丁,以及 README 文件中的一些快速入門(mén)說(shuō)明。到目前為止,這已經(jīng)在驍龍 845 上進(jìn)行了測(cè)試,對(duì)于 855 和 865 應(yīng)該也類似,我們只需修改啟用寄存器,然后使用 Linux 或 U-Boot 啟動(dòng)一個(gè) USB 小工具即可。然而,更新的 SoC 可能需要額外的更改,比如針對(duì) SM8450 的這些更改。希望這些舊的補(bǔ)丁系列現(xiàn)在能夠得到更新,因?yàn)楣ぞ叻矫娴那闆r已經(jīng)好多了!

實(shí)際用途

眾所周知,Torvalds 本人并不支持在內(nèi)核中使用調(diào)試器(盡管這沒(méi)有阻止 kgdb 的出色工作),他曾在 2000 年寫(xiě)道:

我不喜歡調(diào)試器。從來(lái)沒(méi)有,可能永遠(yuǎn)也不會(huì)。我不贊成通過(guò)單步執(zhí)行代碼來(lái)尋找 bug。

因此,JTAG 支持的實(shí)際用處確實(shí)取決于你的工作流程。在 Linaro 的高通落地團(tuán)隊(duì)中,由于成本和復(fù)雜性等典型原因,調(diào)試器從未成為我們工作的主要工具。然而,隨著越來(lái)越多的精力投入到非內(nèi)核領(lǐng)域,如 U-Boot 和 secure world,這種情況正在改變。

U-Boot 對(duì)我們來(lái)說(shuō)是一個(gè)明顯的例子,因?yàn)樗壳霸诒罎r(shí)不會(huì)提供堆棧跟蹤,診斷有時(shí)會(huì)是一個(gè)艱巨的過(guò)程,而使用(gdb) bt(gdb 的 backtrace 命令)會(huì)讓這個(gè)過(guò)程變得無(wú)限簡(jiǎn)單。

我們對(duì) EUD 為調(diào)試垂直集成的 BSP(板級(jí)支持包)所帶來(lái)的可能性特別感興趣,尤其是當(dāng) TF-A、OP-TEE 和 U-Boot 通過(guò) OpenEmbedded 的 Trusted Substrate 混合在一起時(shí)。

除了 SWD 外設(shè),還有一個(gè) COM (UART) 外設(shè)和一個(gè) trace(追蹤)外設(shè)。這些尚未被探索(也未集成到 OpenOCD 中),但它們應(yīng)分別允許雙向串行端口和 MMIO(內(nèi)存映射 I/O)追蹤。這些確實(shí)為生產(chǎn)環(huán)境中的閉殼調(diào)試開(kāi)辟了一些更有趣的用例.這似乎是高通有意為之,EUD 作為生產(chǎn)簽名過(guò)程的一部分被禁用,但可以通過(guò)一個(gè)(經(jīng)過(guò)加密驗(yàn)證的)“調(diào)試策略”重新啟用。

你能如何提供幫助

不同的 SoC 對(duì)調(diào)試基址和 CTI 基址寄存器使用不同的地址,啟用 EUD 所需的額外更改也不同。如果你能在你的板子/SoC 上成功實(shí)現(xiàn),請(qǐng)?jiān)?linux-msm 分支上提交一個(gè) issue,讓我們知道你是如何做到的。

此外,還有一個(gè)奇怪的現(xiàn)象,即 PRSR 寄存器的粘性復(fù)位位(sticky reset bit)總是被設(shè)置,這可能與 SMP(對(duì)稱多處理)有關(guān)。目前,OpenOCD 的粘性復(fù)位行為已被禁用,但查明其原因會(huì)很有幫助。

SMP 支持目前也普遍缺乏。配置文件已更新(以 rcar 為參考)以定義多個(gè) CPU 核心,但這在 Linux 中似乎無(wú)法正常工作。目前,如果你想實(shí)際調(diào)試你的內(nèi)核,建議使用maxcpus=1啟動(dòng)。

你的設(shè)備上是否可用 EUD 似乎取決于多種選項(xiàng):有用于配置允許何種調(diào)試功能的熔斷位(fuses),以及支持可覆蓋此行為的、由 OEM 簽名的“調(diào)試策略”。在至少一款生產(chǎn)設(shè)備(OnePlus 6)上,EUD 似乎通過(guò)熔斷位禁用了,但它卻能正常工作。該設(shè)備還啟用了非典型的“崩潰轉(zhuǎn)儲(chǔ)模式”,這表明 OnePlus 可能在發(fā)貨時(shí)使用了一個(gè)寬松的調(diào)試策略,或許是無(wú)心之失。

最后,雖然擁有合適的 JTAG 來(lái)調(diào)試內(nèi)核(尤其是當(dāng)它如此輕松時(shí)!)當(dāng)然非常有用,但顯而易見(jiàn)的問(wèn)題是:這能否用來(lái)獲得更高執(zhí)行級(jí)別的控制權(quán)?不幸的是,答案似乎是否定的。如果你確實(shí)設(shè)法在 EL2(執(zhí)行級(jí)別 2)暫停了執(zhí)行,所有寄存器都將讀作 0,并且似乎做不了太多事情,至少在生產(chǎn)設(shè)備上是這樣。如果你的板子表現(xiàn)不同,請(qǐng)務(wù)必告訴我們!

結(jié)論

EUD 為我們提供了一個(gè)巨大的新探索領(lǐng)域,并有潛力極大地改善在高通板子上進(jìn)行底層調(diào)試的體驗(yàn)。我們?yōu)樗F(xiàn)在被發(fā)布并可免費(fèi)使用感到非常興奮,并非常希望隨著工具和驅(qū)動(dòng)程序的更好集成,它將成為一種無(wú)縫的體驗(yàn)。

看到高通致力于改善開(kāi)發(fā)者體驗(yàn)并使其平臺(tái)更加開(kāi)放的承諾繼續(xù)體現(xiàn)在其行動(dòng)中,真是太棒了。EUD 有潛力節(jié)省昂貴調(diào)試設(shè)備的大量資金,大幅減少設(shè)置時(shí)間,并使遠(yuǎn)程調(diào)試變得更容易(毫無(wú)疑問(wèn),它最終將被集成到我們現(xiàn)有的遠(yuǎn)程調(diào)試工具中)。簡(jiǎn)而言之,這為所有在高通平臺(tái)上工作的人奠定了基礎(chǔ),我們迫不及待地想看到接下來(lái)的發(fā)展。


原文轉(zhuǎn)載自https://www.linaro.org/blog/hidden-jtag-qualcomm-snapdragon-usb/,經(jīng)翻譯、校對(duì)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 高通
    +關(guān)注

    關(guān)注

    77

    文章

    7618

    瀏覽量

    193123
  • JTAG
    +關(guān)注

    關(guān)注

    6

    文章

    404

    瀏覽量

    73256
  • USB端口
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    13095
  • USB調(diào)試
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    10923
  • Qualcomm
    +關(guān)注

    關(guān)注

    8

    文章

    677

    瀏覽量

    53376
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Qualcomm Snapdragon芯片架構(gòu)省電優(yōu)化淺析

    4K Ultra HD影片串流、播放和顯示輸出,以及Qualcomm VIVE 802.11ac高效能Wi-Fi傳輸?shù)燃夹g(shù)。Snapdragon 801處理器具體細(xì)節(jié),主要針對(duì)移動(dòng)裝置提供更具效能的處理
    發(fā)表于 09-19 18:01

    Qualcomm Snapdragon SDK開(kāi)發(fā)速成指南

    Windows Phone8的芯片。它不僅有著非常棒的設(shè)備兼容性,而且Qualcomm還給開(kāi)發(fā)者提供了Snapdragon SDK,這使開(kāi)發(fā)者可以針對(duì)應(yīng)用盡情優(yōu)化。Snapdragon
    發(fā)表于 09-20 11:52

    Snapdragon Profiler常見(jiàn)問(wèn)題總結(jié)

    的移動(dòng)設(shè)備。 2.在非驍龍?zhí)幚砥鞯?b class='flag-5'>設(shè)備上Snapdragon Profiler可以正常使用嗎? 在使用驍龍?zhí)幚砥鞯?b class='flag-5'>設(shè)備上運(yùn)用Snapdragon
    發(fā)表于 09-25 16:44

    驍龍神經(jīng)處理引擎(Snapdragon Neural Processing Engine)

    功能,旨在允許在設(shè)備上運(yùn)行受過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò),而無(wú)需連接到云端。 Qualcomm?Snapdragon?神經(jīng)處理引擎(NPE)SDK旨在幫助開(kāi)發(fā)人員在Snapdragon移動(dòng)平臺(tái)上運(yùn)
    發(fā)表于 09-27 16:53

    DS26900 JTAG信號(hào)復(fù)用器(中文資料)

    DS26900是一款JTAG信號(hào)復(fù)用器,能夠?qū)?路主機(jī)端口之一連接到18路(36路級(jí)聯(lián)配置)次級(jí)端口。該器件可以通過(guò)三個(gè)主機(jī)端口中的任意一路進(jìn)行配置。DS26900可自動(dòng)檢測(cè)次級(jí)
    發(fā)表于 02-18 09:51 ?1312次閱讀
    DS26900 <b class='flag-5'>JTAG</b>信號(hào)復(fù)用器(中文資料)

    Qualcomm發(fā)布全新Snapdragon Wear平臺(tái),開(kāi)啟可穿戴設(shè)備新時(shí)代

    2016年2月11日,圣迭戈——Qualcomm Incorporated(NASDAQ: QCOM)今日宣布,其子公司Qualcomm Technologies, Inc.發(fā)布面向下一代可穿戴設(shè)備
    發(fā)表于 02-16 10:01 ?1379次閱讀

    Qualcomm宣布借助領(lǐng)先產(chǎn)業(yè)系統(tǒng)公司的加入拓展Snapdragon Wear平臺(tái)

    Qualcomm Incorporated今日宣布,其子公司Qualcomm Technologies, Inc. 通過(guò)增加三家新的原始設(shè)備制造商(ODMs),拓展了其新一代Qualcomm
    發(fā)表于 02-18 11:18 ?866次閱讀

    Qualcomm Snapdragon Flight無(wú)人機(jī)平臺(tái)

    Qualcomm Snapdragon Flight無(wú)人機(jī)平臺(tái)
    發(fā)表于 02-10 15:47 ?70次下載

    Qualcomm年度十大SDK盤(pán)點(diǎn):Snapdragon SDK

    功能的App。 開(kāi)源機(jī)器人基金會(huì)加大對(duì)Qualcomm Snapdragon處理器的支持 Qualcomm?Snapdragon?處理器是
    發(fā)表于 09-18 19:07 ?525次閱讀

    Facebook和Qualcomm合作優(yōu)化Caffe2和Snapdragon NPE

    Qualcomm希望將機(jī)器學(xué)習(xí)移植到個(gè)人設(shè)備,幫助應(yīng)用程序以自己的方式頻繁利用機(jī)器學(xué)習(xí)技術(shù)。 Qualcomm Snapdragon NPE處理繁重的工作,為在
    發(fā)表于 09-18 19:16 ?214次閱讀

    Computex2016:Qualcomm展發(fā)布全新Snapdragon Wear處理器

    Qualcomm Technologies, Inc.發(fā)布全新Qualcomm? Snapdragon? Wear 1100處理器,面向快速增長(zhǎng)的專用可穿戴設(shè)備細(xì)分領(lǐng)域,例如聯(lián)網(wǎng)兒童與
    發(fā)表于 09-18 19:36 ?198次閱讀

    Qualcomm Snapdragon Ride是汽車行業(yè)中可擴(kuò)展的自動(dòng)駕駛解決方案之一

    Qualcomm Incorporated子公司Qualcomm Technologies, Inc.今日在2020年國(guó)際消費(fèi)電子展(CES 2020)上推出全新Qualcomm
    發(fā)表于 01-07 14:55 ?1019次閱讀

    USB轉(zhuǎn)JTAG小板 (一)

    為什么有 usb 轉(zhuǎn) jtag 小板因?yàn)?arm的 DP 有 jtag-DP , riscv 有 jtag-dtm , 而上位機(jī) 有 USB
    發(fā)表于 12-14 19:06 ?2次下載
    <b class='flag-5'>USB</b>轉(zhuǎn)<b class='flag-5'>JTAG</b>小板 (一)

    USB串行端口完全突破和微小開(kāi)源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《USB串行端口完全突破和微小開(kāi)源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-20 18:03 ?0次下載
    <b class='flag-5'>USB</b>串行<b class='flag-5'>端口</b>完全突破和微小<b class='flag-5'>開(kāi)源</b>項(xiàng)目

    未知USB設(shè)備所需電量超出該端口怎么解決?

    未知USB設(shè)備所需電量超出該端口怎么解決? 解決未知USB設(shè)備所需電量超出端口限制的問(wèn)題可以從以
    的頭像 發(fā)表于 12-09 14:23 ?3.2w次閱讀
    主站蜘蛛池模板: brazzers720欧美丰满 | 色激情五月 | 午夜国产高清精品一区免费 | 中文字幕国产一区 | 日本免费黄色网 | 手机在线观看a | 狠狠色丁香婷婷综合久久片 | 美女和帅哥在床上玩的不可描述 | 免费播放黄色 | 成人夜夜嗨 | 成年男人永久免费看片 | 狠狠干狠狠干 | 狠狠色狠狠色综合网 | 欧美黄色录像视频 | 妖精视频一区二区三区 | 天天狠狠色噜噜 | 成人在线看片 | 色综合久久综合欧美综合图片 | 在线视频一区二区三区 | 亚洲狠狠婷婷综合久久久久图片 | 国产亚洲欧洲人人网 | 色黄网 | 热99视频 | 男男np主受高h啪啪肉 | 四虎影院.com | 亚洲国产精品久久精品怡红院 | 女人精aaaa片一级毛片女女 | 中国一级特黄aa毛片大片 | 中文字幕一区二区三区四区 | 四虎影院在线免费观看 | 好硬好湿好爽再深一点h视频 | 久久国产香蕉视频 | 日本黄色一级网站 | 国产欧美日韩电影 | 九九视频这里只有精品 | 高清一级做a爱免费视 | 天天做人人爱夜夜爽2020 | 欧美精品久久久久久久小说 | 五月婷婷色视频 | 亚洲欧洲综合网 | 国产成人永久免费视频 |