91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WK2XXX SPI?驅(qū)動(dòng):動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)解決雙實(shí)例加載失敗

jf_44130326 ? 來源:Linux1024 ? 作者:Linux1024 ? 2026-04-08 08:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式Linux驅(qū)動(dòng)開發(fā)中,基于WK2XXX系列SPI轉(zhuǎn)串口芯片的驅(qū)動(dòng)開發(fā)是很常見的需求,不少開發(fā)者會(huì)遇到兩個(gè)WK2XXX SPI驅(qū)動(dòng)無法同時(shí)加載的問題,排查日志后發(fā)現(xiàn)無復(fù)雜的資源爭(zhēng)搶,核心癥結(jié)其實(shí)就藏在設(shè)備號(hào)的硬編碼里。本文就從問題現(xiàn)象出發(fā),剖析根本原因,并用動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)這一簡(jiǎn)單方法徹底解決,同時(shí)附上實(shí)操步驟和排查修復(fù)流程圖,新手也能快速上手。

一、問題背景:雙驅(qū)動(dòng)加載失敗,日志無復(fù)雜報(bào)錯(cuò)

在基于WK2XXX系列芯片的項(xiàng)目開發(fā)中,需要同時(shí)加載wk2xxx_spi.c和wk2xxx_spi2.c兩個(gè)SPI轉(zhuǎn)串口驅(qū)動(dòng),實(shí)現(xiàn)多串口擴(kuò)展。但實(shí)際操作中,第一個(gè)驅(qū)動(dòng)能正常加載,加載第二個(gè)驅(qū)動(dòng)時(shí)直接失敗,查看內(nèi)核日志dmesg僅出現(xiàn)以下關(guān)鍵信息,無其他資源沖突報(bào)錯(cuò):

[  3.752046]SPI driver wk2xxxspi0 has no spi_device_id for wkmic,wk2xxx_spi[  3.752311]spi0.0: ttysWK0 at I/O0x1 (irq =0, base_baud =691200) is a wk2xxx[  3.752669] wk02xxx_init: SPI driver for spi to Uart chip WK02XXX, etc.[  3.752673] SPI driver wk2xxxspi02 has no spi_device_id for wkmic,wk2xxx_spi02

反復(fù)排查SPI控制器、片選、中斷等資源,均未發(fā)現(xiàn)沖突,最終定位到設(shè)備號(hào)的硬編碼是導(dǎo)致該問題的唯一原因。

二、根本原因:Linux主設(shè)備號(hào)全局唯一,硬編碼導(dǎo)致沖突

要理解這個(gè)問題,首先要掌握Linux字符設(shè)備號(hào)的核心機(jī)制:

Linux的字符設(shè)備號(hào)由主設(shè)備號(hào)次設(shè)備號(hào)組成,主設(shè)備號(hào)是全局唯一的,用于標(biāo)識(shí)驅(qū)動(dòng)類型,內(nèi)核通過主設(shè)備號(hào)匹配對(duì)應(yīng)的驅(qū)動(dòng)程序;次設(shè)備號(hào)用于區(qū)分同一驅(qū)動(dòng)類型下的不同設(shè)備實(shí)例。

在WK2XXX SPI驅(qū)動(dòng)的原始代碼中,開發(fā)人員對(duì)主設(shè)備號(hào)做了硬編碼定義,且wk2xxx_spi.c和wk2xxx_spi2.c兩個(gè)驅(qū)動(dòng)使用了完全相同的主設(shè)備號(hào)宏定義:

// 兩個(gè)驅(qū)動(dòng)均使用該硬編碼,無任何區(qū)分#defineSERIAL_WK2XXX_MAJOR  207 // 串口主設(shè)備號(hào)#defineCALLOUT_WK2XXX_MAJOR208// 呼叫主設(shè)備號(hào)

