日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于ATSHA204a的使用流程

發布時間:2023/12/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于ATSHA204a的使用流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ATSHA204含有一個EEPROM? 和 一個 SRAM

EEPROM :包含

1個 Data Zone(512Bytes)? :一般用來存儲密鑰的

1個 configration Zone(88Bytes)? :

用來設置Data區中的數據使用的方法:

1)作為密鑰使用 還是簡單的數據,作為密鑰是否可讀可寫???? 是明文讀寫 還是 加密讀寫?? 使用的次數

2)存儲有9位的芯片唯一序列號

3)對OTP區的使用模式

3)configration Zone?? 和 Data Zone 鎖住的控的控制位

1個OTP Zone

ATSHA204在使用:

首先,要對配置區進行配置目的:規定好密鑰的使用方式和存儲地點,和最后驗證的MAC的方式

然后,然后將密鑰寫入Data區中指定的位置

最后,通過官方提供的庫里面的MAC驗證命令,進行密鑰的驗證

各個區的配置條件:

  • 芯片的config區和data區一旦鎖定,沒有辦法解鎖,鎖的方法只能通過lock command來進行鎖定。
  • config區在沒鎖定的時候,可以使用write command來進行寫操作,但注意,0x00-0x03地址(word地址,詳情請參考手冊)不能被寫,0x15word地址不能使用write command來寫。
  • 在config鎖定前,data區(包括slot區和OTP區)既不能寫也不能讀。而在config鎖定后,data區鎖定前,data區只能寫不能讀,在data區鎖定后,可以根據config中的配置來進行讀寫。
  • 官方提供的庫里面有一個執行各種命令的函數:

    uint8_t sha204m_execute(uint8_t op_code,? uint8_t param1,???? uint16_t param2,
    ?? ??? ??? ??? ? ? ? ? ?? ??? ? ? ? ? ?? uint8_t datalen1 , uint8_t *data1,???? uint8_t datalen2, uint8_t *data2, uint8_t datalen3, uint8_t *data3,??
    ?? ??? ??? ??? ??? ??? ? ? ?? ? ? ? ? ?? uint8_t tx_size,? uint8_t *tx_buffer, uint8_t rx_size, uint8_t *rx_buffer)

    以下參數的具體值? 需要參看數據手冊沒有 明確的介紹

    uint8_t op_code:命令碼?????????????????? uint8_t param1? :命令對應的第一個參數???????? uint16_t param2:命令對應的第二個參數

    ?? uint8_t datalen1 , uint8_t *data1 :完成命令需要發送的數據 長度?? 和指向數據的指針??? 沒有 可以 填寫 0x00 , 0x00

    ? uint8_t datalen2 , uint8_t *data2 :完成命令需要發送的數據 長度?? 和指向數據的指針??? 沒有 可以 填寫 0x00 , 0x00

    ? uint8_t datalen3 , uint8_t *data3:完成命令需要發送的數據 長度?? 和指向數據的指針??? 沒有 可以 填寫 0x00 , 0x00

    uint8_t tx_size,? uint8_t *tx_buffer :需要發送數據的長度? 和指向數據的指針? 以上參數的集合

    uint8_t rx_size, uint8_t *rx_buffer:命令執行完,返回的數據

    配置流程:

    注意: 芯片開始工作前要喚醒,并且延時至少2.5ms, 芯片才能開始工作

    ????? 芯片的config區和data區一旦鎖定,沒有辦法解鎖

    第一步

    Configration Zone 進行配置,(詳細的說明參看配置說明,這里只對代碼進行說明)

  • 芯片喚醒后,打開宏定義 ATSHA204_Configration 進入配置函數ATSHA204_Config(),
  • 打開宏定義 Configration_Zone 先對Configration Zone進行配置
  • 通過對16slotx_configration 區寫入 0x80,0x80,

    <配置數據說明詳見 atsha204配置 配置說明兩個文檔>

    Data Zone配置成存儲密鑰,????????? 鑰不可讀寫

  • 寫完成后,在讀取一下 Configration Zone 的數據查看與配置的數據想通過后,
  • 通過Lock_ConfigrationZone(); 函數將Configration Zone 鎖住,
  • 讀取一下0x15地址的 lockconfig 0x00表示鎖定完成
  • 第二步,?? Data Zone 寫入密鑰

    注意: Configration Zone 鎖定后,才能對Data Zone進行讀寫操作

    data區一旦鎖定,沒有辦法解鎖

  • 通過Write Command 命令,寫入預先準備好的密鑰
  • 寫入完成后,讀取查看 寫入的數據是否正確
  • 通過函數DataZone_Init()鎖定Data Zone ;
  • 最后讀取一下0x15地址下的lockData 0x00 表示鎖定完成
  • 密鑰驗證流程:

    注意: 芯片開始工作前要喚醒,并且延時至少2.5ms, 芯片才能開始工作

  • 對ATSHA204A芯片的配置完成后,將DataZone配置成 密鑰區(SlotX) 并且鎖定后對數據不可讀寫。
  • 主控MCU與芯片相連,在啟動時候,首先我們要獲取芯片序列號,為后面計算MAC。
  • 進入函數
  • 主控MCU通過RNG寄存去 讓MCU產生20字節的隨機數,

  • 發送一個nonce命令給ATSHA204A,利用上面產生的20字節的隨機數,讓ATSHA204A?? ???? ???內部的產生Tempkey的值,
  • ?MCU發送MAC命令,ATSHA204A 就可以根據host_tempkey、序列號、以及秘鑰計算,計算出一個摘要degest1,返回給MCU
  • MCU內部通過官方庫計算出來一個摘要 degest2
  • MCU判斷digest1和digest2是否匹配,不匹配將程序掛起即可

    ?

    關于配置可以參考博客:https://blog.csdn.net/a5882230/article/details/52214845

    關于使用可以參考博客:https://blog.csdn.net/u013216061/article/details/79159682

    關于MAC校驗可以參考博客:https://www.cnblogs.com/hjw91blog/articles/7918802.html

    總結

    以上是生活随笔為你收集整理的关于ATSHA204a的使用流程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。