国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器

這篇具有很好參考價(jià)值的文章主要介紹了AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

K210內(nèi)置了豐富的加速器,包括神經(jīng)網(wǎng)絡(luò)處理器 (KPU),AES(高級加密加速器),APU 麥克風(fēng)陣列語音數(shù)據(jù)加速計(jì)算處理器,現(xiàn)場可編程 IO 陣列 (FPIOA),數(shù)字?jǐn)z像頭接口 (DVP),相對于軟件可以極大的提高 AES 運(yùn)算速度,快速傅里葉變換加速器 (FFT),安全散列算法加速器 (SHA256)。
本文介紹安全散列算法加速器 (SHA256);

一、什么是SHA256?

說到SHA256就不得不說SHA-2,因?yàn)镾HA256是SHA-2的子集,SHA-256是當(dāng)今最常用的SHA2變體之一,因?yàn)樗哂泻芨叩陌踩院托阅埽?br> SHA-2,名稱來自于安全散列算法2(英語:Secure Hash Algorithm 2)的縮寫,一種密碼散列函數(shù)算法標(biāo)準(zhǔn),由美國國家安全局研發(fā),由美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)在2001年發(fā)布。屬于SHA算法之一,是SHA-1的后繼者。其下又可再分為六個不同的算法標(biāo)準(zhǔn),包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256;

SHA-256在當(dāng)今的加密實(shí)現(xiàn)中被廣泛使用,例如:

數(shù)據(jù)完整性 - 使用SHA-256哈希驗(yàn)證軟件更新、取證數(shù)據(jù)、備份等,以確保有效性和防止篡改。

數(shù)字簽名 - 可以對消息的哈希進(jìn)行加密,以創(chuàng)建一個驗(yàn)證發(fā)送者身份的簽名。SHA-256在這方面被廣泛使用。

用戶憑證 - 在安全存儲之前,密碼和其他敏感憑證會經(jīng)過類似SHA-256的算法進(jìn)行加鹽和哈希處理。

區(qū)塊鏈 - 交易通過哈希鏈接在一起,以維護(hù)一個不可變的賬本。比特幣和其他加密貨幣使用SHA-256。

隨機(jī)數(shù)生成 - SHA-256具有強(qiáng)大的單向特性,適用于生成隨機(jī)位。

SHA-256如此普遍使用是因?yàn)樗峁┝怂俣取踩院鸵子趯?shí)現(xiàn)的適當(dāng)平衡,滿足了各種應(yīng)用的需求。

SHA-256的一些關(guān)鍵特性:

為不同長度的輸入產(chǎn)生唯一的固定大小的256位散列。

相同哈希的兩個不同輸入碰撞的可能性非常小。

輸入的任何變化都會導(dǎo)致完全不同的散列。

不可逆的哈希過程無法恢復(fù)原始數(shù)據(jù)。

設(shè)計(jì)成即使對于大量數(shù)據(jù)也能計(jì)算得非??臁?/p>

這使得SHA-256在驗(yàn)證系統(tǒng)中的數(shù)據(jù)完整性和真實(shí)性方面非常理想。

實(shí)驗(yàn)原理

將算法按照將常量的初始化、信息預(yù)處理、邏輯運(yùn)算三部分進(jìn)行介紹

常量初始化
SHA256算法中用到了8個哈希初值以及64個哈希常量

其中,SHA256算法的8個哈希初值如下:

h0 := 0x6a09e667
h1 := 0xbb67ae85
h2 := 0x3c6ef372
h3 := 0xa54ff53a
h4 := 0x510e527f
h5 := 0x9b05688c
h6 := 0x1f83d9ab
h7 := 0x5be0cd19

這些初值是對自然數(shù)中前8個質(zhì)數(shù)(2,3,5,7,11,13,17,19)的平方根的小數(shù)部分取前32bit而來