當(dāng)?shù)谝粋€(gè)驅(qū)動(dòng)加載時(shí),會(huì)向內(nèi)核申請(qǐng)并占用207、208這兩個(gè)主設(shè)備號(hào);第二個(gè)驅(qū)動(dòng)加載時(shí),再次向內(nèi)核申請(qǐng)相同的主設(shè)備號(hào),內(nèi)核檢測(cè)到該主設(shè)備號(hào)已被占用,會(huì)直接拒絕分配,導(dǎo)致驅(qū)動(dòng)加載失敗。

這也是本次問題的核心:無其他資源沖突,僅因主設(shè)備號(hào)硬編碼重復(fù),導(dǎo)致雙驅(qū)動(dòng)無法同時(shí)加載,因此只需修改設(shè)備號(hào)的分配方式,即可解決問題。

三、核心解決方法:棄用硬編碼,動(dòng)態(tài)申請(qǐng)主設(shè)備號(hào)

Linux內(nèi)核推薦動(dòng)態(tài)申請(qǐng)主設(shè)備號(hào),而非硬編碼指定,這也是解決本次問題的唯一方法。

動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)的優(yōu)勢(shì)

1.內(nèi)核會(huì)自動(dòng)分配未被占用的主設(shè)備號(hào),從根本上避免全局主設(shè)備號(hào)沖突;

2.無需關(guān)注內(nèi)核預(yù)留的主設(shè)備號(hào)范圍,適配性更強(qiáng),跨內(nèi)核版本無需修改設(shè)備號(hào);

3.多驅(qū)動(dòng)、多實(shí)例場(chǎng)景下,無需手動(dòng)區(qū)分設(shè)備號(hào),開發(fā)更高效。

關(guān)鍵API說明

Linux內(nèi)核提供了專門的字符設(shè)備號(hào)動(dòng)態(tài)申請(qǐng)和釋放API,本次修改僅需用到兩個(gè)核心函數(shù),無需引入其他頭文件,原驅(qū)動(dòng)代碼已包含相關(guān)依賴:

1.動(dòng)態(tài)申請(qǐng):alloc_chrdev_region(&dev, minor_start, count, name)

?入?yún)ⅲ篸ev(保存分配到的設(shè)備號(hào))、minor_start(次設(shè)備號(hào)起始值)、count(申請(qǐng)的設(shè)備號(hào)數(shù)量)、name(驅(qū)動(dòng)名稱,用于標(biāo)識(shí));

?出參:成功返回0,失敗返回負(fù)的錯(cuò)誤碼。

2.釋放設(shè)備號(hào):unregister_chrdev_region(dev, count)

?入?yún)ⅲ篸ev(已分配的設(shè)備號(hào))、count(申請(qǐng)的設(shè)備號(hào)數(shù)量);

?無返回值,用于驅(qū)動(dòng)卸載時(shí)釋放已申請(qǐng)的設(shè)備號(hào),避免內(nèi)存泄漏。

四、實(shí)操步驟:修改兩個(gè)驅(qū)動(dòng)代碼,實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)

本次修改基于原始的wk2xxx_spi.c和wk2xxx_spi2.c,兩個(gè)驅(qū)動(dòng)的修改邏輯完全一致,僅需保證驅(qū)動(dòng)名稱標(biāo)識(shí)唯一即可,步驟分4步,新手也能快速完成。

步驟1:新增全局變量,保存動(dòng)態(tài)分配的主設(shè)備號(hào)

在兩個(gè)驅(qū)動(dòng)的宏定義區(qū)下方,新增全局變量用于保存動(dòng)態(tài)分配的主設(shè)備號(hào),替代原硬編碼的宏:

// 新增:保存動(dòng)態(tài)分配的主設(shè)備號(hào)staticintser_major =0;// 原硬編碼宏保留(無需刪除,后續(xù)賦值為0即可)#defineSERIAL_WK2XXX_MAJOR  207#defineCALLOUT_WK2XXX_MAJOR208#defineMINOR_START      5#defineNR_PORTS         4    

步驟2:修改uart_driver結(jié)構(gòu)體,主設(shè)備號(hào)賦值為0

原驅(qū)動(dòng)中定義了uart_driver結(jié)構(gòu)體,硬編碼指定了major字段,需將其修改為0,告訴內(nèi)核采用動(dòng)態(tài)分配方式:

// wk2xxx_spi.c的uart_driver修改staticstructuart_driverwk2xxx_uart_driver = {  owner:         THIS_MODULE,  major:         0, // 關(guān)鍵修改:0表示動(dòng)態(tài)分配主設(shè)備號(hào)  driver_name:      "ttySWK",  dev_name:       "ttysWK",  minor:         MINOR_START,  nr:           NR_PORTS,  cons:         NULL};// wk2xxx_spi2.c的uart_driver修改,僅需保證driver_name/dev_name唯一即可staticstructuart_driverwk02xxx_uart_driver = {  owner:         THIS_MODULE,  major:         0, // 關(guān)鍵修改:0表示動(dòng)態(tài)分配主設(shè)備號(hào)  driver_name:      "ttySWK02",  dev_name:       "ttysWK02",  minor:         MINOR_START,  nr:           NR_PORTS,  cons:         NULL};

步驟3:修改驅(qū)動(dòng)初始化函數(shù),添加動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)邏輯

找到驅(qū)動(dòng)的__init初始化函數(shù)(wk2xxx_init/wk02xxx_init),在注冊(cè)SPI驅(qū)動(dòng)前添加動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)的代碼,原硬編碼相關(guān)邏輯無需刪除,僅需新增:

// wk2xxx_spi.c的初始化函數(shù)修改staticint__init wk2xxx_init(void){ intret;  dev_t dev;//新增:定義設(shè)備號(hào)變量  // 新增:動(dòng)態(tài)申請(qǐng)主設(shè)備號(hào),次設(shè)備號(hào)起始為MINOR_START,共NR_PORTS個(gè)  ret = alloc_chrdev_region(&dev, MINOR_START, NR_PORTS,"wk2xxxspi0"); if(ret 

步驟4:修改驅(qū)動(dòng)退出函數(shù),添加釋放設(shè)備號(hào)邏輯

找到驅(qū)動(dòng)的__exit退出函數(shù)(wk2xxx_exit/wk02xxx_exit),在注銷SPI驅(qū)動(dòng)后添加釋放設(shè)備號(hào)的代碼,保證資源正?;厥眨?/p>

// wk2xxx_spi.c的退出函數(shù)修改staticvoid__exitwk2xxx_exit(void){ printk(KERN_ALERT"%s!!--in--n", __func__); // 原代碼:注銷SPI驅(qū)動(dòng) spi_unregister_driver(&wk2xxx_driver); // 新增:釋放動(dòng)態(tài)分配的設(shè)備號(hào) if(ser_major >0) {   unregister_chrdev_region(MKDEV(ser_major,MINOR_START),NR_PORTS);   printk(KERN_ALERT"%s: 釋放主設(shè)備號(hào):%dn",__func__,ser_major);  }}// wk2xxx_spi2.c的退出函數(shù)修改staticvoid__exitwk02xxx_exit(void){ printk(KERN_ALERT"%s!!--in--n", __func__); // 原代碼 spi_unregister_driver(&wk02xxx_driver); // 新增:釋放設(shè)備號(hào) if(ser_major >0) {   unregister_chrdev_region(MKDEV(ser_major,MINOR_START),NR_PORTS);   printk(KERN_ALERT"%s: 釋放主設(shè)備號(hào):%dn",__func__,ser_major);  }}

關(guān)鍵注意點(diǎn)

兩個(gè)驅(qū)動(dòng)的修改僅需保證動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)的驅(qū)動(dòng)名稱(alloc_chrdev_region的第四個(gè)參數(shù))和uart_driver的driver_name/dev_name唯一即可,其余邏輯完全一致,無需做額外修改。

五、WK2XXX雙驅(qū)動(dòng)加載失敗排查&修復(fù)流程圖

為了方便大家在實(shí)際開發(fā)中快速排查同類問題,整理了專屬流程圖,從問題發(fā)現(xiàn)到功能驗(yàn)證,一步到位,可直接收藏備用:

wKgZPGnVm6-AZ_jAAANmpxJIX8E417.png

