chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

RK?平臺(tái)?Vendor Storage?開(kāi)發(fā)指南:基礎(chǔ)知識(shí)、流程與實(shí)用技巧

jf_44130326 ? 來(lái)源:Linux1024 ? 作者:Linux1024 ? 2025-11-22 07:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

瑞芯微(RK)平臺(tái)的嵌入式開(kāi)發(fā)中,vendor_storage是一個(gè)核心模塊,專(zhuān)門(mén)用于存儲(chǔ)SN(序列號(hào))、MAC地址、DRM密鑰等廠商專(zhuān)屬數(shù)據(jù)。它不僅提供了跨環(huán)境的數(shù)據(jù)讀寫(xiě)能力,還具備可靠性校驗(yàn)、掉電恢復(fù)等關(guān)鍵特性,是保障設(shè)備身份標(biāo)識(shí)、功能授權(quán)等核心信息安全的重要組件。本文將從基礎(chǔ)知識(shí)、開(kāi)發(fā)流程、使用途徑三方面,為開(kāi)發(fā)者梳理完整的開(kāi)發(fā)邏輯。

wKgZO2kg8naAHK-lAAAwidjUaJQ168.png

一、核心基礎(chǔ)知識(shí):了解Vendor Storage是什么?

1.核心定位與核心特性

Vendor Storage的核心作用是集中管理廠商專(zhuān)屬靜態(tài)數(shù)據(jù),這些數(shù)據(jù)通常需要在設(shè)備全生命周期中穩(wěn)定存儲(chǔ),且支持多環(huán)境訪問(wèn)。其核心特性包括:

?多場(chǎng)景讀寫(xiě):支持UBOOT、Kernel、Linux應(yīng)用層、PC工具直接讀寫(xiě),覆蓋設(shè)備啟動(dòng)到運(yùn)行的全流程;

?數(shù)據(jù)可靠性:自帶Hash校驗(yàn)、掉電恢復(fù)機(jī)制,避免數(shù)據(jù)損壞或丟失;

?靈活分配:數(shù)據(jù)按64字節(jié)整數(shù)倍分配(1-64字節(jié)占64字節(jié),65-128字節(jié)占128字節(jié),以此類(lèi)推);

?唯一ID訪問(wèn):每個(gè)數(shù)據(jù)項(xiàng)對(duì)應(yīng)唯一ID,通過(guò)ID精準(zhǔn)讀寫(xiě),支持SN、MAC、密鑰等16種標(biāo)準(zhǔn)類(lèi)型及自定義類(lèi)型。

2.存儲(chǔ)架構(gòu)與數(shù)據(jù)布局

Vendor Storage支持EMMC、SPI NOR、NAND等主流存儲(chǔ)介質(zhì),整體架構(gòu)分為“索引區(qū)+數(shù)據(jù)區(qū)+校驗(yàn)區(qū)”三部分:

?索引區(qū)(64K):存儲(chǔ)數(shù)據(jù)項(xiàng)的ID、偏移量、大小、空閑空間等元信息,便于快速定位數(shù)據(jù);

?數(shù)據(jù)區(qū)(按需分配):存儲(chǔ)實(shí)際廠商數(shù)據(jù),如SN、WIFI MAC、LAN MAC、BT MAC等,支持用戶(hù)自定義數(shù)據(jù)項(xiàng);

?校驗(yàn)區(qū)(8字節(jié)):包含4字節(jié)Hash校驗(yàn)值和4字節(jié)版本號(hào),確保數(shù)據(jù)完整性。

3.關(guān)鍵ID定義(標(biāo)準(zhǔn)類(lèi)型)

開(kāi)發(fā)中需通過(guò)ID標(biāo)識(shí)數(shù)據(jù)項(xiàng),常用標(biāo)準(zhǔn)ID如下:

數(shù)據(jù)類(lèi)型 對(duì)應(yīng)ID名稱(chēng) 用途
序列號(hào) VENDOR_SN_ID 設(shè)備唯一標(biāo)識(shí)
有線網(wǎng)MAC VENDOR_LAN_MAC_ID 局域網(wǎng)身份標(biāo)識(shí)
無(wú)線網(wǎng)MAC VENDOR_WIFI_MAC_ID WIFI模塊身份標(biāo)識(shí)
藍(lán)牙MAC VENDOR_BT_MAC_ID 藍(lán)牙模塊身份標(biāo)識(shí)
DRM密鑰 VENDOR_DRM_KEY_ID 數(shù)字版權(quán)保護(hù)授權(quán)
傳感器校準(zhǔn)數(shù)據(jù) VENDOR_SENSOR_CALIBRATION_ID 傳感器精度校準(zhǔn)參數(shù)
自定義數(shù)據(jù) VENDOR_CUSTOM_ID(含擴(kuò)展) 用戶(hù)自定義廠商數(shù)據(jù)

