在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32芯片UID話題

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-06-15 10:00 ? 次閱讀

絕大多數STM32系列的芯片都在固定的地方放置了長度為96位的唯一身份識別碼,簡稱UID,只有極少數STM32系列芯片內部沒有該UID,比方超值型STM32F0x0系列,STM32F100系列。具體到哪顆芯片到底有沒有UID,在芯片數據手冊的首頁都有明確的說明,無需猜測。如下圖所以:

芯片所對應的參考手冊里,有對該UID存放地址的詳細介紹。地址因不同系列或子序列而不同。

關于這個UID常有人有些疑問,有幾個問題在這里稍微總結下:

1、有無問題。上面說了絕大部分STM32都內置UID,具體以查看數據手冊為準。

2、唯一性問題。該UID的唯一性是靠96位這個整體來保證其唯一性,你若截取部分就不保證了。

3、內容問題。有人對這個UID內容似乎很好奇,這點在STM32參考手冊里并無詳細描述,但這并不影響使用。【因為STM8有些芯片也有96位UID,那里有較為詳細的介紹,涉及芯片WAFER生產加工工程中的一些各種坐標信息、wafer編號信息、產品批號信息等】

4、地址問題。芯片UID的存放地址要到芯片對應的參考手冊里去查對。特別要提醒的是,并非所有STM32系列的UID信息存放在某個起始地址開始的連續空間內。

5、怎么用的問題。說實在的,這個就很難說了,反正STM32有這個特性在,肯定沒有固定不變的用法。具體怎么用就看你自己了。對于該UID,STM32參考手冊給了些大致應用方向的介紹:

簡單點說,該UID可以做特定序列號;做FLASH編程的安全密鑰;激活安全啟動流程。據我所知,曾有人拿這個UID碼作為唯一發射碼。中間按個做密鑰配合加密技術的應用涉及到很專業的內容, ST官方也有不少這方面的培訓材料,有興趣的可以找相關資料進一步了解學習。

相對用的比較多的就是基于該UID設計用戶程序的安全啟動。其大致原理就是,用戶程序第一次運行時將預定的未被改寫過FLASH地址寫入本芯片UID數據,之后每次啟動都會重讀UID數據并與特定FLASH地址的內容進行比對,若比對成功則正常運行,否則進入異常處理,不予正常運行程序。一般來講,編寫UID那一步在產品出廠前就完成了。

這里所說的第一次運行,就是指程序運行后,到預定的FLASH地址去讀取內容,發現該處是被擦除過且未被改寫的數據狀態[一般為全1狀態],并將UID數據寫入相應的FLASH區域,這次運行視為第一次運行。

下面使用STM32L4芯片就上面應用做個簡單的代碼實現示范,僅供參考。注意,不同STM32芯片在FLASH編程這個地方并不完全一樣。

先做些基本的準備工作。

我們根據實際應用程序情況預留出一塊地址空間,我在下面示例中將STM32L476RG內部FLASH中間位置抽出1頁來存放UID【注:很多STM32系列都具備OTP空間,也可以將UID寫在這個區域】。STM32L4的FLASH編程采用雙字編程,在給定FLASH編程地址時,注意8字節對齊。到相應的參考手冊查找UID的地址及存放情況【即是連續存放還是分散存放】。

準備工作差不多了,就可以嘗試組織程序代碼了。

程序流程很簡單。先判斷指定FLASH地址是否為全1,如果是讀取當前芯片UID并填寫到相應地址;如果不是全1,則讀取指定FLASH地址空間內容跟當前芯片UID數據比較,若正確,正常運行程序,若二者不符,則進入異常處理,不正常運行功能代碼。

【下面是監測到指定flash地址未被改寫過,進入UID內容填充的FLASH編程代碼】

【下面是監測到指定flash地址已被改寫過,進入比較判斷及相應處理的代碼】

上面代碼是基于STM32L476芯片和STM32L4Cube庫而編寫的,主要介紹下大致實現過程,簡單直觀,無須過多解釋。