六、驗(yàn)證:三步確認(rèn)驅(qū)動(dòng)加載正常

修改代碼并編譯出.ko驅(qū)動(dòng)模塊后,依次加載兩個(gè)驅(qū)動(dòng),通過以下三步驗(yàn)證是否修復(fù)成功,操作簡(jiǎn)單且高效。

步驟1:查看動(dòng)態(tài)分配的主設(shè)備號(hào)

執(zhí)行命令cat /proc/devices,查看字符設(shè)備列表,能看到兩個(gè)驅(qū)動(dòng)被分配了不同的主設(shè)備號(hào),說明設(shè)備號(hào)申請(qǐng)成功:

# 示例輸出,實(shí)際主設(shè)備號(hào)由內(nèi)核分配Characterdevices: ...245ttySWK   # wk2xxx_spi.c的驅(qū)動(dòng)246ttySWK02  # wk2xxx_spi2.c的驅(qū)動(dòng) ...

步驟2:查看/dev下的設(shè)備節(jié)點(diǎn)

執(zhí)行命令ls /dev/ttysWK*,能看到兩個(gè)驅(qū)動(dòng)對(duì)應(yīng)的設(shè)備節(jié)點(diǎn)均成功創(chuàng)建,無重復(fù):

/dev/ttysWK0 /dev/ttysWK1 /dev/ttysWK2 /dev/ttysWK3 /dev/ttysWK020 /dev/ttysWK021 /dev/ttysWK022 /dev/ttysWK023

步驟3:串口功能測(cè)試

通過minicom/screen等工具分別操作兩個(gè)驅(qū)動(dòng)的串口節(jié)點(diǎn),向串口發(fā)送/接收數(shù)據(jù),驗(yàn)證通信正常,說明雙驅(qū)動(dòng)已實(shí)現(xiàn)同時(shí)加載且功能正常。

七、拓展知識(shí)點(diǎn):Linux主設(shè)備號(hào)的那些事

1.主設(shè)備號(hào)范圍:Linux內(nèi)核中主設(shè)備號(hào)的取值范圍是1255,其中1127是內(nèi)核預(yù)留的主設(shè)備號(hào),128~255是用戶自定義的主設(shè)備號(hào),硬編碼時(shí)建議使用128以后的數(shù)值,但仍有沖突風(fēng)險(xiǎn);

2.硬編碼的弊端:除了本次的多驅(qū)動(dòng)沖突,硬編碼主設(shè)備號(hào)還會(huì)導(dǎo)致跨內(nèi)核版本適配失?。ú糠謨?nèi)核版本會(huì)調(diào)整預(yù)留主設(shè)備號(hào)),以及與其他第三方驅(qū)動(dòng)沖突;

3.動(dòng)態(tài)申請(qǐng)的適配性:動(dòng)態(tài)申請(qǐng)主設(shè)備號(hào)時(shí),內(nèi)核會(huì)從未被占用的數(shù)值中自動(dòng)分配,無需關(guān)注內(nèi)核版本和其他驅(qū)動(dòng),是嵌入式Linux驅(qū)動(dòng)開發(fā)的最佳實(shí)踐。

八、總結(jié)

本次WK2XXX SPI雙驅(qū)動(dòng)無法同時(shí)加載的問題,是嵌入式Linux驅(qū)動(dòng)開發(fā)中典型的全局資源硬編碼沖突問題,核心僅因主設(shè)備號(hào)硬編碼重復(fù),無需排查復(fù)雜的SPI、中斷、IO資源,僅通過動(dòng)態(tài)申請(qǐng)主設(shè)備號(hào)這一招即可徹底解決。

同時(shí)也給我們一個(gè)開發(fā)提醒:在嵌入式Linux驅(qū)動(dòng)開發(fā)中,尤其是多驅(qū)動(dòng)、多實(shí)例的場(chǎng)景下,應(yīng)盡量避免硬編碼全局唯一的資源(如主設(shè)備號(hào)、IO地址、中斷號(hào)),遵循Linux內(nèi)核的動(dòng)態(tài)分配原則,既能避免資源沖突,又能提升驅(qū)動(dòng)的適配性和可移植性。

