美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產品分類

當前位置: 首頁 > 工業電子產品 > 其他電子產品 > 開發板,套件,編程器 > 開發板

類型分類:
科普知識
數據分類:
開發板

移植OpenWRT下的ART驅動程序

發布日期:2022-10-14 點擊率:166

For English speaking readers, please visit: https://www.witimes.com/openwrt-porting-art-en/

相信本站的大部分讀者都知道OpenWRT與ART:OpenWRT是一款基于Linux的開源無線路由器系統,目前廣泛應用于很多廠商的無線設備;ART是Atheros Radio Test的簡寫,用于測試各種基于Qualcomm Atheros芯片設備的射頻指標。近期有朋友尋求OpenWRT中的ART驅動程序, 筆者費了九牛二虎之力終于將其搞定,在此做簡要總結,以便后續查閱。

1. 基于已有經驗,移植ART驅動程序必須指定相應的內核路徑與Toolchain路徑,修改makefile.artmod如下

KDIR := /home/tom/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.7

PWD := $(shell pwd)

ROOTDIR := $(PWD)/modules

# Default architecture is MIPS

ARC :=mips

CROSS_CC :=/home/tom/openwrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-

2. 未作任何代碼的更改情況下,開始編譯。

3. 出現error: unknown field 'ioctl' specified in initializer,此前在移植i.MX6 ART驅動程序時已經遇到過類似問題,在https://www.witimes.com/imx6-porting-art/一文中有介紹,修改modules/dk_func.c中dk_fops結構體中的ioctl為compat_ioctl,再次編譯未報出ioctl的錯誤。

3. 出現error: 'SPIN_LOCK_UNLOCKED' undeclared here (not in a function),修改modules/dk_event.c中的

spinlock_t driver_lock = SPIN_LOCK_UNLOCKED;

DEFINE_SPINLOCK(driver_lock);

4. 再次編譯,順利通過,在modules目錄下出現了art.ko。

5. 將art.ko上傳至web服務器,并使用wget命令下載至DUT中,并使用insmod art.ko命令插入內核模塊并運行nart.out,未出現任何異常。

6. 使用artgui Load DUT,出現如下錯誤:

deviceInit devIndex=0 device_fn=0 pdkInfo=0

Opening device /dev/dk0

Error: get version ioctl failed !

< 6006 ERROR Anwi driver load error.

< 7502 CONTROL OFF

< 7504 INFO |set|devid||

< 7504 INFO |set|mac||

< 7504 INFO |set|customer||

< 7506 CONTROL DONE load devid=-1; caldata=auto;

截圖如下

ioctl-Error

7. 又出現了可怕的錯誤“Error: get version ioctl failed !”,這個錯誤曾在我移植i.MX6 ART驅動程序時折磨了我很多天,同樣記錄在https://www.witimes.com/imx6-porting-art/一文中,當時更換為高版本ART后問題得到解決,然而這一次我采用同樣方法卻完全不奏效。既然無法避開,那就正面面對,徹查此問題。

8. 查看高版本ART代碼modules/dk_func.c中的dk_fops結構體,如下

#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31)
static long dk_ioctl_new(struct file *file, unsigned int cmd, unsigned long arg)
{
        struct inode *inode = file->f_path.dentry->d_inode;
        long ret;
        ret = dk_ioctl(inode, file, cmd, arg);
        return ret;
}
#endif

發現其定義了一個新的ioctl,在內核版本高于2.6.31時生效。

9. 此處引用自:http://blog.csdn.net/cbl709/article/details/7295772

今天調一個程序調了半天,發現應用程序的ioctl的cmd參數傳送到驅動程序的ioctl發生改變。而根據《Linux設備驅動》這個cmd應該是不變的。因為在Kernel 2.6.36 中已經完全刪除了struct file_operations 中的ioctl 函數指針,取而代之的是unlocked_ioctl ,所以我懷疑二者是不是兼容的。上網查了一些資料,很多文章只是泛泛談了一下,說在應用程序中ioctl是兼容的,不必變化。而在驅動程序中這個指針函數變了之后最大的影響是參數中少了inode ,所以應用程序ioctl是兼容的,但驅動程序中我們的ioctl函數必須變化,否則就會發生cmd參數的變化。