不過,在實際應用過程中,這段功能代碼就不要如此直白明了。這里給幾點參考建議:

1、代碼編寫過程中,FLASH地址盡量不要一次性直接給出,最好幾經變換后得出;

2、被存放的UID在不破壞唯一性的情況下可以適當做些變換后存放;

3、將這部分代碼拆分成幾個相互獨立而有一定關聯的不同函數塊來處理。可以考慮將有的功能塊放在用戶主程序里,有的夾在正常的中斷程序里,包括嵌套的中斷程序里。

4、用來存放UID的flash地址盡量不要連續,最好在不同功能塊訪問相應的地址;

5、如果可能,考慮使用兩套完全獨立的UID改寫、比對處理代碼。即使用兩套FLASH存儲區域和比對代碼,只有兩套都比對成功后才正常運行程序,否則任何一套比對失敗都進入保護狀態。

因為剛好最近有人談起這方面的話題,就順便聊聊上面這些,權作參考。另外,還應該充分利用芯片的讀寫保護機制以及某些系列已經具有的信息安全保護機制,如PCROP、TrustZone等。還有,我們可以根據自身產品特點設計出一些結合硬件線路、機械組裝的特定自檢流程,讓盜版者在生產加工環節遇到麻煩。這些地方都留給每個設計者大量的發揮空間,來保護自己的知識產權。

總之,關于產品的產權保護,應該從產品規劃之初就著手考慮應對方案了,從最早的芯片選型開始,最好回避選用市面上使用過于普遍且老舊的芯片系列。相信芯片商在推陳出新的過程中也有安全性這方面的考量,使得芯片在這方面的性能越來完善和強大。

最后順便提醒下,當我們的程序監測到發生侵權進入保護狀態時,目的是保護自己的產權不受侵害。這個過程中我們可能會對代碼采取些行動,阻止其正常運行,但注意不要因此而給第三方帶來人身傷害。打個比方,假設你設計的產品是馬達控制類交通工具,當發現有人盜版時,如果你在代碼里只是簡單粗暴地對代碼進行破壞而完全不顧破壞后的異常代碼可能導致什么后果,那就不妙了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    456

    文章

    50927

    瀏覽量

    424594
  • 身份識別
    +關注

    關注

    1

    文章

    40

    瀏覽量

    12665
  • STM32芯片
    +關注

    關注

    0

    文章

    38

    瀏覽量

    4395

