日韩成人激情_欧美黑人xxx_国产一区二精品区在线_精品在线一区_97成人资源_久久久久久一区

產(chǎn)品分類

當(dāng)前位置: 首頁(yè) > 工業(yè)電子產(chǎn)品 > 其他電子產(chǎn)品 > 開發(fā)板,套件,編程器 > 開發(fā)板

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
開發(fā)板

移植OpenWRT下的ART驅(qū)動(dòng)程序

發(fā)布日期:2022-10-14 點(diǎn)擊率:44

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

相信本站的大部分讀者都知道OpenWRT與ART:OpenWRT是一款基于Linux的開源無(wú)線路由器系統(tǒng),目前廣泛應(yīng)用于很多廠商的無(wú)線設(shè)備;ART是Atheros Radio Test的簡(jiǎn)寫,用于測(cè)試各種基于Qualcomm Atheros芯片設(shè)備的射頻指標(biāo)。近期有朋友尋求OpenWRT中的ART驅(qū)動(dòng)程序, 筆者費(fèi)了九牛二虎之力終于將其搞定,在此做簡(jiǎn)要總結(jié),以便后續(xù)查閱。

1. 基于已有經(jīng)驗(yàn),移植ART驅(qū)動(dòng)程序必須指定相應(yīng)的內(nèi)核路徑與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. 出現(xiàn)error: unknown field 'ioctl' specified in initializer,此前在移植i.MX6 ART驅(qū)動(dòng)程序時(shí)已經(jīng)遇到過(guò)類似問(wèn)題,在https://www.witimes.com/imx6-porting-art/一文中有介紹,修改modules/dk_func.c中dk_fops結(jié)構(gòu)體中的ioctl為compat_ioctl,再次編譯未報(bào)出ioctl的錯(cuò)誤。

3. 出現(xiàn)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. 再次編譯,順利通過(guò),在modules目錄下出現(xiàn)了art.ko。

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

6. 使用artgui Load DUT,出現(xiàn)如下錯(cuò)誤:

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. 又出現(xiàn)了可怕的錯(cuò)誤“Error: get version ioctl failed !”,這個(gè)錯(cuò)誤曾在我移植i.MX6 ART驅(qū)動(dòng)程序時(shí)折磨了我很多天,同樣記錄在https://www.witimes.com/imx6-porting-art/一文中,當(dāng)時(shí)更換為高版本ART后問(wèn)題得到解決,然而這一次我采用同樣方法卻完全不奏效。既然無(wú)法避開,那就正面面對(duì),徹查此問(wèn)題。

8. 查看高版本ART代碼modules/dk_func.c中的dk_fops結(jié)構(gòu)體,如下

#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

發(fā)現(xiàn)其定義了一個(gè)新的ioctl,在內(nèi)核版本高于2.6.31時(shí)生效。

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

今天調(diào)一個(gè)程序調(diào)了半天,發(fā)現(xiàn)應(yīng)用程序的ioctl的cmd參數(shù)傳送到驅(qū)動(dòng)程序的ioctl發(fā)生改變。而根據(jù)《Linux設(shè)備驅(qū)動(dòng)》這個(gè)cmd應(yīng)該是不變的。因?yàn)樵贙ernel 2.6.36 中已經(jīng)完全刪除了struct file_operations 中的ioctl 函數(shù)指針,取而代之的是unlocked_ioctl ,所以我懷疑二者是不是兼容的。上網(wǎng)查了一些資料,很多文章只是泛泛談了一下,說(shuō)在應(yīng)用程序中ioctl是兼容的,不必變化。而在驅(qū)動(dòng)程序中這個(gè)指針函數(shù)變了之后最大的影響是參數(shù)中少了inode ,所以應(yīng)用程序ioctl是兼容的,但驅(qū)動(dòng)程序中我們的ioctl函數(shù)必須變化,否則就會(huì)發(fā)生cmd參數(shù)的變化。

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

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設(shè)計(jì)模板

推薦產(chǎn)品

更多
主站蜘蛛池模板: www.av在线 | 中文字幕亚洲精品 | 免费的av | 亚洲精品免费在线 | 久久久久电影 | 国产一区视频在线 | 麻豆一区一区三区四区 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 中文字幕在线一区 | 久久综合一区二区三区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | wwww.8888久久爱站网 | 亚洲色图在线观看 | 高清人人天天夜夜曰狠狠狠狠 | 国产欧美精品一区二区色综合朱莉 | 国产精品日韩在线观看一区二区 | 中文字幕国产视频 | 免费精品视频 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 二区视频 | aaa天堂| 亚洲成人免费 | 国产精品黄视频 | 在线视频91 | 亚洲欧洲日韩精品 中文字幕 | 欧美日韩午夜精品 | 成人在线观看免费爱爱 | 人人叉 | 国产中文 | 99久久99 | 精产嫩模国品一二三区 | 国产在线一区二区三区 | av毛片| 久久婷婷国产香蕉 | 亚洲欧美激情精品一区二区 | 91精品国产综合久久精品图片 | 欧美视频免费在线 | 日韩在线中文字幕 | 国产精品污www在线观看 | av中文在线播放 | 桃色五月|