OrangePi Zero 3學習筆記(Android篇)5 - usbutils編譯(更新lsusb)

目錄

1. Ubuntu中編譯

2. AOSP編譯

3. 去掉原來的配置

3. 打包

4. 驗證lsusb


在Ubuntu中,lsusb的源代碼源自usbutils。而OrangePi Zero 3中lsusb的位置可以看文件H618-Android12-Src/external/toybox/Android.bp,

"toys/other/lsusb.c",

1. Ubuntu中編譯

  • 安裝libudev
sudo apt install libudev-dev
  • 執行autogen
./autogen.sh
  • 執行configure
./configure
  • 執行make和make clean
make
make clean

2. AOSP編譯

將usbutils整個文件夾拷貝到H618-Android12-Src/external/內,新建一個android.bp

cc_binary {name: "lsusb",//proprietary: true,//product_specific: true,srcs: ["lsusb.c","lsusb-t.c","desc-defs.c","desc-dump.c","names.c","sysfs.c","usbmisc.c",],include_dirs: [ "external/libusb/include/libusb",],local_include_dirs: ["usbhid-dump",],shared_libs: ["libudev","libusb",],
}

拷貝eudev里面的libudev.h和udev.h到當前文件夾,然后再這個文件夾內新建一個lib文件夾,把上一步生成的libudev.so拷貝到這個文件夾內。

編譯這個模塊

mmm external/usbutils-017/

錯誤信息:

  • error: unused parameter 'indent' [-Werror,-Wunused-parameter]

這是因為這些函數的參數沒有使用到,分別找到這幾個函數,把這個參數利用起來,例如:

static void desc_snowflake_dump_uac2_clk_src_bmattr(unsigned long long value,unsigned int indent)
{printf(" %s clock %s, indent %d\n",uac2_clk_src_bmattr[value & 0x3],(value & 0x4) ? uac3_clk_src_bmattr[3] : "", indent);
}
  • external/usbutils-017/usb-spec.h:91:9: error: missing field 'termt' initializer[-Werror,-Wmissing-field-initializers]

找到對應位置,將{ NULL },改為{ NULL, 0, "" },

這個文件里面其他位置也是這樣改。

3. 去掉原來的配置

把external/toybox/Android.bp里面的文件關于lsusb部分去掉,以“lsusb”為關鍵字搜一下

"toys/other/lsusb.c",//"lsusb",

注意,這里lsusb.c還是要編譯,不然會提示錯誤,找不到lsusb_main

3. 打包

在device/softwinner/apollo/apollo_p2.mk文件中添加

PRODUCT_PACKAGES += lsusb

4. 驗證lsusb

console:/ $ lsusb
unable to initialize usb specBus 001 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 002 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 003 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 003 Device 002: ID 0403:6011 FTDI FT4232H MiniModule
Bus 004 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller
Bus 005 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller
Bus 006 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller

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

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

相關文章

bcm5482 phy 場景總結

1,BCM5482是一款雙端口10/100/1000BASE-T以太網PHY芯片,支持多種速率和雙工模式。其配置主要通過MDIO(Management Data Input/Output)接口進行,MDIO接口用于訪問PHY芯片內部的寄存器,從而配置網絡速率、雙工模式以及其他相關參數。 a,具體以下面兩種場景舉例 2. 寄存器和…

RedHat磁盤的添加和擴容

前情提要 🧱 磁盤結構流程概念圖: 物理磁盤 (/dev/sdX) └── 分區(如 /dev/sdX1)或整塊磁盤(直接使用) └── 物理卷 (PV, 用 pvcreate) └── 卷組 (VG, 用 vgcreate) …

Lua—元表(Metatable)