本次的修改方法不僅適用于WK2XXX SPI驅(qū)動(dòng),也適用于其他Linux字符設(shè)備驅(qū)動(dòng)的多實(shí)例加載場(chǎng)景,可直接復(fù)用!

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11793

    瀏覽量

    219385
  • 驅(qū)動(dòng)開發(fā)

    關(guān)注

    0

    文章

    141

    瀏覽量

    12712
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    PIC18F2XXX/4XXX系列閃存微控制器編程規(guī)范解析

    PIC18F2XXX/4XXX系列閃存微控制器編程規(guī)范解析 一、引言 今天我們來深入探討PIC18F2XXX/4XXX系列閃存微控制器的編程規(guī)范。這個(gè)系列包含了眾多型號(hào)的
    的頭像 發(fā)表于 04-08 10:05 ?244次閱讀

    SGM42541H橋驅(qū)動(dòng)IC:自動(dòng)化設(shè)備的得力助手

    SGM42541H橋驅(qū)動(dòng)IC:自動(dòng)化設(shè)備的得力助手 在電子設(shè)備的自動(dòng)化定位和運(yùn)動(dòng)控制領(lǐng)域,電機(jī)驅(qū)動(dòng)IC起著至關(guān)重要的作用。今天,我們就來深
    的頭像 發(fā)表于 03-26 11:15 ?151次閱讀

    Microchip PIC18F2XXX/4XXX 系列閃存微控制器編程指南

    Microchip PIC18F2XXX/4XXX 系列閃存微控制器編程指南 在電子設(shè)計(jì)領(lǐng)域,微控制器的編程是一項(xiàng)關(guān)鍵工作。今天,我們就來深入探討一下 Microchip 的 PIC18F2XXX
    的頭像 發(fā)表于 02-09 16:50 ?977次閱讀

    深入解析Rockchip SFC驅(qū)動(dòng)SPI Flash傳輸流程與問題排查指南

    、關(guān)鍵機(jī)制,并給出實(shí)用的問題排查方案,助力開發(fā)者快速定位問題。 一、SFC驅(qū)動(dòng)核心功能概覽 Rockchip SFC驅(qū)動(dòng)是Linux內(nèi)核級(jí)SPI內(nèi)存設(shè)備
    的頭像 發(fā)表于 02-04 07:13 ?671次閱讀
    深入解析Rockchip SFC<b class='flag-5'>驅(qū)動(dòng)</b>:<b class='flag-5'>SPI</b> Flash傳輸流程與問題排查指南

    【書籍評(píng)測(cè)活動(dòng)NO.67】成為硬核Linux開發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)》

    設(shè)備驅(qū)動(dòng)實(shí)例,涵蓋設(shè)備號(hào)管理、核心數(shù)據(jù)結(jié)構(gòu)填充及用戶與內(nèi)核空間數(shù)據(jù)交互,幫助讀者完成從理論到簡(jiǎn)單驅(qū)動(dòng)
    發(fā)表于 11-17 17:52

    CherryUSB怎樣實(shí)現(xiàn)U盤動(dòng)態(tài)加載

    USB線時(shí),再動(dòng)態(tài)地卸載U盤并掛載文件系統(tǒng)。自己償試在CherryUSB的事件回調(diào)usbd_event_handler中完成以上操作,但沒成功,相關(guān)代碼執(zhí)行不到。是CherryUSB不支持動(dòng)態(tài)加載
    發(fā)表于 10-14 07:31

    基于RT-Thread的EK-RA2E2 設(shè)備驅(qū)動(dòng)移植與應(yīng)用 | 技術(shù)集結(jié)

    目錄前言環(huán)境配置HelloRT-ThreadGPIO輸入與中斷I2C主機(jī)驅(qū)動(dòng)SPI主機(jī)驅(qū)動(dòng)ADC設(shè)備驅(qū)動(dòng)
    的頭像 發(fā)表于 10-05 10:06 ?6292次閱讀
    基于RT-Thread的EK-RA<b class='flag-5'>2E2</b> <b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b>移植與應(yīng)用 | 技術(shù)集結(jié)

    使用NRF24l01軟件包注冊(cè)設(shè)備失敗怎么解決?

    1.根據(jù)軟件包提示第一步先打開了SPI驅(qū)動(dòng)框架 2.然后軟件包添加了 nrf24l01最新版本以及demo、debug 3.在board.h #define using_spi1 在
    發(fā)表于 09-23 06:51

    RK3588 PCIe設(shè)備識(shí)別失敗?一招避坑“非法Class”陷阱

    前言:在RK3588平臺(tái)開發(fā)過程中,你是否遇到過這樣的窘境:明明PCIe總線上掛好了網(wǎng)卡模塊,lspci能識(shí)別到芯片,可驅(qū)動(dòng)就是加載失敗,排查半天找不到關(guān)鍵問題?別慌!本文將帶你一步步解決這個(gè)棘手
    的頭像 發(fā)表于 08-29 08:32 ?1959次閱讀
    RK3588 PCIe<b class='flag-5'>設(shè)備</b>識(shí)別<b class='flag-5'>失敗</b>?一招避坑“非法Class”陷阱

    CX3無法將固件加載SPI閃存如何解決?

    我無法將固件加載SPI 閃存。 步驟如下: 1. 開機(jī),運(yùn)行 USB 控制中心, 2.點(diǎn)擊boot loader,點(diǎn)擊FX3,然后選擇“SPI flash”。然后USB控制中心顯示
    發(fā)表于 07-16 07:37

    USB設(shè)備設(shè)備ID號(hào)按照什么邏輯進(jìn)行分配?

    這樣分配的。 我想要多個(gè)USB設(shè)備先插入時(shí),第一個(gè)設(shè)備ID號(hào)應(yīng)該為0,第二個(gè)設(shè)備ID號(hào)應(yīng)該為1,以此類推。 問題1: 請(qǐng)問,是否有什么方法,
    發(fā)表于 07-16 06:29

    請(qǐng)問CCyUSBDevice如何同時(shí)實(shí)例2個(gè)?

    CYAPI編程手冊(cè)中的解釋,CCyUSBDevice實(shí)例化后是連接到了cyusb driver驅(qū)動(dòng)上,它能查找實(shí)例中的多臺(tái)USB設(shè)備?,F(xiàn)在的問題是假如我有
    發(fā)表于 05-19 07:27

    如何使用EZUSB-CX3實(shí)現(xiàn)階段引導(dǎo)加載程序?

    我對(duì)如何使用 EZUSB-CX3 實(shí)現(xiàn)階段引導(dǎo)加載程序有點(diǎn)困惑。我想要的是,當(dāng)有新的 cx3 映像時(shí),我希望能夠從 cx3 固件引導(dǎo)到第二階段引導(dǎo)加載程序,然后將新映像刷新到 SPI
    發(fā)表于 05-12 08:26

    USB 3.0CX3中的輔助引導(dǎo)加載程序后無法識(shí)別怎么解決?

    我正在為CYPRESS? CX3 (FX3) 開發(fā)輔助引導(dǎo)加載程序 (SBL),它從 SPI Flash 加載應(yīng)用程序并執(zhí)行它。 但是,通過 SBL 啟動(dòng)應(yīng)用程序時(shí),USB 3.0 枚舉失敗
    發(fā)表于 05-06 08:39

    鴻蒙應(yīng)用元服務(wù)開發(fā)-Account Kit獲取手機(jī)號(hào)

    、OpenID。 (三)開發(fā)前提 1、在進(jìn)行代碼開發(fā)前,請(qǐng)先確認(rèn)您已完成開發(fā)準(zhǔn)備工作。 2、元服務(wù)獲取手機(jī)號(hào)之前,需要完成phone(獲取您的手機(jī)號(hào))的scope權(quán)限申請(qǐng),詳情參見sc
    發(fā)表于 04-08 16:14