原文標題:STM32芯片UID話題

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    UID加密安全啟動原理分析

    本文導讀 ZDP14x0系列芯片是內置開源GUI引擎的圖像顯示專用驅動芯片,在實際產品開發中需要加密保護,防止應用程序被讀取和盜用,本文將介紹如何實現UID加密安全啟動。 UID加密安
    的頭像 發表于 11-11 11:49 ?461次閱讀
    <b class='flag-5'>UID</b>加密安全啟動原理分析

    如何讀取多張卡的UID,有償

    應用場景是在一摞卡片,需要通過循環讀取卡片的UID,來獲取所有卡片的UID。但是普通MFRC522模組的磁場強度無法給多張卡供電,想咨詢如何給一摞卡供電,當然模組可以移動,或許只需要給部分卡片供電即可。紅包200元,財力有限,請見諒。
    發表于 08-17 21:50

    STM32復位電路用復位芯片和阻容復位電路區別

    STM32是一款廣泛使用的微控制器,其復位電路設計對于系統的穩定性和可靠性至關重要。本文將詳細介紹STM32復位電路中使用復位芯片和阻容復位電路的區別,以及各自的優缺點和應用場景。 引言 在微控制器
    的頭像 發表于 08-06 10:26 ?1630次閱讀

    STM32F10xx芯片資料

    電子發燒友網站提供《STM32F10xx芯片資料.pdf》資料免費下載
    發表于 07-08 14:56 ?1次下載

    自制一款兼容STM32F1/F4芯片的飛控板

    自己制作的一款兼容STM32F1/F4芯片的飛控板。
    發表于 07-04 14:07 ?0次下載

    NVS分區生成器用于量產UID應該怎么使用好呢?

    我把UID寫入.csv文件,再生成.bin文件。但是我每次還是得改.csv文件,然后再生成.bin文件,自我感覺不方便,請教下有什么工具或者有什么思路和方法嗎?
    發表于 06-26 07:02

    求助,用戶可以獲取ESP32芯片UID嗎?

    如題,想要使用芯片本身的UID作為設備的唯一標識碼,但是沒找到UID的獲取方法。 請問用戶是否可以獲取芯片UID呢?如果可以的話,應該如何
    發表于 06-20 07:19

    怎樣從STM32F407的UID碼中提取生產年份和月份信息?

    請問怎樣從STM32F407的UID碼中提取生產年份和月份信息?
    發表于 06-03 06:28

    請問STM8L051是不是沒有UID的?

    STM8L051是不是沒有UID的?在手冊找了很久也沒有見到,希望知道的大神說一說。
    發表于 05-15 06:50

    如何通過STVP programming toolkit讀取芯片UID

    問題一、無法通過GetProtectionList獲取芯片的保護級別列表 在調用GetProtectionList的時,發現無法獲取芯片(STM32F405RG為例子)支持的保護級別列表,通過調用
    發表于 05-11 08:11

    求一種基于STM32G4芯片TIM+SPI+DMA應用設計方案

    現在有STM32用戶使用STM32G474R芯片開發產品,其中用到TIM1做電源驅動,TIM1工作在中心對齊計數模式。
    的頭像 發表于 03-17 10:57 ?1890次閱讀
    求一種基于<b class='flag-5'>STM32</b>G4<b class='flag-5'>芯片</b>TIM+SPI+DMA應用設計方案

    同樣的代碼,stm32l072cbt6改用stm32l053c8t6就出出現了HardFault_Handler的原因?

    我之前使用的是stm32l072cbt6芯片,現在改用stm32l053c8t6,結果在調取芯片uid時出現了同樣的代碼,卻產生了錯誤
    發表于 03-11 08:31

    ARM系列STM32F103芯片的解密方法

    本文介紹ARM系列STM32F103芯片的解密方法,其內核是Cortex-M3,內存從16K-512K都有。
    發表于 02-28 11:20 ?1737次閱讀

    m451系列mcu的96位UID怎么讀???

    m451系列mcu的96位UID怎么讀取
    發表于 01-16 07:35

    M451的96位UID具體的意思是什么?

    M451的96位UID具體的意思是什么?
    發表于 01-16 06:53
    主站蜘蛛池模板: 久久97精品久久久久久久看片| 男女交性动态免费视频| bt天堂资源在线官网bt| 高清国产下药迷倒美女| 永久在线免费观看| 天堂在线最新资源| 久久黄色录像| 2022年国产精品久久久久| 欧美人与牲动交xxxx| 婷婷在线观看网站| 99久久精品费精品国产| 午夜69成人做爰视频网站 | 在线播放免费视频| 天天好b| 久久15| 激情五月在线| 男人j进女人j视频| 亚洲bt天堂| 欧美在线视频一区二区三区| 免费三级网站| 俺去啦网婷婷| 日日干夜夜操视频| 丁香六月婷婷综合| 夜夜精品视频| 国产性夜夜性夜夜爽91| 一区二区三区精品视频| 在线色| 欧美性喷潮xxxx| 欧美日韩国产在线一区| 国产日韩三级| 手机在线你懂得| 欧美黑人xxxx猛牲大交| 最新色视频| 欧美高清视频一区| 怡红院影院| 在线网站黄色| 伊人久久大香线蕉综合电影| 欧美一级片手机在线观看| 丁香五香天堂网卡| 国产精品久久久久久影院| 欧美一区高清|