《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > Linux教學——探討內核代碼

Linux教學——探討內核代碼

2022-08-18
來源:電子技術應用專欄作家 嵌入式Linux
關鍵詞: 內核代碼

  最近因為要解決一個bug,需要在內核的f_hid.c里面做一些適配,需要把這部分代碼研究透徹。

  在這幾天之前我是根本不知道什么是In端點,Out端點,以及什么是endpoint 0的,而且最近的一段時間,我一直是在寫應用方面的代碼,也是趁著這個機會,好好拜讀這部分。

  ——

  在HID 1.0之前,是沒有什么OUT 端點的,都是用端點0來進行數據傳輸,不過端點0有一個問題,他的最大傳輸包的大小有限制。

  微信圖片_20220818152226.jpg

  謝謝我飛哥給的截圖

  之后,就有一個大佬在原來的內核代碼上面做了一部分修改,在原來的enpoint 0 上加了一個OUT端點,意思就是說,本來從深圳到廣州有綠皮火車,但是綠皮火車一次只能裝下20個人,有一個人就發明了高鐵,高鐵一次可以裝200個人。

  這個提交的鏈接

  https://github.com/torvalds/linux/commit/99c515005857ff7d6cd5c2ba272ccab5dc0ea648

  微信圖片_20220818152245.png

  這個修改的commit里面說明了修改的原因,比如說使用端點0不能同步到字符設備,而且端點0的使用可能會導致數據丟失,所以加了一個OUT interrupt endpoint接口。

  重點來了

  并且這個補丁還會繼續處理SET_REPORT  接口請求事件。

  ——

  好了,上面是這個文件的第一次修改,我們的代碼里面也是用的原廠的SDK代碼修改,但是這個修改有一個問題,實際上端點0的SET REPORT并沒有正確請求,這是一個問題,但是這個問題不是Linux 代碼的問題,應該是芯片原廠移植過來后出現的問題。

  之后,又有一個大佬重新對這個內核代碼進行了改造

  提交的commit鏈接如下

  https://github.com/torvalds/linux/commit/d7428bc26fc767942c38d74b80299bcd4f01e7cb

  他的修改的主要是增加了配置選項,就是可以軟件配置使用OUT endpoint還是端點0,這主要是不同的產品定義可能需求會不同。

  這個改造的原因是什么呢?

  微信圖片_20220818152314.png

  有些主機設備,我們說的主機指的是USB的HOST設備,它不支持OUT endpoint 。

  還有一些蘋果產品,他們天然就不能使用OUT端點來傳輸。

  其他巴拉巴拉的一些大家就自己看吧。

  ——

  截圖給大家看看什么是端點0和OUT endpoint

  微信圖片_20220818152333.jpg

  ——

  寫了很多,還沒有說到我要改造什么,其實就是對這部分機制熟悉了,要修改掉因為SET REPORT導致的一個bug。

  這也是一些看代碼的思路吧,內核是分成很多很多模塊的,大家想看哪些模塊,去看看commit,去看看代碼,其實挺有意思的。

  不過里面的一些命名并不是很清晰明了,比如IN這個東西,太簡潔了,不是做USB的人估計很難明白,這些還有,要是去調試HID描述符,就知道那是太要繞腦子了。

  ——問題是什么?

  還是從HID來說,上面留言說的沒問題,USB嘛,不就是一個發送,一個接口,設備到主機通過in端口,這個沒問題。

  在HID低版本的時候用的是endpoint 0端口,也不能說是低版本,即使在高版本,也是可以用endpoint 0端口的「不同之處在于低版本只有endpoint 0」,我也拿了一些競品的產品來看,他們也是可以通過endpoint 0來發送信息給設備端的。

  問題是,我們用的RK方案打開了out端點后不可以。

  其他產品在打開out端口的時候,也是可以用endpoint 0 發送數據到設備的。

  為什么我揪著這個endpoint 0發送呢?

  是因為測試發現通過這個端口可以使用set report 函數,用這個函數來發送消息不會出現偶發的超時問題。

  RK是怎么回復的呢?

  他們說他們提供的方案是用endpoint 0的,都不會有問題。

  而且看了內核代碼,確實是配置想用哪個就用哪個,用戶自己選擇,用了out ,endpoint 0 就用不了了。

  微信圖片_20220819154823.png

  人家代碼也是寫得很清楚了,就是更子的。

  ——那我們為什么不直接用RK的方案,直接用endpoint 0 就好了

  直接用endpoint 0我在之前的文章也說了,這樣就可以兼容MAC的電腦,也不會出現一些亂七八糟可能性的問題。

  但是問題是,我們的應用程序開發的很多功能,都已經實現,都是用的out端點,包的長度也是1024, 這方案一搞下去,那所有人都要重寫代碼,重新測試了。

  微信圖片_20220819154851.png

  —— 后面怎么修改了?

  因為如果加上

  微信圖片_20220819154911.png

  設備是可以調用HOST的setreport接口的,我要做的,無非就是在這里判斷下數據指令,然后傳給應用程序就好了。

  問題就出在這里,usb的一些結構體,如果沒有好好寫,就可能影響到系統的東西。

  OUT端點寫入數據的時候,是直接用到req結構體的

  微信圖片_20220819154931.png

  這段代碼在out端點接收沒有問題,但是放到setreport部分來處理就出現了問題。

  setreport的處理不一樣

  他給HOST來的數據在內核重新分配了空間。

  微信圖片_20220819154949.png

  然后就針對這些不同的邏輯修改修改。

  細節就不說了

  內核代碼不像應用代碼,應用的調試是比較方便的,內核的調試涉及硬件設備就不同了,而且接口的處理也會不同,稍不注意引起的空指針問題,整個系統就掛了,應用還可以用守護進程拉起來,內核就不行,只能重啟。

  不過內核都是C,看起來還是比較舒服的。


    更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg

微信圖片_20220706154608.jpg

電子技術應用專欄作家  嵌入式Linux

原文鏈接:https://mp.weixin.qq.com/s/humym3KbZsEzT2XSi-texw

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美午夜在线一二页| 在线日韩中文字幕| 欧美日韩999| 美女视频黄免费的久久| 亚洲国产成人av好男人在线观看| 国产视频一区在线| 欧美成人免费小视频| 激情五月综合色婷婷一区二区| 久久精品女人| 国产精品高精视频免费| 亚洲欧美视频一区二区三区| 久久精品视频在线播放| 亚洲欧美在线视频观看| 欧美性事在线| 久久久久久亚洲精品不卡4k岛国| 乱中年女人伦av一区二区| 久久久久久国产精品mv| 夜色激情一区二区| 久久综合成人精品亚洲另类欧美| 蘑菇福利视频一区播放| 久久精品亚洲一区二区三区浴池| 欧美 日韩 国产在线| 国产精品va在线| 欧美日韩四区| 久久成人国产精品| 国产精品入口尤物| 国产精品国产成人国产三级| 欧美成人网在线| 美日韩精品视频免费看| av成人免费在线| 亚洲欧洲综合另类| 亚洲国产欧美一区二区三区丁香婷| 国产精品中文字幕在线观看| 国产精品老牛| 在线欧美日韩精品| 在线欧美日韩国产| 久久亚洲午夜电影| 亚洲人成在线播放网站岛国| 亚洲精品午夜| 久久爱91午夜羞羞| 亚洲伦理在线免费看| 欧美在线视频网站| 欧美va日韩va| 在线日韩电影| 国内综合精品午夜久久资源| 免费成人毛片| 亚洲激情小视频| 亚洲激情成人在线| 午夜精品影院在线观看| 亚洲女人小视频在线观看| 国产日韩欧美不卡| 国内伊人久久久久久网站视频| 在线 亚洲欧美在线综合一区| 国语自产精品视频在线看8查询8| 加勒比av一区二区| 激情久久久久久久久久久久久久久久| 久久在线视频| 亚洲免费视频一区二区| 在线电影院国产精品| 国产午夜精品一区理论片飘花| 老司机67194精品线观看| 亚洲国产欧美日韩| 久热精品在线视频| 国产在线拍偷自揄拍精品| 在线激情影院一区| 亚洲免费影视| 日韩午夜av电影| 欧美一区久久| 一区二区三区高清视频在线观看| 久久在线精品| 久久国产精品色婷婷| 一区二区三区日韩欧美| 一本大道久久精品懂色aⅴ| 欧美激情a∨在线视频播放| 99精品免费| 欧美日韩在线直播| 午夜在线观看免费一区| 国产精品国产三级国产aⅴ9色| 一区二区三区视频在线播放| 国产在线精品一区二区夜色| 欧美一区2区三区4区公司二百| 国产亚洲欧美一区在线观看| 亚洲一区二区三区视频播放| 激情综合在线| 麻豆成人小视频| 中国成人亚色综合网站| 欧美在线观看视频在线| 日韩视频一区二区三区在线播放免费观看| 国产精品免费一区二区三区在线观看| 国产精品亚洲视频| 国产精品久久久一区麻豆最新章节| 国产午夜精品一区理论片飘花| 欧美精品久久久久久久久久| 久久九九有精品国产23| 国产精品区一区二区三| 午夜国产一区| 亚洲一二三级电影| 久久精品国产免费观看| 亚洲午夜免费福利视频| 雨宫琴音一区二区在线| 国产中文一区二区三区| 一区二区三欧美| 伊人婷婷久久| 国产精品成人观看视频免费| 亚洲一区二区三区久久| 欧美精品v日韩精品v韩国精品v| 免费观看不卡av| 欧美日韩成人综合在线一区二区| 亚洲激情在线| 国产欧美精品在线观看| 亚洲毛片av在线| 亚洲国产精选| 亚洲欧美日韩在线播放| 91久久国产综合久久| 欧美在线黄色| 亚洲大片在线观看| 久久成人一区二区| 亚洲视频一区二区免费在线观看| 亚洲专区在线视频| 欧美一区二区精品久久911| 国内一区二区三区| 国内综合精品午夜久久资源| 亚洲视频二区| 国产视频一区免费看| 黄色成人精品网站| 国产精品久久久久毛片大屁完整版| 亚洲国产一区在线| 亚洲成人在线视频播放| 欧美777四色影视在线| 在线综合+亚洲+欧美中文字幕| 国产精品观看| 国产日韩av在线播放| 国产日韩av高清| 国产精品一区免费观看| 欧美激情1区| 日韩亚洲成人av在线| 亚洲午夜三级在线| 欧美日韩精品综合| 欧美人牲a欧美精品| 亚洲视屏一区| 欧美日韩在线一二三| 欧美在线观看网址综合| 国产精品一区二区三区久久| 亚洲在线观看免费视频| 国产婷婷色综合av蜜臀av| 国产精品久久国产精品99gif| 99re国产精品| 欧美激情亚洲自拍| 亚洲欧美一区二区在线观看| 亚洲欧美精品中文字幕在线| 亚洲精品一区二区三区婷婷月| 日韩午夜在线电影| 一区二区三区高清在线观看| 亚洲国产精品t66y| 国产一区二区三区四区在线观看| 久久久久久日产精品| 久久在线免费| 国产一区二区三区久久久久久久久| 羞羞色国产精品| 99在线热播精品免费| 欧美激情第9页| 久久久久久久久伊人| 国内综合精品午夜久久资源| 最近中文字幕mv在线一区二区三区四区| 欧美v亚洲v综合ⅴ国产v| 欧美在线视频网站| 亚洲国产精品精华液网站| 美女诱惑黄网站一区| 在线国产亚洲欧美| 在线观看日韩国产| 麻豆9191精品国产| 亚洲欧美乱综合| 久久最新视频| 亚洲天堂久久| 久久精品国产免费| 午夜一区二区三区在线观看| 国产精品成人一区二区三区吃奶| 国产精品久久久久久久久免费樱桃| 欧美xart系列在线观看| 国产精品色在线| 宅男噜噜噜66一区二区| 美女网站在线免费欧美精品| 亚洲精品久久久一区二区三区| 欧美精品成人91久久久久久久| 久久动漫亚洲| 久久精品人人爽| 国内精品视频一区| 亚洲激情网站免费观看| 欧美成人综合| 国产精品丝袜91| 国产欧美日韩综合精品二区| 在线一区二区三区四区五区| 亚洲精品免费一二三区| 久久xxxx精品视频| 欧美一区二区三区精品电影| 国产精品v欧美精品∨日韩| 亚洲国产婷婷香蕉久久久久久| 欧美一区二区三区在线| 欧美成人精品一区| 欧美大片免费观看在线观看网站推荐| 亚洲人成在线播放| 亚洲一区二区三区乱码aⅴ| 在线一区二区日韩| 欧美欧美午夜aⅴ在线观看| 国产欧美日韩精品专区| 午夜国产不卡在线观看视频| 国产日韩视频| 国产精品人人爽人人做我的可爱| 日韩视频在线你懂得| 欧美成人精品高清在线播放| 国产综合色产在线精品| 国产乱肥老妇国产一区二| 国产综合亚洲精品一区二| 欧美日韩视频在线| 亚洲自拍电影| 亚洲午夜在线观看| 亚洲精品免费一二三区| 宅男噜噜噜66一区二区66| 国产欧美日韩一区二区三区在线观看| 亚洲乱码久久| 在线观看中文字幕亚洲| 美女视频一区免费观看| 亚洲国产小视频| 久久成人一区| 欧美网站在线观看| 欧美日韩三区四区| 国产精品剧情在线亚洲| 亚洲欧美日韩一区二区三区在线观看| 国产精品视频自拍| 久久久久久色| 亚洲精品乱码久久久久久久久| 亚洲欧美激情一区| 亚洲人成亚洲人成在线观看图片| 久久中文字幕导航| 国产一区二区三区高清在线观看| 亚洲欧洲一区| 国产精品久久久久9999吃药| 国产欧美一区二区白浆黑人| 国产一区二区三区在线观看视频| 欧美母乳在线| 亚洲曰本av电影| 亚欧美中日韩视频| 99精品欧美一区| 精品不卡一区二区三区| 久久久久久久一区二区| 国产精品青草久久久久福利99| 一区二区三区黄色| 欧美另类一区| 久久精品在这里| 国产欧美日韩三级| 这里只有精品在线播放| 亚洲国产精品一区制服丝袜| 国产欧美日韩在线观看| 亚洲欧美中文另类| 欧美日一区二区三区在线观看国产免| 亚洲大胆人体视频| 国产精品制服诱惑| 亚洲精品一区二区三区在线观看| 久久高清一区| 猛干欧美女孩| 午夜精品一区二区三区在线视| 国产日韩欧美综合一区| 久久精品国产69国产精品亚洲| 一区二区三区视频在线看| 黄色成人av网站| 国语自产精品视频在线看| 亚洲综合精品自拍| 亚洲资源在线观看| 136国产福利精品导航网址应用| 久久一区欧美| 亚洲欧美日韩爽爽影院| 国产九色精品成人porny| 亚洲天堂男人| 国产一区二区三区在线观看精品| 一区二区三区精品视频在线观看| 亚洲激情在线观看| 欧美激情视频给我| 中文亚洲字幕| 国产有码一区二区| 狠狠色伊人亚洲综合网站色| 老司机免费视频一区二区三区| 性欧美18~19sex高清播放| 亚洲综合精品四区| 亚洲精品一二三| 欧美日韩蜜桃| 欧美成ee人免费视频| 久久超碰97中文字幕| 欧美在线91| 国产精品视频最多的网站| 亚洲色在线视频| 欧美日韩亚洲一区二区三区四区| 今天的高清视频免费播放成人| 欧美一区二区在线| 国内精品久久久久影院薰衣草| 亚洲精品偷拍| 国产精品稀缺呦系列在线| 狠狠色丁香久久婷婷综合丁香| 亚洲女女做受ⅹxx高潮| 欧美在线影院| 亚洲精品免费电影| 午夜精品影院在线观看| 国产精品综合色区在线观看| 欧美涩涩网站| 久久婷婷丁香| 巨胸喷奶水www久久久免费动漫| 欧美日韩成人免费| 国产欧美一区二区精品秋霞影院| 极品少妇一区二区三区| 一区二区欧美精品| 国产精品丝袜久久久久久app| 亚洲精品国产无天堂网2021| 亚洲精品裸体| 亚洲一区二区不卡免费| 国产主播一区二区三区| 美女网站久久| 韩日精品在线| 欧美日韩另类国产亚洲欧美一级| 欧美日一区二区在线观看| 美女精品在线观看| 91久久视频| 亚洲在线第一页| 亚洲国产成人精品女人久久久| 欧美日韩精品一区二区三区| 国产精品影院在线观看| 欧美在线不卡| 欧美天堂在线观看| 国产精品www色诱视频| 欧美高潮视频|