二、開(kāi)發(fā)流程:從環(huán)境配置到功能實(shí)現(xiàn)

Vendor Storage的開(kāi)發(fā)流程圍繞“環(huán)境配置→接口調(diào)用→測(cè)試驗(yàn)證”三步驟展開(kāi),覆蓋UBOOT、Kernel、應(yīng)用層全場(chǎng)景。

1.前期準(zhǔn)備:環(huán)境配置與源碼依賴(lài)

(1)源碼路徑

?UBOOT層:

u-boot/board/rockchip/common/storage/storage.c

?Kernel層:

kernel/drivers/soc/rockchip/rk_vendor_storage.c、sdmmc_vendor_storage.c

?應(yīng)用層:基于Kernel提供的IOCTL節(jié)點(diǎn)或PC工具開(kāi)發(fā)

(2)編譯配置

?Kernel層:通過(guò)Menuconfig啟用驅(qū)動(dòng)(路徑:Drivers -> SOC -> Rockchip -> Vendor Storage);

?UBOOT層:默認(rèn)集成源碼,需確保編譯時(shí)勾選“Vendor Storage Support”。

2.核心開(kāi)發(fā):接口調(diào)用(分場(chǎng)景實(shí)現(xiàn))

(1)UBOOT層開(kāi)發(fā)(設(shè)備啟動(dòng)階段讀寫(xiě))

UBOOT層主要用于設(shè)備啟動(dòng)時(shí)讀取關(guān)鍵數(shù)據(jù)(如MAC地址),核心接口如下:

?初始化:int vendor_storage_init(void)

?功能:初始化Vendor Storage模塊

?返回值:0 =成功,非0 =失敗

?讀取數(shù)據(jù):int vendor_storage_read(u32 id, void *pbuf, u32 size)

?入?yún)ⅲ篿d =數(shù)據(jù)項(xiàng)ID,pbuf =接收數(shù)據(jù)的緩沖區(qū),size =期望讀取字節(jié)數(shù)

?返回值:非- 1 =實(shí)際讀取字節(jié)數(shù),-1 =讀取失敗

?寫(xiě)入數(shù)據(jù):int vendor_storage_write(u32 id, void *pbuf, u32 size)

?入?yún)ⅲ篿d =數(shù)據(jù)項(xiàng)ID,pbuf =待寫(xiě)入數(shù)據(jù)緩沖區(qū),size =寫(xiě)入字節(jié)數(shù)

?返回值:0 =成功,非0 =失敗

示例場(chǎng)景:UBOOT階段讀取SN并打印

vendor_storage_init();// 初始化charsn_buf[64];intret =vendor_storage_read(VENDOR_SN_ID, sn_buf,64);// 讀取SNif(ret >0) { printf("Device SN: %sn", sn_buf);}

(2)Kernel層開(kāi)發(fā)(驅(qū)動(dòng)級(jí)讀寫(xiě))

Kernel層通過(guò)驅(qū)動(dòng)接口提供IOCTL節(jié)點(diǎn),供應(yīng)用層調(diào)用,核心接口與UBOOT層類(lèi)似:

?讀取數(shù)據(jù):int rk_vendor_read(u32 id, void *pbuf, u32 size)

?寫(xiě)入數(shù)據(jù):int rk_vendor_write(u32 id, void *pbuf, u32 size)

?注意:Kernel層無(wú)需手動(dòng)初始化,驅(qū)動(dòng)加載時(shí)自動(dòng)完成初始化。

(3)Linux應(yīng)用層開(kāi)發(fā)(用戶(hù)態(tài)讀寫(xiě))

應(yīng)用層通過(guò)打開(kāi)/dev/vendor_storage設(shè)備節(jié)點(diǎn),結(jié)合IOCTL實(shí)現(xiàn)讀寫(xiě),核心步驟:

1.打開(kāi)設(shè)備節(jié)點(diǎn):int sys_fd = open("/dev/vendor_storage", O_RDWR, 0);

2.構(gòu)造讀寫(xiě)請(qǐng)求(指定ID、緩沖區(qū)、數(shù)據(jù)大?。?/p>

3.調(diào)用IOCTL接口完成讀寫(xiě);

4.關(guān)閉設(shè)備節(jié)點(diǎn)。

示例代碼片段(讀取WIFI MAC):

intsys_fd =open("/dev/vendor_storage", O_RDWR,0);if(sys_fd =0) { printf("WIFI MAC:%02x:%02x:%02x:%02x:%02x:%02xn",     req.data[0], req.data[1], req.data[2],     req.data[3], req.data[4], req.data[5]);}close(sys_fd);

3.測(cè)試驗(yàn)證:工具與方法

(1)PC工具測(cè)試(RKDevInfoWriteTool)

?兼容模式:選擇“兼容模式”下面寫(xiě)號(hào),在這種模式下面,可以選擇”強(qiáng)制MASKROM”強(qiáng)制機(jī)器到maskrom下面寫(xiě)號(hào),或者不選擇“強(qiáng)制MASKROM”,那么機(jī)器需要先切換到loader模式寫(xiě)號(hào)(適用于在空片情況下使用);

?寫(xiě)后重啟:寫(xiě)完后重啟機(jī)器;

?適用場(chǎng)景:量產(chǎn)階段批量寫(xiě)入SN、MAC等數(shù)據(jù),或快速驗(yàn)證數(shù)據(jù)正確性。

wKgZO2kg8naAIr_rAAD6RK8DnnI490.png

(2)命令行工具測(cè)試(vendor_storage工具)

RK提供專(zhuān)用命令行工具,支持Linux環(huán)境快速讀寫(xiě),常用命令示例:

?寫(xiě)入字符串到自定義ID(ID=26):

vendor_storage -w VENDOR_CUSTOM_ID_1A -t string -i "test_storage"

?讀取自定義ID數(shù)據(jù)到文件:

vendor_storage -r VENDOR_CUSTOM_ID_1A -t file -i /userdata/read.bin

?讀取SN并以字符串顯示:

vendor_storage -r VENDOR_SN_ID -t string

三、使用途徑:不同場(chǎng)景下的應(yīng)用選擇

根據(jù)開(kāi)發(fā)階段和使用場(chǎng)景,可選擇不同的訪問(wèn)途徑,具體如下:

使用場(chǎng)景 推薦途徑 優(yōu)勢(shì)
設(shè)備啟動(dòng)階段(UBOOT) UBOOT層API 啟動(dòng)早、資源占用少,適合關(guān)鍵數(shù)據(jù)讀取
驅(qū)動(dòng)開(kāi)發(fā)/內(nèi)核態(tài)操作 Kernel層API 權(quán)限高、性能好,支持底層數(shù)據(jù)管理
應(yīng)用層程序讀寫(xiě) Linux應(yīng)用層IOCTL接口 開(kāi)發(fā)便捷,無(wú)需關(guān)注底層實(shí)現(xiàn)
量產(chǎn)批量寫(xiě)入/快速驗(yàn)證 PC工具(ProvisioningTool) 可視化操作,支持批量處理
調(diào)試/命令行快速操作 vendor_storage命令行工具 輕量化,適合Linux環(huán)境快速測(cè)試

四、開(kāi)發(fā)注意事項(xiàng)

1.數(shù)據(jù)大?。簢?yán)格遵循64字節(jié)整數(shù)倍分配規(guī)則,避免空間浪費(fèi);

2.數(shù)據(jù)可靠性:寫(xiě)入關(guān)鍵數(shù)據(jù)后建議讀取校驗(yàn),確保Hash驗(yàn)證通過(guò);

3.ID唯一性:自定義ID需避開(kāi)標(biāo)準(zhǔn)ID(0-255中已定義的16種類(lèi)型),避免沖突;

4.權(quán)限控制:應(yīng)用層訪問(wèn)/dev/vendor_storage需root權(quán)限,可通過(guò)修改設(shè)備節(jié)點(diǎn)權(quán)限優(yōu)化。