舉個例子來說,$ \sqrt{2} $小數(shù)部分約為0.414213562373095048,而
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
于是,質(zhì)數(shù)2的平方根的小數(shù)部分取前32bit就對應(yīng)出了0x6a09e667
在SHA256算法中,用到的64個常量如下:

428a2f98 71374491 b5c0fbcf e9b5dba5
3956c25b 59f111f1 923f82a4 ab1c5ed5
d807aa98 12835b01 243185be 550c7dc3
72be5d74 80deb1fe 9bdc06a7 c19bf174
e49b69c1 efbe4786 0fc19dc6 240ca1cc
2de92c6f 4a7484aa 5cb0a9dc 76f988da
983e5152 a831c66d b00327c8 bf597fc7
c6e00bf3 d5a79147 06ca6351 14292967
27b70a85 2e1b2138 4d2c6dfc 53380d13
650a7354 766a0abb 81c2c92e 92722c85
a2bfe8a1 a81a664b c24b8b70 c76c51a3
d192e819 d6990624 f40e3585 106aa070
19a4c116 1e376c08 2748774c 34b0bcb5
391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3
748f82ee 78a5636f 84c87814 8cc70208
90befffa a4506ceb bef9a3f7 c67178f2

和8個哈希初值類似,這些常量是對自然數(shù)中前64個質(zhì)數(shù)(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97…)的立方根的小數(shù)部分取前32bit而來。

信息預(yù)處理
SHA256算法中的預(yù)處理就是在想要Hash的消息后面補(bǔ)充需要的信息,使整個消息滿足指定的結(jié)構(gòu)。

信息的預(yù)處理分為兩個步驟:附加填充比特和附加長度

STEP1:附加填充比特

在報(bào)文末尾進(jìn)行填充,使報(bào)文長度在對512取模以后的余數(shù)是448

填充是這樣進(jìn)行的:先補(bǔ)第一個比特為1,然后都補(bǔ)0,直到長度滿足對512取模后余數(shù)是448。

需要注意的是,信息必須進(jìn)行填充,也就是說,即使長度已經(jīng)滿足對512取模后余數(shù)是448,補(bǔ)位也必須要進(jìn)行,這時(shí)要填充512個比特。

因此,填充是至少補(bǔ)一位,最多補(bǔ)512位。

例:以信息“abc”為例顯示補(bǔ)位的過程。

a,b,c對應(yīng)的ASCII碼分別是97,98,99

于是原始信息的二進(jìn)制編碼為:01100001 01100010 01100011

補(bǔ)位第一步,首先補(bǔ)一個“1” : 0110000101100010 01100011 1

補(bǔ)位第二步,補(bǔ)423個“0”:01100001 01100010 01100011 10000000 00000000 … 00000000

補(bǔ)位完成后的數(shù)據(jù)如下(為了簡介用16進(jìn)制表示):

61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000

為什么是448?

因?yàn)樵诘谝徊降念A(yù)處理后,第二步會再附加上一個64bit的數(shù)據(jù),用來表示原始報(bào)文的長度信息。而448+64=512,正好拼成了一個完整的結(jié)構(gòu)。

STEP2:附加長度值

附加長度值就是將原始數(shù)據(jù)(第一步填充前的消息)的長度信息補(bǔ)到已經(jīng)進(jìn)行了填充操作的消息后面。

wiki百科中給出的原文是:append length of message (before pre-processing), in bits, as 64-bit big-endian integer

SHA256用一個64位的數(shù)據(jù)來表示原始消息的長度。

因此,通過SHA256計(jì)算的消息長度必須要小于$ 2^64 $,當(dāng)然絕大多數(shù)情況這足夠大了。

長度信息的編碼方式為64-bit big-endian integer

關(guān)于Big endian的含義,文末給出了補(bǔ)充

回到剛剛的例子,消息“abc”,3個字符,占用24個bit

因此,在進(jìn)行了補(bǔ)長度的操作以后,整個消息就變成下面這樣了(16進(jìn)制格式)

61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000018