10. 仿照這段代碼,將低版本ART代碼modules/dk_func.c中的dk_fops結構體作出修改,如下

static long dk_ioctl_new(struct file *file, unsigned int cmd, unsigned long arg)
{
        struct inode *inode = file->f_path.dentry->d_inode;
        long ret;
        ret = dk_ioctl(inode, file, cmd, arg);
        return ret;
}

static struct file_operations dk_fops = {
        owner:  THIS_MODULE,
        open:   dk_open,
        release: dk_release,
        mmap:   dk_mmap,
	unlocked_ioctl: dk_ioctl_new
};

11. 再次編譯,下載至DUT,并使用artgui Load DUT,一切正常。

Final-OK

下一篇: PLC、DCS、FCS三大控

上一篇: Allegro PCB設計模板

推薦產品

更多
美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        伊人开心综合网| 亚洲h在线观看| 精品视频在线看| 欧美日韩精品一区二区| 欧美日韩精品一区二区三区四区| 亚洲国产一区二区视频| 亚洲国产一区二区三区| 亚洲1区2区3区视频| 青青草国产成人99久久| 国产福利一区二区三区在线视频| 欧美国产禁国产网站cc| 国产日韩精品久久久| 亚洲色图.com| 免费黄网站欧美| 粉嫩蜜臀av国产精品网站| 成人午夜免费av| 国产区一区二区三区| 日韩欧美亚洲在线| 欧美男人的天堂一二区| 久久九九99视频| 亚洲精品视频自拍| 老司机精品视频在线| 99久久99久久精品免费观看| 久久久久久久久久久一区 | 成人福利视频网站| 国产精品毛片va一区二区三区| 国产一本一道久久香蕉| 91亚洲男人天堂| 欧美日产一区二区三区在线观看| av不卡免费电影| 欧美自拍资源在线| 91精品国模一区二区三区| 国产欧美日韩卡一| 日本免费新一区视频| 91在线观看高清| 色综合久久中文综合久久牛| 日韩一区二区三区免费观看| 亚洲国产成人在线| 蜜桃视频免费观看一区| 超碰97人人人人人蜜桃| 色悠久久久久综合欧美99| 久久综合五月天婷婷伊人| 亚洲bt欧美bt精品| 91论坛在线播放| 欧美日韩一区视频| 亚洲免费在线观看| 成人精品免费网站| 亚洲国产欧美日韩| 高清shemale亚洲人妖| 水蜜桃一区二区| 精品国产sm最大网站| 日韩国产欧美视频| 精品视频在线观看| 日韩美女视频一区二区在线观看| 欧美精选一区二区| 最新国产成人在线观看| 丁香亚洲综合激情啪啪综合| 亚洲v国产v在线观看| 国产亚洲综合av| 免费美女久久99| 欧美午夜免费| 国产午夜精品福利| 风流少妇一区二区| 91福利视频久久久久| 亚洲日本在线视频观看| 成人av手机在线观看| 欧洲亚洲国产日韩| 亚洲一区在线观看视频| 国产伦精品一区二区三区视频免费| 国产伦理久久久| 日韩一区二区电影在线| 亚洲高清视频的网址| 久久99精品国产一区二区三区| 免费日韩电影在线观看| 精品欧美一区二区久久| 麻豆久久一区二区| 茄子视频成人在线观看| 国产精品久久毛片av大全日韩| 亚洲午夜日本在线观看| www.成人三级视频| 精品日韩99亚洲| 国产一区二区三区国产| 色婷婷国产精品久久包臀| 亚洲综合激情另类小说区| 激情欧美一区二区三区中文字幕| 日韩精品av一区二区三区| 国内外成人免费视频| 日韩欧美视频在线| 精品午夜一区二区三区在线观看| 99在线热播精品免费| 欧美乱妇23p| 黑人巨大精品欧美一区| 欧美亚洲尤物久久| 美女被吸乳得到大胸91| 欧美怡红院视频| 精品一区二区三区在线播放 | 午夜精品一区二区在线观看| 国产丝袜在线精品| 91一区在线观看| 国产欧美一区二区精品忘忧草 | 97人人模人人爽视频一区二区| 久久精品二区| 亚洲欧洲日韩在线| 国产乱码精品一区二区三区不卡| 婷婷久久青草热一区二区| 色噜噜色狠狠狠狠狠综合色一| 欧美色综合久久| 久久超碰97中文字幕| 欧美区在线观看| 懂色av一区二区在线播放| 精品美女在线观看| 91在线看国产| 国产精品久久久久三级| 久久久久久九九九九| 日韩一区在线播放| 午夜精品一区二区在线观看 | 精品国产亚洲一区二区三区在线观看| 国产精品高潮呻吟久久| 精品麻豆av| 亚洲精品v日韩精品| 一区二区不卡在线视频 午夜欧美不卡'| 日韩欧美在线123| 国产成人精品在线看| 精品国精品国产| 成人看片在线| 香蕉av福利精品导航| 欧美精品久久一区二区三区| 99国产精品国产精品毛片| 中文字幕日韩一区二区| 亚洲综合av一区| 国产精品小仙女| 国产精品女主播在线观看| 日韩欧美亚洲日产国| 韩国精品久久久| 欧美岛国在线观看| 久久66热这里只有精品| 人人超碰91尤物精品国产| 欧美一二区视频| 国产一区二区无遮挡| 秋霞影院一区二区| 精品免费99久久| 日韩精品一区二区三区外面| 极品尤物av久久免费看| 国产午夜精品理论片a级大结局| 成人蜜臀av电影| 国产精品第四页| 日本乱码高清不卡字幕| 91免费版在线| 日韩专区一卡二卡| 久久看人人爽人人| 亚洲精品视频一区二区三区| 国产成人av一区二区三区在线| 色婷婷亚洲精品| av电影在线不卡| 天天综合网 天天综合色| 337p亚洲精品色噜噜噜| 青青成人在线| 91在线视频在线| 免费在线观看成人| 国产精品热久久久久夜色精品三区| 999热视频在线观看| 亚洲gay无套男同| 久久久亚洲精华液精华液精华液| 国产成人激情av| 亚洲狼人国产精品| 91精品欧美综合在线观看最新| 国产在线精品一区在线观看麻豆| 中文字幕一区二区三区在线乱码 | 337p粉嫩大胆噜噜噜噜噜91av| 国产亚洲精品aa| 亚洲一区在线免费| 国产精品播放| 国产成人aaaa| 蜜臀av在线播放一区二区三区| 欧美三级日韩三级国产三级| 国严精品久久久久久亚洲影视| 国产精品欧美一区二区三区| 欧美精品在线一区二区| 另类欧美小说| 91免费视频观看| 国产精品99久久久久久有的能看| 日韩精品一区二区三区swag| 亚洲欧美日韩精品久久久| 99视频网站| 成人精品一区二区三区四区| 日韩精品国产欧美| 一区二区三区蜜桃| 国产精品少妇自拍| 精品国精品自拍自在线| 欧美日韩国产综合一区二区三区| 成人动漫av在线| 国产综合色产在线精品| 日韩精品一区第一页| 亚洲激情图片小说视频| 中文字幕av一区二区三区| 精品国产91乱码一区二区三区 | 欧美午夜精品久久久久久蜜| 成人网在线播放| 精品一区二区三区免费播放| 日日摸夜夜添夜夜添精品视频|