•  GalaxyS10運行Android9.0 Pie

    GalaxyS10運行Android9.0 Pie

    經過幾個月的等待,三星終於啓動了最後一個星系和恆星:三星星系S10。事實上,該設備有一個新功能,可以全屏顯示穿孔。 此外,三星的10週年紀念版Android手機也引起了很多關注。內部有一個強大的硬件,包括一個8納米八核處理器,8 GB RAM和128 GB內部存儲器。 在外部,Galaxy S10配備了動態AMOLED Infinity顯示屏,該顯示屏配備打孔雙像素10MP前置攝像頭。在後部,這款手機具有多攝像頭設置。雙像素12MP寬傳感器具有光學圖像穩定器和F1.5 / F2.4孔徑;還有帶OIS的16MP F2.2超廣角鏡頭和12MP F2.4遠攝鏡頭。 三星Galaxy S10開箱即用地運行Android 9.0 Pie,配備了三星專有的AI助手Bixby。它還具有IP68防水防塵等級。 新Galaxy移動電話的其他功能包括快速無線查詢2.0和無線網絡需求,這使得三星Galaxy S10可以在無負載的情況下訪問其他設備裝上。那個該裝置具有超聲指紋識別和麪部識別功能。

    時間:2020-10-24 關鍵詞: galaxys10 android9.0 pie

  • 蘋果實行 iOS 遊戲版號新規

    蘋果實行 iOS 遊戲版號新規

    10月23日,電腦公司獲悉中國建立了遊戲編號系統蘋果。蘋果今年,他通過電子郵件通知出版商,遊戲將在7月31日前開始,但沒有透露他的版本號,稍後提交的遊戲將附帶遊戲編號會的。 據七麥數據今日分析,在 8 月 1 日 - 9 月 30 日的兩個月之中,App Store 中上架的遊戲 App 共有 11145 款,其中有版號的遊戲 App 僅有 157 款,佔比僅有 1.41%,無版號遊戲 App 有 10988 款,佔比高達 98.59%。 作為對比, 6 月 1 日 - 7 月 31 日期間,App Store 中上架的遊戲 App 共有 17738 款,其中有版號的遊戲 App 有 208 款,佔比 1.17%,無版號的遊戲 App 有 17530 款,佔比達 98.83%。 僅從七麥數據的統計情況來看,這兩個月 iOS 遊戲中有版號的遊戲比例僅提升了 0.24%,漲幅幾乎可以忽略不計。 ▲ 圖源七麥數據,下同 可能會有很多用户認為,以上游戲中免費遊戲佔比較高,但是IT之家從分析報告中得知,以上游戲 App 中,共有 275 款付費遊戲,其中擁有版號的遊戲僅 4 款;內購遊戲共計 735 款,擁有版號的僅有 115 款;付費遊戲或含內購買遊戲 App 中,版號佔有率僅為 12.32%。 在此次版號新規中,一次性買斷的內購類型(非消耗型項目)是監管重點,帶有廣告性質或解鎖功能的內購項目或許不受新規影響。而以上統計的遊戲 App 中,內購帶有 “ads”、“廣告”字樣的 App 佔比進一步降低,目前僅佔 21.09%。 研究發現,在其他地區,只有9.95%的有序列號的遊戲被保留;大多數註冊的遊戲是沒有序列號的遊戲;其他大部分遊戲都是重新安裝的。

    時間:2020-10-24 關鍵詞: app iOS 遊戲

  • 淺談機器學習是大數據走向嵌入式智能化應用的捷徑

    淺談機器學習是大數據走向嵌入式智能化應用的捷徑

    我們生活在一個特定的世界,幾乎每個人都在談論數據和潛在價值。繪製大量的原始數據是複雜且難以解釋的。近年來,學習機器使我們能夠實現在線公司迄今為止所做的大部分價值,但現在它們正在擴展到物理世界。然而,對於許多人來説,傳感器數據和集成KI模型之間的路徑似乎幾乎無法逾越。 WriTIngembeddedsoftwareisnotoriouslyTIme-consuming,andisknowntotakeatleast10-20TImeslongerthandesktopsoftware被髮展的狀態開發區[1].Itdoesnothavetobethatway.Here,wewillwalkyouthrougharealAIproject—fromtoembeddedapplicaTIon—usingourefficient,time-savingmethod. 今天,處理和解釋傳感器數據的絕大多數軟件都是基於傳統的方法:變換、濾波、統計分析等。這些方法是由一個人設計的,他參考他們的個人領域知識,在數據中尋找某種“指紋。通常,這種指紋是數據中事件的複雜組合,需要機器學習才能成功地解決問題。 Tobeabletoprocesssensordatainreal-time,themachinelearningmodelneedstorunlocallyonthechip,closetothesensoritself—usuallycalled“theedge.”Here,weexplainhowamachinelearningapplicationcanbecreated,fromtheinitialdatacollectionphasetothefinalembeddedapplication.Asanexample,welookataprojectweatImagimobcarriedouttogetherwiththeradarmanufacturerAcconeer. (左)Acconeer生產世界上最小、最節能的產品雷達系統。 在2019年,Imagimob與Acconeer合作,創建了一個帶有手勢識別的嵌入式應用程序。兩家公司都專注於為小型電池供電設備提供解決方案,對能源效率、處理能力和BOM成本提出了極端要求。我們的目標硬件包含一個基於ArmCortex-M0-M4架構的MCU,它提供了市場上最節能的平台。對於我們Imagimob來説,邊緣計算幾乎已經成為最小ArmCortexM系列MCU上的高級計算的同義詞。重要的是,能夠運行我們的應用程序在下端的ArmCortexM系列MCU,因為它向世界表明,我們正在瞄準地球上最小的設備。這就是我們希望從市場角度出發的地方。 Acconeer生產世界上最小、最節能的雷達系統。數據包含大量信息,對於手勢控制等高級用例,需要複雜的解釋。在數據輸出流的頂部運行機器學習軟件對這些案例有很大的好處。因此,Imagimob-Aconeer協作在創建全新的和創造性的嵌入式應用程序方面是一個很好的匹配。 我們與Acconeer的項目的目標是創建一個嵌入式應用程序,該應用程序可以使用雷達數據實時分類五種不同的手勢(包括用於喚醒應用程序的一個手勢)。由於雷達體積小,可以放置在一對耳機中,手勢將作為虛擬按鈕來引導功能,通常被編程成物理按鈕。該項目的最終產品被確定為一個運行在ArmCortex-M4架構上的C庫,該庫於2020年1月在拉斯維加斯的CES上被展示為一個健壯的現場演示。對於演示,我們使用耳朵耳機。然而,我們的長期產品目標是在耳內耳機中使用這項技術。我們認為,手勢檢測特別會改變耳內耳機的可用性,因為它們的面積有限,這使得物理按鈕的放置變得困難。 在其核心,(監督)機器學習是關於找到一個函數(F),根據y=f(X)將一些輸入數據(X)映射到一些輸出數據(Y)。該函數或“模型”是通過處理許多不同的輸入/輸出對(x,y)和“學習”它們之間的關係來找到的。如果y是一個連續的值,那麼這個問題被稱為迴歸問題。但如果y取離散值,則被認為是一個分類問題。因此,機器學習項目的第一步是收集這些數據對。模型構建是第二步。嵌入式項目的最後一步是在目標平台上部署模型。下面,我們以手勢識別項目為指導示例,通過這些步驟。 機器學習項目的第一步是收集數據對。模型構建是第二步,a嵌入式項目的最後一步是在目標平台上部署模型。 (左)我們為初始階段建造了一個粗糙的試驗枱datacollectionwhich由雷達傳感器組成安裝在上面development板和放置在一個一對耳機。 從表面上看,數據收集似乎不是一項艱鉅的任務。但這一步通常被低估了,根據我們的經驗,這是大部分時間都花在這裏的。首先要考慮的是如何從傳感器中物理地獲取數據。許多傳感器帶有一個開發板,可以從中提取數據,通常是通過某種電纜連接到PC機。對於手勢識別項目,我們搭建了一個粗糙的試驗枱,用於初始數據採集,由安裝在開發板上的雷達傳感器組成,放置在一對耳機上,如下圖所示。在這種情況下,我們使用了AcconeerXM112雷達傳感器和XB112突破板。 接下來要考慮的是如何有效地標記數據。換句話説,你需要弄清楚如何為每個“x”標記適當的“y”。這可能看起來很瑣碎,但當涉及到最小化這一步所需的人工工作量時,這是至關重要的。考慮到大量的數據,如果您不能正確地理解這一點,它將成為一項非常耗時的任務。對於傳感器時間序列數據,通常不可能僅僅通過查看數據來標記數據,否則,例如圖像數據可能是可能的。 幫助標記過程的一種方法是將視頻記錄附加到數據中。ImagimobCapture是一個Android應用程序,它將同步視頻記錄附加到每個傳感器數據流中。標籤可以直接在應用程序中完成,也可以在桌面應用程序ImagimobStudio中完成。在我們的雷達手勢識別項目中,數據流看起來如下: 雷達手勢識別項目中的數據流。 在這裏,數據從傳感器,帶有USB串口,發送到PC。在PC上,服務器運行並將數據發送到手機上的ImagimobCapture,而手勢則被視頻記錄。標記的數據,連同其視頻記錄,然後發送回PC,或雲存儲,如果數據是遠程收集。從存儲中,數據可以下載到ImagimobStudio,當它是建模階段的時候。 我們定義了以下一組手勢(“覆蓋傳感器”僅用於喚醒應用程序),並記錄了大約七個不同的人的數據。 從七個不同的人記錄了上述一組手勢的數據。 數據收集過程的一個例子如下圖所示。手勢識別模型僅限於特定的手勢,但可以很容易地用其他手勢進行再訓練。 手勢數據採集過程的一個例子。 一旦數據到位並貼上標籤,就該建立機器學習模型了。通常,人們開始建立模型只是為了很快意識到他們需要調整一些標籤。你是做什麼的?手動進入並編輯文本文件和更新數據是很麻煩的,這是我們都希望儘可能避免的。相反,圖形工具是可取的。ImagimobStudio將數據與視頻記錄一起加載,並允許用户以圖形方式拖動和修剪標籤。一個例子,以一個記錄的手勢,顯示在下面的圖像。視頻與綠色數據一起可見。在底部,藍色的標籤顯示出來,我們可以看到它們緊緊地放在手勢周圍(非零數據)。 ImagimobStudio將數據與視頻記錄一起加載,並允許用户以圖形方式拖動和修剪標籤。這是一個有記錄的手勢的例子。 如果數據已經在ImagimobCapture中預先標記,那麼通過文件並確保數據是正確的,並且標籤已經到位,這是一個相對較小的任務。沒有正確標記的數據,很難找到一個好的模型。找到一個高精度的好模型通常需要多次迭代和實驗。首先要決定使用什麼機器學習技術,例如隨機森林、支持向量機或人工神經網絡等。在過去的幾年裏,深度學習由於具有原始數據的令人印象深刻的學習能力而受到歡迎。深度學習的主要吸引力之一是它排除了手動查找功能的需要,這是更傳統的機器學習方法所需要的。它具有提高精度和消除大量手工工作的潛力。然而,仍有許多所謂的超參數有待選擇,例如網絡的體系結構、所謂的學習率和許多其他參數。 在ImagimobStudio中,用户經歷了構建深度神經網絡的過程。用户定義要試用多少種不同類型的超參數,然後程序自動搜索所有組合並保存最佳模型。 在ImagimobStudio中,用户被引導通過構建深度神經網絡的過程。用户定義要試用多少種不同類型的超參數,然後程序自動搜索所有組合並保存最佳模型。 一旦您對模型的健壯性感到滿意,就該是過程中的最後一步了:將模型導出到C代碼併為嵌入式硬件構建庫。 當從PC環境中的高級語言軟件開發到微控制器(MCU)上的低級編程時,複雜性急劇增加。發育時間增加的因子為10-20並不少見[1]。例如,障礙可能包括更難的內存和處理限制,更長的調試周期,以及更難找到的更糟糕的錯誤類型。 在ImagimobStudio中,以.h5文件形式訓練的模型很容易轉換為特定硬件類型的C代碼,如“Edge”選項卡所示。 在ImagimobStudio中,以.h5文件形式(用於從Tensorflow、Keras和其他深度學習框架導出模型權重和體系結構的通用格式)的經過訓練的模型可以很容易地轉換為特定硬件類型的C代碼,如上一幅圖像中的“Edge”選項卡所示。 然後編譯C代碼並將其閃爍到硬件上。我們通常構建一個庫,可以集成到C應用程序中。右邊,可以看到現場演示的嵌入式版本。它有一個電池驅動的Acconeer物聯網模塊XM122與藍牙連接。人工智能應用程序運行在XM122模塊上,其中包括來自北歐半導體的NRF52840SoC,該模塊基於ArmCortexM4MCU。 現場演示的嵌入式版本。 在這裏,你可以看看最後的演示: 圖像手勢檢測庫的核心是針對時間序列數據的人工神經網絡。它是專門設計的,腦海中有一個小的記憶足跡。庫用C編寫並在靜態庫中編譯,然後與主AcconeerC應用程序一起編譯。 ·TheGesturedetectionlibraryusesradardatafromtheAcconeerXM122IoTModuleasinput ·Thememoryfootprintofthegesturelibraryisapproximately80kBRAM ·Thelibraryrunsona32-bit64MHzArmCortexM4MCUwith1MBFlashand256kBRAM ·Thelibraryprocessesroughly30kBofdatapersecond ·TheexecutiontimeoftheAImodelisroughly70mswhichmeansthatitpredictsagestureatapproximately14.3Hz 在2020年6月,由Imagimob、Acconeer和Flexworks組成的一個財團從瑞典Vinnova獲得了價值45萬$的贈款,以採取下一步建設gesturhe控制的耳內耳機。Acconeer將覆蓋傳感部分,Flexworks將負責硬件和力學,我們在Imagimob將開發手勢檢測應用程序。在這個項目中,我們不僅將建立第一個手勢控制的耳內耳機,而且我們還將致力於一個硬件加速系統的機器學習代碼在單片機上。我們將繼續使用ArmCortexM系列,並受益於Arm提供的先進解決方案。 John malm digital analysis and development algorithmus擔任imagimob machines的學習開發者[(1)]麥康奈爾,史蒂夫,軟件評估,祕密黑藝術,微軟出版社,2006年

    時間:2020-10-24 關鍵詞: 嵌入式 機器學習 大數據

  • Ubuntu 20.10正式發佈

    Ubuntu 20.10正式發佈

    Canonical昨天正式發佈了ubuntu-20.10,其中包括一個優化的草莓蛋糕和服務器系統,以支持科學家、發明家、教育和企業。 Ubuntu 20.10包含5.8版Linux內核,提供了最新的工具鏈,包括glibc 2.32,OpenJDK 11,rustc 1.41,GCC 10,LLVM 11,Python 3.8.6,ruby 2.7.0,php 7.4.9,perl 5.30 ,golang 1.13。 值得一提的是,Ubuntu 20.10是首個採用樹莓派4(Raspberry Pi 4)桌面圖像功能的Ubuntu版本。 Ubuntu 20.10包含了微雲(micro cloud),提供VM的小型服務器集羣,按需供給的邊緣Kuberenetes的LXD 4.6和MicroK8s 1.19,可適用於遠程辦公室、分公司、倉儲和分佈的基礎設施。 Ubuntu 20.10集成了GNOME 3.38,此版本改進了應用柵格,移除了常用標籤和允許根據用户喜好對應用排列和管理。 電源設置中加入了電池百分比開關,私有WiFi熱點可通過生成的QR(二維碼)進行分享,重啓選項已被添加至註銷/關機菜單中。 Ubuntu 20.10新增了對Ubuntu認證設備的支持,更多的Ubuntu工作站現獲得了支持指紋識別功能支持。 配備屏幕鍵盤的二合一設備現已獲得完整支持,這使得諸如戴爾XPS和聯想Yoga等設備的Ubuntu體驗得以改善。 另外,樹莓派4GB或8GB內存版本將獲得Ubuntu桌面版的完整支持。 官方下載頁面 - THE END - 轉載請註明出處:快科技 #Ubuntu 肖!

    時間:2020-10-24 關鍵詞: 樹莓派 ubuntu gnome

  • 淺談Alexa App在Android和iOS上實現了免提

    淺談Alexa App在Android和iOS上實現了免提

    為了避免虛擬嚮導,亞馬遜更新了IOS和Android設備的Alexa移動應用程序。 根據TechCrunch的報道,直到現在,要使Alexa通過移動應用程序收聽您的聲音,首先需要點擊屏幕底部的藍色按鈕。在最新版本的應用中,如果用户願意,可以關閉此要求。之後,用户可以要求Siri或Google助手啓動Alexa應用程序,然後Alexa無需額外輸入即可開始收聽。 如果您全天大量訪問Alexa,這聽起來可能會節省時間,但是有兩個非常有限的警告。免提功能僅在Alexa應用程序處於打開狀態並具有焦點時才起作用,因此不能在後台打開。如果設備被鎖定,它也將不起作用。 這兩個限制似乎與亞馬遜地區通過這些限制所獲得的便利性相矛盾由兩個語言助手的組合可以解決這個問題參見第頁1: 例如,Siri首先被要求使用Alexa以及然後,在介紹了Alexa的新模型之後,我們開始了新的對話。免税只需要幾秒鐘,但這意味着你不需要觸摸電視電話。你想讓亞歷山大在你的手機上有更好的體驗。你可以使用很多亞歷山大的麥克風,比如摩托車G7和LG G8。

    時間:2020-10-24 關鍵詞: Android app iOS alexa

  • Linux 5.8 內核,全局主題切換,全新組件上線

    Linux 5.8 內核,全局主題切換,全新組件上線

    10月23日,Yuqilin團隊宣佈ubuntukylin開源版本20.10正式發佈。 20.10 是優麒麟發佈的第 16 個版本,提供 9 個月的技術支持,與 Ubuntu 20.10、Lubuntu 20.10、Xubuntu 20.10、Ubuntu Mate 20.10 等開源發行版全球同步發佈。 ▲ 圖源:優麒麟開源操作系統,下同 IT之家瞭解到,此次發佈的優麒麟 20.10 版本默認搭載最新 Linux 5.8 內核和 UKUI 3.0 桌面環境。擁有全新佈局的任務欄和側邊欄,新增麒麟掃描、麒麟刻錄、麒麟截圖、麒麟應用安裝器等應用軟件,並且支持觸屏手勢功能和系統組件的全局主題切換,同時修復了開始菜單、文件管理器、控制面板等大量問題。 任務欄 支持深淺雙色主題和圓角佈局的任務欄,將快速啓動欄與應用程序啓動區域合二為一。 側邊欄 採用全新模塊化架構設計的側邊欄,新增豐富可擴展的系統插件。 麒麟掃描 底層基於 SANE 標準庫開發,支持絕大多數的掃描儀設備,擁有查找和連接掃描設備基礎特點,以及一鍵美化、智能糾偏和文字識別等功能。 麒麟刻錄 基於 k3b 二次開發,支持光盤的刻錄、擦除、續刻及光盤內容 md5 校驗等。 麒麟截圖 麒麟截圖在傳統截圖功能基礎上增加了繪製矩形、圓形,添加模糊、標註和字體,以及固定圖片到桌面上等功能。 麒麟應用安裝 麒麟應用安裝器支持快速安裝軟件,以及 deb 包的雙擊安裝和一鍵卸載。 觸屏手勢功能 支持多指觸屏手勢功能,包括雙指滑動、多指縮放等手勢。 全局主題切換 開始菜單、任務欄、側邊欄等組件及自研應用軟件均支持系統默認、深色、淺色三套主題切換。 優麒麟 Ubuntu 20.10 使用最新 5.8 版本內核,帶來了許多功能增強和更多的設備支持。 部分重要更新: 內核併發處理器 (KCSAN) 內核事件通知機制 支持塊層內聯加密 私有 procfs 掛載 BPF iterator 機制 gcc 升級至 10.2.0 qt 升級至 5.14.2 python 升級至 3.8.6 用户可以使用鏡像站或官網請訪問www.ubuntukylin.com/downloads/Please注意,yukirin版本20.04的用户不建議更新到20.10,新用户也不建議更新到20.10到20.10更新跟蹤函數傳輸到20.04更新源。

    時間:2020-10-24 關鍵詞: Linux 主題 優麒麟

  • 微信 Android 版 7.0.20 內測版詳細體驗

    微信 Android 版 7.0.20 內測版詳細體驗

    最近,Android版本似乎落後於兩週前推出的IOS版本,但不是在提前。昨天更新的是Android版的7.0.20微信,這是一個版本。這個上面提到的兩個重要變化是內部的:預計會有一些詳細的調整。 出於某種原因,我們常常需要將聊天會話刪除,不過由於微信並不支持聊天內容雲同步,會話刪除後聊天的內容也就丟失了。此次 7.0.20 版加入了一項聊天會話隱藏功能,既可以保留聊天記錄,又不會讓它在 “會話”窗口中顯示。使用方法是直接在會話記錄上長按,然後選擇 “不顯示該聊天”就可以了。 新增加的 “不顯示該聊天”功能 需要説明的是,這項功能不僅能針對聊天記錄,也能作用在羣、服務號。一句話,只要出現在 “會話”面板中的內容,統統可以隱藏。 類似於之前 QQ 的那個 “青少年模式”,此次微信推出的 “青少年模式”,同樣也是通過屏蔽諸如 “公眾號”、“搜一搜”、“小遊戲”、“附近的人”…… 等帶有娛樂性質的功能,來防止未成年人過度沉迷。所不同的是,微信允許使用者自定義部分模塊的屏蔽程度。如在 “公眾號”、“視頻號”中,便提供了 “全部屏蔽”、“已關注不屏蔽”、“完全不屏蔽”三種選項。不過像 “看一看”、“遊戲”、“附近的人”等選項,則是直接屏蔽,沒有提供修改權限。 新增加的 “青少年模式” 開啓路徑位於設置頁面,點擊 “青少年模式”,再輸入微信密碼即可。接下來會顯示青少年模式的設置面板(圖 02),根據情況挑選適合的屏蔽選項。通常被屏蔽模塊會直接從界面中隱藏,但如果強制訪問,就會看到如下這則提示。 開啓入口在 “設置”面板 強制訪問被屏蔽內容會看到這個提示 表情面板左側增加了一個搜索圖標,可以在聊天過程中直接搜索表情發給好友。這個就沒啥可説的了,總之是個挺不錯的變化。 新增表情搜索功能 “搜一搜 “並沒有寫在更新列表裏,但如果我們長按聊天框,就能看到這項功能。簡單點説,“搜一搜”可以在聊天過程中搜索表情、公眾號、視頻號,並且一鍵發送給對方,一定程度上提高工作效率。當然,這裏也存在一個小問題,通常我們都是看到某項內容後分享給對方,而像這種邊搜索邊分享的情況&……%¥#@貌似並不多見吧! 聊天框中的 “搜一搜” 還有一點需要注意,使用這項功能時請儘量不要開啓 “青少年模式”,否則搜索結果裏就只有表情了。 話題標籤正式上線微信朋友圈,對於這項功能,很多小夥伴也是期盼以久。使用方法足夠簡單,只要在編輯朋友圈時,長按空白處不鬆手即可,之後快捷菜單會顯示出一個話題標籤圖標(#)。而添加好的標籤,也會自動呈現藍色,別人點擊後就會顯示出視頻號裏的相關內容。 朋友圈上線 “話題標籤 “ 除了上述重要改動外,新版還直接更改了組別符號。另外值得注意的是,在不久的將來,與QQ一樣,騰訊將調整語言信息的開放速度威爾。達爾另外,語言信息的閲讀速度可以通過滑動來調節,當前版本D的7.0.20的準確更新是什麼?Android歡迎來到評論區

    時間:2020-10-24 關鍵詞: Android iOS 微信

  • 大家好,介紹一下我自己

    大家好,介紹一下我自己

    第一次介紹我自己 我本人從畢業開始就做電子產品的研發工作 ,主攻傳感器、控制器、BLDC驅動控制、汽車電子等產品,既要自己設計硬件電路、PCBLayout、也要編程單片機代碼,如果有需求還需要用MFC編寫上位機軟件。經歷過國企、小私企、名外企。除了上班做好本職工作以外,晚上週末也不閒着,寫文章、接私活,單身時下班把自己關在家裏、結婚後把自己關在房子裏、有了孩子後終於開始走出房子陪孩子玩。由於總是把自己關在房子裏,所以,我沒有什麼興趣、也沒有什麼應酬、也不會出去玩。 高中愛看書 從高中開始,我自己定義為文藝青年,比較愛看書但是不喜歡挑選書,索性我就按照歷年的茅盾文學獎名單,把清單遍歷了一遍,老師説,課外書先放一放到了大學後使勁看。結果到了大學後,有了新活動。 大學時職業的啓蒙 教射頻課的老師比較年輕,喜歡顯擺自己大學時做過的東西,雖然知道他在顯擺,但是卻被他的東西吸引了,綠色的板子上面焊了好多黑黑的元器件,那時候插件比較多,摸上去扎手但是很喜歡。於時跟着老師泡實驗室。在大四的時候,承包了我們班以及我們班家屬的畢業設計,那個階段頓頓吃飯都是別人請,感覺做大哥一樣。 研究生畢業,職業的抉擇 讀研究生時又認識了一名技術強悍的博士,平時幫他做做板子、寫寫程序,同時跟着他去外面拉項目,拉項目也就延續了下來,但是我比較笨,不太愛説話,不太會談。畢業時,面臨職業的抉擇。其實,找工作時我已經在北京某航天所實習了,實習了三個月後我放棄了簽約,一方面女朋友不希望留在北京這種大城市,另一方面感受到了工作中的壓抑。在政府工作的堂哥希望我考公務員進入體制內,我想都沒想就拒絕了。從北京回來後,招聘季已經快結束了,還好碰上了幾個機會,最後砍掉了北京、深圳、上海的offer,選擇了南方的一座小城市。 工作後 當然,項目中經歷了一次比較重大的失敗,幾萬塊錢接了一位北京老闆的控制器項目,需求比較陌生第一次接觸,工作上出現了厭倦的情緒、手裏還有幾個沒完工的小活、還有老婆懷孕,結果就沒有太上心。導致項目失敗,一直比較愧疚。 又一次的大決定 最近,又做了一次重大的決定,離開自己生活了近8年的城市,舉家搬遷至新城市,開始了新而有陌生的生活,小孩面臨上學,異地户口,生活成本,各種難。同時,工作的重心也放到了軟件上。 還想看書 還想看書,但是打開書的頻率明顯少了,前段時間買了好多歷史、哲學方面的書,還買了一堆小孩的書,看了一部分還沒看完,明顯感覺看書時還想着其他的事情,到底在想什麼也不是很明確,可能就是人到中年的焦慮吧。最近,突然想看一些冒險、科幻、偵探方面的書籍,如鬼吹燈、盜墓筆記、三體等,先放一放吧。當出現一個新的想法後,我會等待三天,如果三天以後這個想法依然很強烈,那麼這個事情就決心去做了。 我想我的貓 這麼多年的生活習慣,導致自己沒有了什麼興趣愛好,抽煙不會、喝酒不喜歡、應酬沒有飯局。孩子還小比較鬧騰,幾乎不給你超過半個小時的獨處時間,所以私活項目也接的少了。但是寫文章應該是可以長久堅持下去的。幾年前,救助了一隻奄奄一息的流浪貓,還壞了一隻眼睛,是一隻母貓,半年的時間長的體型龐大,但是後來她自己出去了,可能去尋找愛情了吧,不知道現在怎麼樣了。雖然,我又養了一隻狗,但是還是經常想起我的貓,過得好不好。 掃描二維碼可以加我好友,如下: 掃描二維碼,可以關注微信公眾號,如下:

    時間:2020-10-23 關鍵詞: 軟件 嵌入式 硬件

  • 三星 Galaxy Z Fold 3 搭載 S Pen和更厚的 UTG 玻璃,

    三星 Galaxy Z Fold 3 搭載 S Pen和更厚的 UTG 玻璃,

    根據韓媒報道,韓媒 The Elec 援引 UBI Research 的最新報告稱,三星目前正在考慮採用 AES(主動靜電解決方案)數字化技術,將 S Pen 帶入下一款 Galaxy Z Fold 系列中。同時,據説該公司還在努力將 UTG(超薄玻璃)做得足夠厚,以承受 S Pen 的筆尖壓力。 這可能不是第一次聽到三星想要將 S Pen 帶入其可摺疊手機的傳聞了。此前傳聞 Galaxy Z Fold 2 就會搭載 S Pen,但據説由於技術限制,三星無法將這一設想變為現實。 首先,三星的 Galaxy Note 系列採用了 S Pen 的 EMR(電磁共振)技術,但同樣的技術對於可摺疊屏幕來説過於堅硬。其次,據説三星決定不給 Galaxy Z Fold 2 配上 S Pen,因為 UTG 層不夠厚,無法抵擋觸控筆的筆尖。 UBI Research 認為,三星現在正尋求為即將推出的 Galaxy Z Fold 3 解決這些問題。該公司可能無法將 EMR 數字化儀應用到可摺疊面板上,但它可能會決定採用 AES 技術來代替。 兩種技術都有各自的優缺點,但 AES 通常以犧牲生產成本為代價,提供更好的整體性能。更重要的是,AES 可能會讓三星的可摺疊屏手機用上 S Pen。 據報道,三星正在尋求改進的另一個方面是超薄玻璃。Galaxy Z Fold 2 的可摺疊顯示屏有一層 30 微米的 UTG,太容易被 S Pen 的尖端損壞。不過,據説該公司正在努力為 Galaxy Z Fold 3 將 UTG 層的厚度增加一倍,以允許使用 S Pen。 當然,現在確定這些傳言的真實性還為時過早,即使三星考慮在 Galaxy Z Fold 3 上加入 S Pen,在手機進入量產之前,很多事情都可能發生變化,IT之家將持續關注。 所有的一切,還是要等到官宣了。

    時間:2020-10-23 關鍵詞: 三星 3 utg galaxyzfold

  • R9 4900H +4K 屏,聯想鋭龍版拯救者 Slim 7發佈

    R9 4900H +4K 屏,聯想鋭龍版拯救者 Slim 7發佈

    剛剛得到的消息,聯想現已發佈 Legion Slim 7 筆記本,搭載了 AMD 移動標壓處理器,還可選 RTX 2060 Max-Q。 鋭龍版拯救者 Slim 7 可選 R9 4900H、R7 4800H 和 R5 4600H 處理器,顯卡可選 RTX 2060 Max-Q、GTX 1660 Ti Max-Q 和 GTX 1650 Ti,最高配備 32GB DDR4-3200 內存和 2TB SSD。 鋭龍版拯救者 Slim 7 搭載了 15.6 英寸屏,可選 4K 100% Adobe RGB 色域 HDR400 和 1080p 144Hz 版本。 聯想 Legion Slim 7 筆記本將於 10 月上市,起價為 1369.99 美元。你覺得這個配置如何,會入手嗎?

    時間:2020-10-23 關鍵詞: 聯想 鋭龍 4900h 拯救者 r9

  • 北川發生4.7級地震,小米miui11手機10秒預警

    北川發生4.7級地震,小米miui11手機10秒預警

    在10月22日11時03分的時候,在四川綿陽市北川縣(北緯31.83度,東經104.18度)發生4.7級地震,震源深度22千米。 一位網友在地震發生後10秒收到了小米手機發出的地震預警,並分享了相關截圖。 如圖所示,小米手機除了地震預警提醒之外,還提供撥打緊急聯繫人電話、前往最近避難所等功能。 據悉,小米地震預警是小米MIUI 11就已上線的新功能。 官方表示地震預警不是預報,而是在地震發生後利用電波比地震波傳播速度快的原理,迅速向即將受影響區域發出幾秒到幾十秒的預警警報,以爭取避災時間,減少傷亡和次生災害。 小米手機利用系統級的信息觸達能力,與擁有成熟地震預警能力的機構合作,在發生地震時為大家及時預警。 該功能開啓後,當週邊發生強震時,手機將提前幾秒到幾十秒以強提示彈窗和警報聲通知大家,為避險爭取時間。 這個功能可以説是相當實用了。

    時間:2020-10-23 關鍵詞: 小米 地震預警 miui11

  • 留了一手!AMD鋭龍500016核、5GHz高頻真的成了

    留了一手!AMD鋭龍500016核、5GHz高頻真的成了

    早在前段時間,AMD發佈了鋭龍5000系列處理器,這一代是7nm Zen3架構了,性能大提升都説了好多遍了——IPC漲了19%,遊戲性能提升26%,多核優勢依然無敵,反正這次哪方面性能都是王者了。 這次首批產品也只有四款,具體如下: 鋭龍9 5950X:雙CCD、16核心32線程、8MB二級緩存、64MB三級緩存,基礎頻率3.4GHz,最高加速頻率從4.7GHz來到了4.9GHz,熱設計功耗維持105W,售價799美元。 鋭龍9 5900X:雙CCD、12核心24線程、6MB二級緩存、64MB三級緩存(自然也變了),基準頻率從3.8GHz調低至3.7GHz,但是最高加速頻率從4.6GHz提高到4.8GHz,熱設計功耗保持105W,如果對比鋭龍9 3900XT的話則是基準頻率降低100MHz、加速頻率提高100MHz,售價549美元。 鋭龍7 5800X:單CCD、8核心16線程,4MB二級緩存,32MB三級緩存,基準頻率3.8GHz,最高加速4.7GHz,相比於鋭龍7 3800XT前者降低100MHz、後者不變,熱設計功耗為105W,售價449美元。 鋭龍5 5600X:單CCD、6核心12線程,3MB二級緩存,32MB三級緩存,基準頻率3.7GHz,最高加速4.6GHz,相比於鋭龍5 3600XT前者降低100MHz、後者提高100MHz,熱設計功耗為65W,售價299美元。 如果説還有什麼遺憾,那就是Zen3這一代依然沒有突破5GHz的頻率上限,至少官方指標沒有,還是4.9GHz。 不過爆料大户TUM_APISAK似乎拿到了鋭龍5000,至少也有了可信數據,指出鋭龍5000系列的加速頻率實際上要比官方標稱更高,多了100MHz,鋭龍9 5950X可以輕鬆達到5.04GHz。 為何AMD官方沒有這麼宣傳,可能是跟PBO頻率比較特殊有關,也有可能是AMD吸取了去年鋭龍3000系列的教訓,將加速頻率的指標丁低一點,更容易輕鬆達到。 反正對AMD來説,不論定4.9GHz還是5GHz,性能這方面他們已經贏定了,只是比例多少的問題,不直接標5GHz,以後等消費者發現了,AMD Yes喊的更響亮了。

    時間:2020-10-23 關鍵詞: AMD 鋭龍 5ghz高頻

  • 驍龍875加持,三星Galaxy S21旗艦爆料!三攝

    驍龍875加持,三星Galaxy S21旗艦爆料!三攝

    根據最近的爆料,三星有望提前發佈Galaxy S系列旗艦,最快可能會在1月份亮相。 今天三星Galaxy S21的攝像頭模具曝光,可以看到它後置是三顆攝像頭,造型預計為矩陣。 目前尚不確定三星Galaxy S21的攝像頭規格,今年三星在Galaxy S20系列上採用了兩種不同的主攝,其中Galaxy S20主攝為1200萬像素,Galaxy S20 Ultra主攝為一億像素。 從曝光的信息來看,三星Galaxy S21 Ultra主攝為一億像素,Galaxy S21主攝可能會升級到一億像素,也可能會採用1200萬像素。 除此之外,三星Galaxy S21將搭載高通驍龍875旗艦處理器,這是首批驍龍875機型。 這顆芯片基於5nm製程打造,首次採用Cortex X1超大核,並同時用上Cortex A78大核,性能相比高通驍龍865有大幅提升,而且高通驍龍875有望集成5G基帶,安兔兔跑分超過70萬分無壓力。 此外,三星Galaxy S21至少會配備12GB內存,不排除提供16GB內存的可能。這説明內存是越來越大了。

    時間:2020-10-23 關鍵詞: 三星 驍龍875 galaxys21

  • 蘋果 iOS 14 新 bug:第三方電子郵件和瀏覽器更新後會被重置

    蘋果 iOS 14 新 bug:第三方電子郵件和瀏覽器更新後會被重置

    在iOS 14 和 iPadOS 14 中,蘋果允許用户選擇第三方應用作為默認的電子郵件應用和瀏覽器。上個月出現了一個 bug,每當用户的設備重啓時,默認應用就會被重置為蘋果自己的應用。 雖然該 bug 已被修復,但 iOS 14 和 iPadOS 14 中的一個新 bug 又出現了。似乎每當選定的第三方應用更新後,電子郵件或瀏覽器的默認應用選擇就會被重置為蘋果的 Mail 或 Safari。 The Verge 目前已經證實,每當用户在 iOS 14.1 中通過 App Store 更新所選擇的默認應用時,該應用就會從默認應用槽中被移除。每次更新被設置為默認的第三方郵件應用或瀏覽器後,用户都需要重新設置默認應用。 不過,據 MacRumors 瞭解,這個 bug 可能已經在 iOS 14.2 和 iPadOS 14.2 測試版中得到了修復。 像 Chrome、Edge、DuckDuckGo 和 Firefox 都可以設置為默認瀏覽器,而 QQ 郵箱、Gmail、Spark 和微軟 Outlook 等都可以設置為默認郵件應用。 不知道你有注意到這個BUG嗎?希望蘋果早點修復吧。

    時間:2020-10-23 關鍵詞: 蘋果 ios14

  • V4L2的管道驅動程序是如何被Xilinx Linux 理解的

    V4L2的管道驅動程序是如何被Xilinx Linux 理解的

    Xilinx提供了完整的V4L2的驅動程序,Xilinx V4L2 driver。處於最頂層的驅動程序是V4L2框架的視頻管道(Video pipeline)驅動程序,也叫橋驅動程序(bridge driver),主要代碼在文件xilinx-vipp.c中。在V4L2框架中,整個視頻管道(Video pipeline)可以通過媒體設備(/dev/media)配置,流媒體可以通過視頻設備(/dev/video)控制。這兩種設備,都是在視頻管道(Video pipeline)驅動程序裏創建的。所以,理解V4L2的管道(pipeline)驅動程序是理解Xilinx所有Video IP 在Linux下工作情況的基礎。 3. 文件 3.1. C文件 Xilinx的V4L2的管道(pipeline)驅動程序在下面四個文件中。 1. drivers/media/platform/xilinx/xilinx-vipp.c 2. drivers/media/platform/xilinx/xilinx-vipp.h 3. drivers/media/platform/xilinx/xilinx-dma.c 4. drivers/media/platform/xilinx/xilinx-dma.h 3.2.設備樹(devicetree) 設備樹(devicetree)裏含有整個視頻管道(video pipeline)的配置,對應的文檔在Documentation/devicetree/bindings/media/xilinx/xlnx,video.txt。 下面是一個設備樹(devicetree)的例子。 axi_video_cap { compatible = "xlnx,axi-video"; dmas = , ; dma-names = "port0", "port1"; ports { #address-cells = ; #size-cells = ; port@0 { reg = ; direction = "input"; vcap0_in0: endpoint { remote-endpoint = ; }; }; port@1 { reg = ; direction = "input"; vcap0_in1: endpoint { remote-endpoint = ; }; }; }; }; 3.3. 函數調用關係圖 xvipp 函數調用關係圖 4.主要函數 4.1. 函數xvip_composite_probe() 函數xvip_composite_probe是整個驅動的入口,主要工作是初始化驅動的數據結構xvip_composite_device裏的通用數據,包括lock、list(entities和dmas),再調用了xvip_composite_v4l2_init()和xvip_graph_init(),最後調用platform_set_drvdata設置平台設備platform_device裏的當前設備的數據指針。 4.2. 函數xvip_composite_v4l2_init() 函數xvip_composite_v4l2_init做的事情比較簡單,只是初始化了struct media_device,設置了設備版本和model名稱、dev/mdev指針,就調用了v4l2_device_register()註冊V4L2設備。 xvip_composite_v4l2_init的關鍵代碼如下: xdev->media_dev.dev = xdev->dev; strlcpy(xdev->media_dev.model, "Xilinx Video Composite Device", sizeof(xdev->media_dev.model)); xdev->media_dev.hw_revision = 0; media_device_init(&xdev->media_dev); xdev->v4l2_dev.mdev = &xdev->media_dev; ret = v4l2_device_register(xdev->dev, &xdev->v4l2_dev); 4.3. 函數xvip_graph_init 函數xvip_graph_init是最重要的函數,函數調用層次也最深。它首先調用xvip_graph_dma_init根據設備樹(devicetree)裏的port信息初始化DMA通道,創建一個DMA的列表;再調用xvip_graph_parse在設備樹(devicetree)裏分析子設備節點,根據設備樹裏"remote-endpoint"屬性創建一個Entity的列表;最後調用v4l2_async_notifier_register註冊異步處理函數。系統發現各個子設備(subdev)後,調用異步處理函數xvip_graph_notify_bound獲取子設備信息。所有子設備(subdev)都被發現後,調用xvip_graph_notify_complete,為每個entity創建Link和V4L2子設備,並註冊media設備。 xvip_graph_init的關鍵代碼如下: /* Init the DMA channels. */ ret = xvip_graph_dma_init(xdev); /* Parse the graph to extract a list of subdevice DT nodes. */ ret = xvip_graph_parse(xdev); /* Register the subdevices notifier. */ num_subdevs = xdev->num_subdevs; subdevs = devm_kcalloc(xdev->dev, num_subdevs, sizeof(*subdevs), GFP_KERNEL); xdev->notifier.subdevs = subdevs; xdev->notifier.num_subdevs = num_subdevs; xdev->notifier.ops = &xvip_graph_notify_ops; ret = v4l2_async_notifier_register(&xdev->v4l2_dev, &xdev->notifier); 4.4. 函數xvip_graph_dma_init xvip_graph_dma_init()自身比較簡單,先找到第一個"ports"子節點,再找其中的所有"port"節點,併為每個"port"子節點執行xvip_graph_dma_init_one(),從而將每個"port"子節點對應的DMA添加到鏈表dmas中。 xvip_graph_dma_init的關鍵代碼如下: ports = of_get_child_by_name(xdev->dev->of_node, "ports"); for_each_child_of_node(ports, port) { ret = xvip_graph_dma_init_one(xdev, port); } 4.5. 函數xvip_graph_dma_init_one xvip_graph_dma_init_one()根據設備樹(devicetree)的"port"子節點的配置,找到DMA,並添加到鏈表"xdev->dmas"中。 xvip_graph_dma_init_one先讀取"port"子節點的屬性"direction"和"reg"屬性。Devicetre的"port"節點中,要含有屬性“direction”和"reg"屬性;如果沒有屬性“direction”,會返回錯誤;如果沒有"reg"屬性,代碼會繼續,但是功能會出錯。屬性"direction"的值是"input"或者"output"。 xvip_graph_dma_init_one還為每個port分配struct xvip_dma,再執行xvip_dma_init()。 接下來,xvip_graph_dma_init_one把struct xvip_dma加入到隊列xdev->dmas。 xvip_graph_dma_init_one還根據"direction"的值是"input"或者"output",以及xvip_is_mplane的設置,選擇buffer類型。 xvip_graph_dma_init_one的關鍵代碼如下: // Read direction and reg properties ret = of_property_read_string(node, "direction", &direction); of_property_read_u32(node, "reg", &index); dma = devm_kzalloc(xdev->dev, sizeof(*dma), GFP_KERNEL); ret = xvip_dma_init(xdev, dma, type, index); list_add_tail(&dma->list, &xdev->dmas); 4.6. 函數xvip_dma_init xvip_dma_init是核心的函數,完成了最關鍵的任務:初始化buffer隊列、申請DMA設備、註冊Video設備。 函數xvip_dma_init()先初始化struct xvip_dma的數據成員,包括dma->lock、dma->pipe.lock、dma->queued_bufs、dma->queued_lock;再根據buffer類型,初始化v4l2_format裏的像數點格式,struct v4l2_pix_format pix 或者struct v4l2_pix_format_mplane pix_mp。接下來設置pad.flags為MEDIA_PAD_FL_SINK或者MEDIA_PAD_FL_SOURCE,調用media_entity_pads_init初始化初始化media entity。 函數xvip_dma_init()然後繼續初始化video_device的各種成員和操作函數,包括fops、v4l2_dev、queue、vfl_type、vfl_dir、lock、和ioctl_ops。video_device的fops被設置為xvip_dma_fops,ioctl_ops被設置為xvip_dma_ioctl_ops。 函數xvip_dma_init()再接着初始化buffer隊列struct vb2_queue queue,其中ops被設置為xvip_dma_queue_qops,mem_ops被設置為vb2_dma_contig_memops,執行vb2_queue_init。 函數xvip_dma_init()再接着執行dma_request_chan申請DMA設備,這是一個複雜和核心的函數。dma_request_chan()的第二個參數是DMA通道的名稱,名字是格式是"port%u",比如"port0",也就是設備樹的屬性"dma-names"裏的字符串。其中of_dma_request_slave_channel()調用的of_find_property(np, "dmas", NULL),通過屬性"dmas",取得了dma。of_property_count_strings()計算屬性"dma-names"裏的字符串個數,也就是DMA的個數。然後根據DMA的個數,為每一個DMA執行of_dma_match_channel()。of_dma_match_channel (dev->of_node, "port%u", )取出"dma-names"的字符串,再和"port%u"對比,這是檢查名字是否對應,如果一致,就用對應的DMA,取得struct of_phandle_args dma_spec,再把struct of_phandle_args dma_spec轉換為struct of_dma *ofdma。of_dma_xlate接下來轉換為struct dma_chan。of_dma_request_slave_channel使用了字符串"dmas"。of_dma_match_channel()使用了字符串"dmas"和"dma-names"。所以Xilinx-vipp.c實現的"xlnx,video"設備的設備樹裏的"dmas"和"dma-names","port0"是必須有的固定字符串,不能更改;只有dmas後面的DMA phandle才可以更改。 函數xvip_dma_init()最後執行video_register_device註冊Video設備。 4.7. 函數xvip_graph_parse 函數xvip_graph_parse先調用xvip_graph_parse_one,找到直接的remote_port;然後再為每一個找到的remote_port執行一次xvip_graph_parse_one。 4.8. 函數xvip_graph_parse_one xvip_graph_parse_one()裏先調用of_graph_get_next_endpoint(node, ep)取得下一個endpoint,然後再調用of_graph_get_remote_port_parent(ep) 得到remote_port的父節點。of_graph_get_next_endpoint(node, ep)會先嚐試找子節點ports,再找到子節點port,然後再在子節點port裏找endpoint;讀取路徑是 { ports { port {endpoint } } },其中ports是可選的。endpoint是port的子節點,不管其內部的屬性名稱,所以也可以用屬性名稱remote-endpoint。of_graph_get_remote_port_parent(ep)通過調用of_graph_get_remote_endpoint()得到remote_port,再調用of_graph_get_port_parent()得到父節點。of_graph_get_remote_endpoint()裏讀取了設備樹裏的"remote-endpoint"屬性。 xvip_graph_parse_one()再調用xvip_graph_find_entity(),在xdev->entities裏檢查是否已經包含對應的entity,如果已經包含,則跳過後續處理;如果沒沒有,則找到的remote_port的父節點,存放到鏈表xdev->entities,並執行操作xdev->num_subdevs++。 最後xdev->entities裏包含了所有entity。後來xvip_graph_notify_complet會根據xdev->entities,為每個entity創建一個設備。 4.9. 函數xvip_graph_notify_bound 系統發現子設備(subdev)後,調用異步處理函數xvip_graph_notify_bound獲取子設備信息。xvip_graph_notify_bound根據設備樹節點,匹配實體(entity)和子設備(subdev);匹配成功後,再把子設備(subdev)的指針保存到實體(entity)。 xvip_graph_notify_bound的關鍵代碼如下: entity->entity = &subdev->entity; entity->subdev = subdev; 4.10. 函數xvip_graph_notify_complete 系統所有子設備(subdev)都被發現後,Linux會調用xvip_graph_notify_complete。xvip_graph_notify_complete調用xvip_graph_build_one為每個entity創建Link;調用xvip_graph_build_dma做Create links for DMA channels;併為每個實體(entity)註冊V4L2子設備v4l2_device_register_subdev_nodes ;最後調用media_device_register註冊media設備。 4.11. 函數xvip_graph_build_one 函數xvip_graph_build_dma在每個entity及其遠端模塊之間創建Link。 函數xvip_graph_build_one先調用函數of_graph_get_next_endpoint從設備的設備樹裏找到下一個endpoint(struct device_node)。與之前描述一樣,of_graph_get_next_endpoint的讀取路徑是 { ports { port {endpoint} } },endpoint是port的子節點,不管其內部的屬性名稱,所以也可以用屬性名稱remote-endpoint。函數xvip_graph_build_dma接着調用v4l2_fwnode_parse_link,得到對應的link(struct v4l2_fwnode_link)。接着根據link中的端口號(local_port)取得pad信息,判斷出是否是目的端(sink)端口;如果是目的端(sink)端口,則忽略。另外還忽略DMA,它由xvip_graph_build_dma處理。接下來再調用函數xvip_graph_find_entity,根據link中的遠端節點(remote_node),得到遠端的entity。最後調用media_create_pad_link,當前entity作為源端(source),遠端entity作為目的端(sink)的media_entity和media_pad,創建媒體pad的鏈接(link) 4.12. 函數xvip_graph_build_dma 函數xvip_graph_build_dma為DMA模塊及其遠端模塊之間創建Link。 函數xvip_graph_build_dma先調用函數of_graph_get_next_endpoint從設備的設備樹裏找到下一個endpoint(struct device_node)。函數xvip_graph_build_dma接着調用v4l2_fwnode_parse_link,得到對應的link(struct v4l2_fwnode_link),根據link中的端口號(local_port),找到對應的DMA(struct xvip_dma)。接下來再調用函數xvip_graph_find_entity,根據link中的遠端節點(remote_node),得到遠端的entity。然後設置源端(source)/目的端(sink)的media_entity和media_pad,最後調用media_create_pad_link創建媒體pad的鏈接(link)。 4.13. 函數xvip_graph_find_dma 函數xvip_graph_build_dma根據指定的port號,在xdev->dmas裏找DMA,如果找到,就返回對應的的struct xvip_dma的指針。 4.14. 函數xvip_graph_find_entity 函數xvip_graph_find_entity根據指定的設備節點(struct device_node),在xdev->entities裏找entity,如果找到,就返回對應的的struct xvip_graph_entity的指針。 5. 關鍵數據 5.1. subdevs 其中subdevs是一個指針,指向(struct v4l2_async_subdev *)的數組(是指針數組),包含了這個設備下的所有subdev的指針,根據遍歷xdev->entities填滿這個數組。xdev->entities由processedxvip_graph_parse_one()根據設備樹找到相關的子設備填充。 5.2. group ID 組ID(struct v4l2_subdev裏有成員grp_id。v4l2_subdev_init()裏把其初始化為0。Xilinx沒有設置grp_id,所以都是0.) 5.3. xvip_graph_notify_ops xvip_graph_notify_ops指向bound和complete函數,如果成功匹配設備,.bound()回調函數將會被調用,當所有的子設備全部被加載完畢之後,.complete() 回調函數就會被調用: 6. 後續任務 還有很多代碼可以分析,比如HDMI RX的驅動、TPG的驅動、m2m的驅動。 這樣你瞭解了嗎?

    時間:2020-10-23 關鍵詞: Xilinx Linux v4l2 管道驅動程序

首頁  上一頁  1 2 3 4 5 6 7 8 9 10 下一頁 尾頁
發佈文章