原表解析 在 Lua table 中我們可以訪問對應的 key 來得到 value 值,但是卻無法對兩個 table 進行操作(比如相加)。 因此 Lua 提供了元表(Metatable),允許我們改變 table 的行為,每個行為關聯了對應的元方法。 setmetatable(table,metatable…

一種運動平臺掃描雷達超分辨成像視場選擇方法——論文閱讀

一種運動平臺掃描雷達超分辨成像視場選擇方法 1. 專利的研究目標與意義1.1 研究目標1.2 實際意義2. 專利的創新方法與技術細節2.1 核心思路與流程2.1.1 方法流程圖2.2 關鍵公式與模型2.2.1 回波卷積模型2.2.2 最大后驗概率(MAP)估計2.2.3 統計約束模型2.2.4 迭代優化公式2.3 …

Listremove數據時報錯:Caused by: java.lang.UnsupportedOperationException

看了二哥的foreach陷阱后,自己也遇見了需要循環刪除元素的情況,立馬想到了當時自己陰差陽錯的避開所有坑的解決方式:先倒序遍歷,再刪除。之前好使,但是這次不好使了,報錯Caused by: java.lang.UnsupportedO…

Ceph集群OSD運維手冊:基礎操作與節點擴縮容實戰

#作者:stackofumbrella 文章目錄 一、Ceph集群的OSD基礎操作查看osd的ID編號查看OSD的詳細信息查看OSD的狀態信息查看OSD的統計信息查看OSD在主機上的存儲信息查看OSD延遲的統計信息查看各個OSD使用率集群暫停接收數據集群取消暫停 OSD寫入權重操作查看默認OSD操作…

PHP框架在分布式系統中的應用!

隨著互聯網業務的快速發展,分布式系統因其高可用性、可擴展性和容錯性成為現代應用架構的主流選擇。而PHP作為一門成熟的Web開發語言,憑借其簡潔的語法、豐富的框架生態和持續的性能優化,逐漸在分布式系統中嶄露頭角。本文將深入探討PHP框架在…

MySQL 索引(一)

文章目錄 索引(重點)硬件理解磁盤盤片和扇區定位扇區磁盤的隨機訪問和連續訪問 軟件方面的理解建立共識索引的理解 索引(重點) 索引可以提高數據庫的性能,它的價值,在于提高一個海量數據的檢索速度。 案例…

環境搭建-復現ST-GCN輸出動作分類視頻(win10+openpose1.7.0+VS2019+CMake3.30.1+cuda11.1)

這次我們安裝github.com/yysijie/st-gcn這個作者源碼環境,安裝流程十分復雜這里介紹大體流程。 1.首先編譯openpose的python API接口這個編譯難度較大,具體參考博文:windows編譯openpose及在python中調用_python openpose-CSDN博客 這個博…

HTML屬性

HTML(HyperText Markup Language)是網頁開發的基石,而屬性(Attribute)則是HTML元素的重要組成部分。它們為標簽提供附加信息,控制元素的行為、樣式或功能。本文將從基礎到進階,全面解析HTML屬性…

2025年“深圳杯”數學建模挑戰賽C題國獎大佬萬字思路助攻

完整版1.5萬字論文思路和Python代碼下載:https://www.jdmm.cc/file/2712073/ 引言 本題目旨在分析分布式能源 (Distributed Generation, DG) 接入配電網系統后帶來的風險。核心風險評估公式為: R P_{loss} \times C_{loss} P_{over} \times C_{over}…

兩數相加(2)

2. 兩數相加 - 力扣(LeetCode) 解法: class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode * dummy new ListNode(0);int carry 0;ListNode * head dummy;while (l1 ! nullptr || l2 ! nullptr ||…

基于大模型的新型隱球菌腦膜炎智能診療全流程系統設計與實現的技術方案文檔

目錄 一、術前風險預測系統1. 多模態融合模型架構2. 風險預測流程圖(Mermaid)二、麻醉劑量預測系統1. 靶控輸注(TCI)模型2. 麻醉方案優化流程圖(Mermaid)三、術后并發癥預測模型1. 時序預測模型(LSTM)2. 并發癥預測流程圖(Mermaid)四、健康教育管理模塊1. 移動健康(…

coze工作流完成行業調研報告

一、coze 是什么? Coze是由字節跳動推出的新一代AI應用開發平臺,定位是零代碼或低代碼的AI開發平臺,也被稱為字節跳動版的GPTs ,國內版名為“扣子”。 Coze有國內版和國外版兩個版本。國內版網址為http://www.coze.cn &#xff…

智慧農業運維平臺養殖—傳感器管理監控設計—仙盟創夢IDE

智慧農業綜合監測與智能執行系統簡介 該系統圍繞農業生產全流程,融合氣象環境監測、農技指導精準推送及多維度智能控制,助力農業高效、科學發展。 氣象環境與農技指導:于農業現場部署慧云智能物聯網設備,實時監測空氣溫濕度、光照…

docker 鏡像的導出和導入(導出完整鏡像和導出容器快照)

一、導出原始鏡像 1. 使用 docker save 導出完整鏡像 適用場景&#xff1a;保留鏡像的所有層、元數據、標簽和歷史記錄&#xff0c;適合遷移或備份完整鏡像環境。 操作命令 docker save -o <導出文件名.tar> <鏡像名:標簽>示例&#xff1a;docker save -o milvu…

Spring循環依賴問題

個人理解&#xff0c;有問題歡迎指正。 Spring 生命周期中&#xff0c;首先使用構造方法對 bean 實例化&#xff0c;實例化完成之后才將不完全的 bean放入三級緩存中提前暴露出 bean&#xff0c;然后進行屬性賦值&#xff0c;此時容易出現循環依賴問題。 由此可見&#xff0c;…

JAVA自動裝箱拆箱

引言 Java 中的**裝箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09;**是自動類型轉換的機制&#xff0c;用于在基本數據類型&#xff08;如 int、long 等&#xff09;和其對應的包裝類&#xff08;如 Integer、Long 等&#xff09;之間進行轉換。這種…

如何閱讀、學習 Linux 2 內核源代碼 ?

學習Linux 2內核源代碼是深入理解操作系統工作原理的絕佳途徑&#xff0c;但這無疑是一項極具挑戰性的任務。下面為你提供一套系統的學習方法和建議&#xff1a; 一、扎實基礎知識 操作系統原理 透徹掌握進程管理、內存管理、文件系統、設備驅動等核心概念。推薦閱讀《操作系…

樹莓派4的v4l2攝像頭(csi)no cameras available,完美解決

根據2025年最新技術文檔和樹莓派官方支持建議&#xff0c;no cameras available錯誤通常由驅動配置沖突或硬件連接問題導致。以下是系統化解決方案&#xff1a; 一、核心修復步驟 強制禁用傳統驅動 sudo nano /boot/firmware/config.txt確保包含以下配置&#xff08;2025年新版…