邏輯運(yùn)算
SHA256散列函數(shù)中涉及的操作全部是邏輯的位運(yùn)算

包括如下的邏輯函數(shù):
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
其中:
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
現(xiàn)在來介紹SHA256算法的主體部分,即消息摘要是如何計(jì)算的。

首先:將消息分解成512-bit大小的塊(break message into 512-bit chunks)
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
假設(shè)數(shù)據(jù)D可以被分解為n個塊,于是整個算法需要做的就是完成n次迭代,n次迭代的結(jié)果就是最終的哈希值,即256bit的數(shù)字摘要。

一個256-bit的摘要的初始值H0,經(jīng)過第一個數(shù)據(jù)塊進(jìn)行運(yùn)算,得到H1,即完成了第一次迭代,H1經(jīng)過第二個數(shù)據(jù)塊得到H2,……,依次處理,最后得到Hn,Hn即為最終的256-bit消息摘要。

將每次迭代進(jìn)行的映射用$ Map(H_{i-1}) = H_{i} $表示,于是迭代可以更形象的展示為:
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
圖中256-bit的Hi被描述8個小塊,這是因?yàn)镾HA256算法中的最小運(yùn)算單元稱為“字”(Word),一個字是32位。

此外,第一次迭代中,映射的初值設(shè)置為前面介紹的8個哈希初值,如下圖所示:

AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
下面開始介紹每一次迭代的內(nèi)容,即映射$ Map(H_{i-1}) = H_{i} $的具體算法。

STEP1:構(gòu)造64個字(word)

對于每一塊,將塊分解為16個32-bit的big-endian的字,記為w[0], …, w[15]

也就是說,前16個字直接由消息的第i個塊分解得到

其余的字由如下迭代公式得到:
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
STEP2:進(jìn)行64次循環(huán)

映射 $ Map(H_{i-1}) = H_{i} $ 包含了64次加密循環(huán)

即進(jìn)行64次加密循環(huán)即可完成一次迭代

每次加密循環(huán)可以由下圖描述:
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
圖中,ABCDEFGH這8個字(word)在按照一定的規(guī)則進(jìn)行更新,其中

深藍(lán)色方塊是事先定義好的非線性邏輯函數(shù),上文已經(jīng)做過鋪墊

紅色田字方塊代表 mod $ 2^{32} $ addition,即將兩個數(shù)字加在一起,如果結(jié)果大于$ 2^{32} , 你 必 須 除 以 ,你必須除以,你必須除以 2^{32} $并找到余數(shù)。

ABCDEFGH一開始的初始值分別為$ H_{i-1}(0),H_{i-1}(1),…,H_{i-1}(7) $

Kt是第t個密鑰,對應(yīng)我們上文提到的64個常量

Wt是本區(qū)塊產(chǎn)生第t個word。原消息被切成固定長度512-bit的區(qū)塊,對每一個區(qū)塊,產(chǎn)生64個word,通過重復(fù)運(yùn)行循環(huán)n次對ABCDEFGH這八個字循環(huán)加密。

最后一次循環(huán)所產(chǎn)生的八個字合起來即是第i個塊對應(yīng)到的散列字符串$ H_{i} $

二、K210的安全散列算法加速器

SHA256 加速器是用來計(jì)算 SHA-256 的計(jì)算單元:

? 支持 SHA-256 的計(jì)算

? 支持輸入數(shù)據(jù)的 DMA 傳輸

對應(yīng)的頭文件 sha256.h

支持 SHA-256 的計(jì)算。

為用戶提供以下接口:

? sha256_init:初始化SHA256加速器外設(shè)。

? sha256_update:傳入一個數(shù)據(jù)塊參與SHA256 Hash計(jì)算。

? sha256_final:結(jié)束對數(shù)據(jù)的SHA256 Hash 計(jì)算。

? sha256_hard_calculate:一次性對連續(xù)的數(shù)據(jù)計(jì)算它的SHA256 Hash。