Vendor Storage作為RK平臺(tái)的核心廠商數(shù)據(jù)管理模塊,其設(shè)計(jì)兼顧了可靠性、靈活性和多場(chǎng)景適配性。掌握本文梳理的基礎(chǔ)知識(shí)、開(kāi)發(fā)流程和使用途徑,可快速實(shí)現(xiàn)SN、MAC、密鑰等數(shù)據(jù)的管理需求,適配從設(shè)備啟動(dòng)到量產(chǎn)交付的全流程開(kāi)發(fā)場(chǎng)景。


審核編輯 黃宇

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

    關(guān)注

    27

    文章

    696

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    避坑指南RK3568開(kāi)發(fā)板選型,這5點(diǎn)沒(méi)看清千萬(wàn)別下手!(附迅為驅(qū)動(dòng)開(kāi)發(fā)指南資源)

    避坑指南!RK3568開(kāi)發(fā)板選型,這5點(diǎn)沒(méi)看清千萬(wàn)別下手!(附迅為驅(qū)動(dòng)開(kāi)發(fā)指南資源)
    的頭像 發(fā)表于 10-30 15:49 ?305次閱讀
    避坑<b class='flag-5'>指南</b>!<b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)</b>板選型,這5點(diǎn)沒(méi)看清千萬(wàn)別下手!(附迅為驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)指南</b>資源)

    STM32F10xxx硬件開(kāi)發(fā)指南

    官方STM32F10xxx硬件開(kāi)發(fā)指南
    發(fā)表于 04-14 14:59 ?2次下載

    【北京迅為】iTOP-RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)-第4章 UART基礎(chǔ)知識(shí)

    【北京迅為】iTOP-RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)-第4章 UART基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 03-17 15:50 ?843次閱讀
    【北京迅為】iTOP-<b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)</b>板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>-第4章 UART<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)GPIO基礎(chǔ)知識(shí)

    【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)GPIO基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 03-06 11:23 ?996次閱讀
    【北京迅為】iTOP-<b class='flag-5'>RK</b>3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>GPIO<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    GD32F1x0硬件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32F1x0硬件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-09 15:39 ?0次下載
    GD32F1x0硬件<b class='flag-5'>開(kāi)發(fā)指南</b>

    GD32F10x硬件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32F10x硬件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-07 17:30 ?0次下載
    GD32F10x硬件<b class='flag-5'>開(kāi)發(fā)指南</b>

    GD32VF103硬件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32VF103硬件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-07 17:30 ?2次下載
    GD32VF103硬件<b class='flag-5'>開(kāi)發(fā)指南</b>

    GD32L23x硬件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32L23x硬件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-07 17:26 ?2次下載
    GD32L23x硬件<b class='flag-5'>開(kāi)發(fā)指南</b>

    GD32F4xx硬件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32F4xx硬件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-07 17:20 ?3次下載
    GD32F4xx硬件<b class='flag-5'>開(kāi)發(fā)指南</b>

    GD32F3x0硬件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32F3x0硬件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-07 17:19 ?1次下載
    GD32F3x0硬件<b class='flag-5'>開(kāi)發(fā)指南</b>

    GD32E23x硬件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《GD32E23x硬件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-07 16:20 ?0次下載
    GD32E23x硬件<b class='flag-5'>開(kāi)發(fā)指南</b>

    AN154 GD32VW553快速開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《AN154 GD32VW553快速開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-17 15:39 ?15次下載
    AN154 GD32VW553快速<b class='flag-5'>開(kāi)發(fā)指南</b>

    VCA5807開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《VCA5807開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-03 16:56 ?3次下載
    VCA5807<b class='flag-5'>開(kāi)發(fā)指南</b>

    超值音棒參考設(shè)計(jì)套件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《超值音棒參考設(shè)計(jì)套件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-21 09:16 ?0次下載
    超值音棒參考設(shè)計(jì)套件<b class='flag-5'>開(kāi)發(fā)指南</b>

    Verilog 測(cè)試平臺(tái)設(shè)計(jì)方法 Verilog FPGA開(kāi)發(fā)指南

    Verilog測(cè)試平臺(tái)設(shè)計(jì)方法是Verilog FPGA開(kāi)發(fā)中的重要環(huán)節(jié),它用于驗(yàn)證Verilog設(shè)計(jì)的正確性和性能。以下是一個(gè)詳細(xì)的Verilog測(cè)試平臺(tái)設(shè)計(jì)方法及Verilog FPGA開(kāi)
    的頭像 發(fā)表于 12-17 09:50 ?1552次閱讀