三、實(shí)驗(yàn)過程

原理很復(fù)雜,但是K210內(nèi)置了算法模塊,我們只需要簡單的調(diào)用這些接口就可以快速實(shí)現(xiàn),如下實(shí)驗(yàn),事先通過https://hash.online-convert.com/sha256-generator 計(jì)算好對應(yīng)的字符串的哈希值,然后調(diào)用內(nèi)置算法,將兩者的結(jié)果進(jìn)行比對,如果一致則測試通過

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <encoding.h>
#include "sha256.h"
#include "sleep.h"
#include "sysctl.h"

uint8_t hash[SHA256_HASH_LEN];
uint8_t compare1[] = {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
                   0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad};

uint8_t compare2[] = {0x58, 0xbe, 0xb6, 0xbb, 0x9b, 0x80, 0xb2, 0x12, 0xc3, 0xdb, 0xc1, 0xc1, 0x02, 0x0c, 0x69, 0x6f,
                   0xbf, 0xa3, 0xaa, 0xd8, 0xe8, 0xa4, 0xef, 0x4d, 0x38, 0x5e, 0x9b, 0x07, 0x32, 0xfc, 0x5d, 0x98};

uint8_t compare3[] = {0x6e, 0x65, 0xda, 0xd1, 0x7a, 0xa2, 0x3e, 0x72, 0x79, 0x8d, 0x50, 0x33, 0xa1, 0xae, 0xe5, 0x9e,
                   0xe3, 0x35, 0x2d, 0x3c, 0x49, 0x6c, 0x18, 0xfb, 0x71, 0xe3, 0xa5, 0x37, 0x22, 0x11, 0xfc, 0x6c};

uint8_t compare4[] = {0xcd, 0xc7, 0x6e, 0x5c, 0x99, 0x14, 0xfb, 0x92, 0x81, 0xa1, 0xc7, 0xe2, 0x84, 0xd7, 0x3e, 0x67,
                    0xf1, 0x80, 0x9a, 0x48, 0xa4, 0x97, 0x20, 0x0e, 0x04, 0x6d, 0x39, 0xcc, 0xc7, 0x11, 0x2c, 0xd0};
uint8_t data_buf[1000*1000];

int main(void)
{
    uint64_t cycle;
    uint8_t total_check_tag = 0;
    
    uint32_t i;
    printf("\n");
    cycle = read_cycle();
    sha256_hard_calculate((uint8_t *)"abc", 3, hash);
    for (i = 0; i < SHA256_HASH_LEN;)
    {
        if (hash[i] != compare1[i])
            total_check_tag = 1;
        printf("%02x", hash[i++]);
        if (!(i % 4))
            printf(" ");
    }
    printf("\n");

    sha256_hard_calculate((uint8_t *)"abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij", 60, hash);
    for (i = 0; i < SHA256_HASH_LEN;)
    {
        if (hash[i] != compare2[i])
            total_check_tag = 1;
        printf("%02x", hash[i++]);
        if (!(i % 4))
            printf(" ");
    }
    printf("\n");
    
    sha256_hard_calculate((uint8_t *)"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgha", 65, hash);
    for (i = 0; i < SHA256_HASH_LEN;)
    {
        if (hash[i] != compare3[i])
            total_check_tag = 1;
        printf("%02x", hash[i++]);
        if (!(i % 4))
            printf(" ");
    }
    printf("\n");
    
    memset(data_buf, 'a', sizeof(data_buf));
    sha256_hard_calculate(data_buf, sizeof(data_buf), hash);
    for (i = 0; i < SHA256_HASH_LEN;)
    {
        if (hash[i] != compare4[i])
            total_check_tag = 1;
        printf("%02x", hash[i++]);
        if (!(i % 4))
            printf(" ");
    }
    printf("\n");

    sha256_context_t context;
    sha256_init(&context, sizeof(data_buf));
    sha256_update(&context, data_buf, 1111);
    sha256_update(&context, data_buf + 1111, sizeof(data_buf) - 1111);
    sha256_final(&context, hash);
    for (i = 0; i < SHA256_HASH_LEN;)
    {
        if (hash[i] != compare4[i])
            total_check_tag = 1;
        printf("%02x", hash[i++]);
        if (!(i % 4))
            printf(" ");
    }
    printf("\n");

    cycle = read_cycle() - cycle;
    if (total_check_tag == 1)
        printf("\nSHA256_TEST _TEST_FAIL_\n");
    else
        printf("\nSHA256_TEST _TEST_PASS_\n");
    printf("\nsha256 test time = %ld ms\n", cycle/(sysctl_clock_get_freq(SYSCTL_CLOCK_CPU)/1000));
    while(1);
    return 0;
}

完成代碼后進(jìn)行編譯;

cd build

cmake .. -DPROJ=sha256 -G "MinGW Makefiles"

make

編譯完成后,在build文件夾下會生成sha256.bin文件。

使用type-C數(shù)據(jù)線連接電腦與K210開發(fā)板,打開kflash,選擇對應(yīng)的設(shè)備,再將程序固件燒錄到K210開發(fā)板上。
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式
燒錄后重啟開發(fā)板,實(shí)驗(yàn)結(jié)果如下:
AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器,K210開發(fā)板,算法,人工智能,安全,AI嵌入式,K210,AI,嵌入式


總結(jié)

本章學(xué)習(xí)了SHA-256算法的原理,并驗(yàn)證了K210內(nèi)置的安全散列算法加速器模塊,這使得安全散列的計(jì)算速度更快速;文章來源地址http://www.zghlxwxcb.cn/news/detail-808954.html

到了這里,關(guān)于AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • AI嵌入式K210項(xiàng)目(19)-安裝CanMV IDE開發(fā)軟件

    AI嵌入式K210項(xiàng)目(19)-安裝CanMV IDE開發(fā)軟件

    前幾章我們介紹K210使用C語言裸機(jī)開發(fā)方法,大家對K210內(nèi)部的硬件和各種加速器有了初步的了解,但是開發(fā)人工智能相關(guān)程序,使用C語言的話復(fù)雜度比較高,因此接下來我們逐步學(xué)習(xí)基于K210芯片使用python開發(fā)人工智能相關(guān)程序,包含顏色識別,人臉識別,口罩識別等,也包

    2024年01月25日
    瀏覽(17)
  • 嵌入式學(xué)習(xí)筆記(21)S5PV210的時(shí)鐘域詳解

    嵌入式學(xué)習(xí)筆記(21)S5PV210的時(shí)鐘域詳解

    時(shí)鐘域:MSYS、DSYS、PSYS 因S5PV210的時(shí)鐘體系比較復(fù)雜,內(nèi)部外設(shè)模塊太多,因此把整個內(nèi)部的時(shí)鐘劃分為3大塊,叫做3個域。之所以分為3個域,是因?yàn)?10內(nèi)部的這些模塊彼此工作時(shí)鐘頻率差異太大了,所以又必要把高速的放一起,相對低速的放在一起。 (1)MSYS:CPU(Cortex-

    2024年02月09日
    瀏覽(25)
  • 嵌入式學(xué)習(xí)筆記(32)S5PV210的向量中斷控制器

    嵌入式學(xué)習(xí)筆記(32)S5PV210的向量中斷控制器

    6.6.1異常處理的2個階段 可以將異常處理分為2個階段來理解。第一個階段是異常向量表跳轉(zhuǎn);第二個階段是進(jìn)入了真正的異常處理程序irq_handler之后的部分。 6.6.2回顧:中斷處理的第一個階段(異常向量表跳轉(zhuǎn)階段)處理 (1)第一個階段之所以能夠進(jìn)行,主要依賴于CPU設(shè)計(jì)時(shí)

    2024年02月07日
    瀏覽(24)
  • RK3588平臺開發(fā)系列講解(嵌入式AI篇)嵌入式AI的學(xué)習(xí)步驟

    RK3588平臺開發(fā)系列講解(嵌入式AI篇)嵌入式AI的學(xué)習(xí)步驟

    沉淀、分享、成長,讓自己和他人都能有所收獲!?? ?? 本篇將給大家介紹什么是嵌入式AI。

    2024年02月04日
    瀏覽(32)
  • 什么是嵌入式AI

    什么是嵌入式AI

    人工智能概念: AI,英文的直譯就是人工智能,什么是人工智能?計(jì)算機(jī)科學(xué)家們?yōu)槲覀兌x了:就是希望計(jì)算機(jī)有類似人的意識,比如可以推理,自我學(xué)習(xí),感情等能力,研究、開發(fā)用于模擬、延伸和擴(kuò)展人智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新技術(shù)科學(xué)。人工智能

    2024年04月23日
    瀏覽(29)
  • 嵌入式 Linux 安全簡介

    嵌入式 Linux 安全簡介

    安全就是降低風(fēng)險(xiǎn)。 一方面所有者,即產(chǎn)品或服務(wù)的受益者(用戶、制造商、企業(yè)主等)。所有者希望保護(hù)資產(chǎn),即產(chǎn)品或服務(wù)中任何有價(jià)值的東西(數(shù)據(jù)、代碼、聲譽(yù)等)。 另一方面威脅行為者,即能夠表現(xiàn)出威脅的人或事物(惡意黑客等),即任何能夠以可能造成傷害

    2024年02月08日
    瀏覽(30)
  • 嵌入式項(xiàng)目分享 stm32智能運(yùn)動計(jì)步系統(tǒng) - 物聯(lián)網(wǎng) 嵌入式 單片機(jī)

    嵌入式項(xiàng)目分享 stm32智能運(yùn)動計(jì)步系統(tǒng) - 物聯(lián)網(wǎng) 嵌入式 單片機(jī)

    ?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天

    2024年02月20日
    瀏覽(107)
  • 【嵌入式項(xiàng)目應(yīng)用】__用于搭建調(diào)試輸出、建立時(shí)間系統(tǒng)的嵌入式框架“Zorb Framework”

    【嵌入式項(xiàng)目應(yīng)用】__用于搭建調(diào)試輸出、建立時(shí)間系統(tǒng)的嵌入式框架“Zorb Framework”

    目錄 一、什么是Zorb? 二、嵌入式環(huán)境搭建 三、調(diào)試輸出 四、實(shí)現(xiàn)斷言 五、建立時(shí)間系統(tǒng) 六、結(jié)束語 (* ̄︶ ̄)創(chuàng)作不易!期待你們的?點(diǎn)贊、收藏和評論喔。 Zorb Framework是一個基于 面向?qū)ο?的思想來搭建一個 輕量級的嵌入式框架 。 搭建Zorb Framework的目的是為在不能運(yùn)行

    2024年02月06日
    瀏覽(19)
  • Linux嵌入式項(xiàng)目-智能家居

    Linux嵌入式項(xiàng)目-智能家居

    一、資料下載 ?二、框架知識 ?三、MQTT通信協(xié)議 1、上位機(jī)APP主要工作? ? ? ? 1.wait for msg? / while(1)訂閱等待消息 ? ? ? ?2.處理消息 客戶端創(chuàng)建了兩個線程,一個線程用于發(fā)布消息,一個線程用于監(jiān)聽訂閱消息 (那我的仿真系統(tǒng)也可以啊,一個發(fā)送處理數(shù)據(jù)線程。一個監(jiān)聽

    2024年02月16日
    瀏覽(25)
  • 嵌入式項(xiàng)目分享 stm32機(jī)器視覺的口罩佩戴檢測系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式

    嵌入式項(xiàng)目分享 stm32機(jī)器視覺的口罩佩戴檢測系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式

    ?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天

    2024年02月20日
    瀏覽(448)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包