哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——FLASH

AIoT行業(yè)洞察 ? 來源:AIoT行業(yè)洞察 ? 作者:AIoT行業(yè)洞察 ? 2024-12-05 14:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AiPi-Eyes-S1是安信可開源團隊專門為Ai-M61-32S設(shè)計的一款開發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的外設(shè)接口,具體包括 DVP、MJPEG、Dispaly、AudioCodec、USB2.0、SDU、以太網(wǎng) (EMAC)、SD/MMC(SDH)、SPI、UART、I2C、I2S、PWM、GPDAC、GPADC、ACOMP 和 GPIO 等。

AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預留TF卡座,并且引出USB接口,可接入USB攝像頭。

從零開始學習小安派:

1、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——初識小安派-Eyes-S1

2、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——安裝VMware與Ubuntu

3、入門篇:零基礎(chǔ)開發(fā)小安派-Eyes-S1——新建工程并燒錄調(diào)試

4、零基礎(chǔ)開發(fā)小安派-Eyes-S1入門篇——Win下SSH連接Linux

5、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——Samba共享文件夾

6、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——工程文件架構(gòu)

7、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——GPIO 輸入輸出

8、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——GPIO中斷編程

9、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——PWM

10、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——UART

11、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——I2C

12、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——ADC

Flash 簡稱閃存,它的特點是擦除和編程速度快,單片機的程序一般都是存儲在一定空間內(nèi)中進行運行。在 C 語言中,程序分為代碼段、常量區(qū)、靜態(tài)數(shù)據(jù)區(qū)(BSS 段,數(shù)據(jù)段)、棧、堆五個部分組成。內(nèi)部空間就分為 ROMRAM,都是可以用來存儲內(nèi)容,區(qū)別在于:

ROM 的存儲特性比較穩(wěn)定,很久以前它不可擦除,所以只可讀不可寫,F(xiàn)LASH 就是一種特殊的 ROM,可擦除可讀可寫,在掉電后不丟失。RAM 的存儲特性較不穩(wěn)定,但讀寫速度快,掉電后丟失。

它們的差異如下:

wKgZO2dRSK2AJjzUAACvSBXB5k0411.jpg

總結(jié):FLASH 也就是 ROM,掉電后不丟失,讀寫速度較慢,空間大,可以理解未電腦上的硬盤。RAM 速度快,掉電后丟失,可以理解未電腦上的內(nèi)存。

一、了解小安派-Eyes-S1 的存儲

618FLASH 物理上的地址起始地址是 0XA0000000。M61-32S 的 FLASH 大小是 8M。在數(shù)據(jù)手冊中可以看到所有的模塊地址映射,包括外設(shè)的地址。

在這之前需要了解分區(qū)表的概念,分區(qū)表就是劃分 FLASH 的清單,將 FLASH 劃分為多個不同功能區(qū)域用于其它功能。在操作 FLASH 時得看一下分區(qū)表,查看哪些地址可以使用。在 SDK 中有 4M 的分區(qū)表,里面規(guī)劃了一些分區(qū)的命名,起始地址和大小,這個目錄下找到。

AiPi-Open-Kits/aithinker_Ai-M6X_SDK/bsp/board/bl616dk/config/partition_cfg_4M.toml,在參與編譯時會在工程文件夾下的 build/build_out 中生成 partition.bin。我們在 flash_prog_cfg.ini 中可以看到,常見的有 BOOT2 固件,filedir:固件路徑,address:地址,boot2 必須使用 0 地址。而 partition 表示分區(qū)表固件,address 是根據(jù) partition_cfg_4M.toml 指定。而 FW 則表示需要燒錄的應(yīng)用固件,F(xiàn)W 可以在 partition_cfg_4M.toml 中看到。

wKgZPGdRSK6ABhb4AABP5NoUMfI556.jpg

我們可以添加一樣的“分區(qū)”,創(chuàng)建屬于自己的名字,也可以在分區(qū)表中查看已有的分區(qū)使用。當然,建議還是使用原廠分配的分區(qū)表。

1.bflb_flash_init

說明: flash 初始化,自動識別支持的 flash 并重新配置 flash 的參數(shù)。如果返回錯誤,必須停止運行代碼。

int bflb_flash_init(void);

wKgZPGdRSK6Aa8jxAAAms55OaAI773.jpg

2.bflb_flash_get_jedec_id

說明: 獲取 flash jedec id。

uint32_t bflb_flash_get_jedec_id(void);

wKgZO2dRSK-AahXxAAAjC6AKz1s840.jpg

3.bflb_flash_get_cfg

說明: 獲取 flash 配置。

void bflb_flash_get_cfg(uint8_t **cfg_addr, uint32_t *len);

wKgZPGdRSK-AFsc7AAAuZmpgOEM504.jpg

4.bflb_flash_set_iomode

說明: 設(shè)置 flash IO 工作模式。

void bflb_flash_set_iomode(uint8_t iomode);

wKgZO2dRSK-AJnhrAAAMyU5fSCk660.jpg

可填入以下幾種模式:

#define FLASH_IOMODE_NIO 0
#define FLASH_IOMODE_DO 1
#define FLASH_IOMODE_QO 2
#define FLASH_IOMODE_DIO 3
#define FLASH_IOMODE_QIO 4

5.bflb_flash_get_image_offset

說明: 獲取代碼 xip 虛擬地址實際所在的 flash 物理地址。

uint32_tbflb_flash_get_image_offset(void);

wKgZPGdRSLCANER7AAAjQdbsQZs988.jpg

6.bflb_flash_erase

說明: flash 扇區(qū)擦除。len 為擦除的長度,需要為 4096 倍數(shù),假設(shè) addr 為 0 , len 為 4096,則擦除范圍為 0 ~ 4095。

intbflb_flash_erase(uint32_t addr,uint32_t len);

wKgZO2dRSLCAOWHeAAA9B6WAqqY026.jpg

7.bflb_flash_write

說明:獲取代碼 xip 虛擬地址實際所在的 flash 物理地址。

intbflb_flash_write(uint32_t addr, uint8_t *data,uint32_t len);

wKgZPGdRSLGAQXVVAABGgES7ZG4055.jpg

8.bflb_flash_read

說明: 獲取代碼 xip 虛擬地址實際所在的 flash 物理地址。

intbflb_flash_read(uint32_t addr,uint8_t *data,uint32_t len);

wKgZO2dRSLGAOlEZAABEExxccus377.jpg

9.bflb_flash_aes_init

說明: 配置某一段 flash 區(qū)域進行硬件 aes 解密,能夠通過 xip 直接讀取解密后的內(nèi)容。

voidbflb_flash_aes_init(struct bflb_flash_aes_config_s *config);

wKgZPGdRSLGAV6XiAAAiuwZE-ik189.jpg

10.bflb_flash_aes_enable

說明: 使能 flash aes 解密。

voidbflb_flash_aes_enable(void);

11.bflb_flash_aes_disable

說明: 關(guān)閉 flash aes 解密。

voidbflb_flash_aes_disable(void);

二、簡單示例——上電后讀取 flash 內(nèi)的值并打印

1.首次寫入

#include "bflb_flash.h"
#include "board.h"
#include "string.h"
//頭文件
#define FLASH_RW_START_ADDR 0x3F3000
//宏定義讀寫起始地址,查看分區(qū)表可以看出這是“DATA”所在分區(qū)
static uint8_t write_buf[16];
static uint8_t read_buf[16];
//定義讀寫緩存數(shù)組
int main(void)
{
uint32_t i;
board_init();
//板子初始化,包括了bflb_flash_init
memset(write_buf, 0, sizeof(write_buf));
memset(read_buf, 0, sizeof(read_buf));
//清空緩存數(shù)組
strcpy(write_buf,"HelloWorld!");
//填寫write數(shù)組內(nèi)容
/* erase flash */
bflb_flash_erase(FLASH_RW_START_ADDR,sizeof(write_buf));
//擦除緩存數(shù)組大小,從起始地址開始
/* read flash data */
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));
//讀取flash內(nèi)的內(nèi)容緩存到read數(shù)組里
for (i = 0; i < sizeof(read_buf); i++) {
if (read_buf[i] != write_buf[i]) {
printf("rnflash read fail at %d, expect:%d but get %d", i, write_buf[i], read_buf[i]);
}
}
//for循環(huán)校驗,當write和read內(nèi)容不一致時會打印
/* write flash data */
bflb_flash_write(FLASH_RW_START_ADDR, write_buf, sizeof(write_buf));
//將write內(nèi)容寫入flash中
memset(read_buf, 0, sizeof(read_buf));
/* read flash data */
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));

printf("rn%s",read_buf);
while (1) {
}
}

第一次運行程序效果:在擦除了后讀出來的 ASCII 碼為 255

wKgZO2dRSLKAKsw5AAC2HkQ3oII128.jpg

2.二次讀取,查看上電打印信息

#include "bflb_flash.h"
#include "board.h"
#include "string.h"
#define FLASH_RW_START_ADDR 0x3F3000
static uint8_t write_buf[16];
static uint8_t read_buf[16];
int main(void)
{
uint32_t i;
board_init();
memset(write_buf, 0, sizeof(write_buf));
memset(read_buf, 0, sizeof(read_buf));
strcpy(write_buf,"HelloWorld!");
/* read flash data */
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));
for (i = 0; i < sizeof(read_buf); i++) {
if (read_buf[i] != write_buf[i]) {
printf("rnflash read fail at %d, expect:%d but get %d", i, write_buf[i], read_buf[i]);
}
}
printf("rn%s",read_buf);
while (1) {
}
}

二次讀取后的運行效果:校驗成功,只讀取出 hellowold

wKgZPGdRSLKAfwptAABoMwcb7jE938.jpg

三、使用 easyflash 庫,匹配字段

在 AiPi-SCP_SmartCtrl 工程中的 components 下,有 easy_flash 庫,使用 easy_flash 更加方便快捷,只需要定義字段,第一個參數(shù)填入字段,第二個參數(shù)填入值,即可通過匹配字段的方式將值與字段匹配上。添加庫的方式如下:

1.將 easy_flash 的文件夾復制下來,放到模板工程中,這里使用 Project_basic 的模板工程,記得修改工程名。

wKgZO2dRSLOAKj0VAACRfkiO1nk381.jpg

2.在 CMakeLists.txt 下的添加 easyflash 的庫文件。

wKgZPGdRSLOAHystAADtqdw2-gM135.jpg

3.在 proj.conf 下打開 easyflash 控件。

wKgZO2dRSLSASdhDAACoe7Jb85E340.jpg

4.使用方法,只需要在調(diào)用 flash_erase_set 時填入兩個參數(shù),第一個參數(shù)為匹配的字段,一般由宏定義的字符串常量。第二個參數(shù)為值,也就是需要存儲的值。這樣在 flash 中就是由常駐的字段 + 值組成,在獲取值時可以通過“字段‘來尋找相應(yīng)的值。通過 flash_get_data 的方式,傳入查找的字段和長度,得到存儲的值。

wKgZPGdRSLSAUm3QAAAOnFkP1pU378.jpg

wKgZO2dRSLSATLdmAAAW7brbccw584.jpg

wKgZPGdRSLWAY3MwAAAYHXYixQM488.jpg

5.easyflash 使用的“PSM”分區(qū),大小是 32K,起始地址是 0X3E9000。在這里面我們可以存放一些標志位,或者是類似 wifi 名稱密碼、AP 名稱密碼等關(guān)鍵信息,使用起來也方便,通過匹配字段的方式將關(guān)鍵信息填入所需任務(wù)。如在 AT 指令中將 SSID 和 PASS 通過第三個參數(shù) 0 或 1 選擇是否存入 flash 中。方便實現(xiàn)開機自動連接 wifi 且可通過指令修改 wifi 等操作。

wKgZO2dRSLWAM9ZwAABKabnPC7c498.jpg



審核編輯 黃宇

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

    關(guān)注

    10

    文章

    1758

    瀏覽量

    155853
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9587

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    2小時搞定鴻蒙應(yīng)用!零基礎(chǔ)做出你的鴻蒙“處女作”

    當下,低門檻開發(fā)正成為生態(tài)擴張的最強推力,而鴻蒙生態(tài)的快速壯大,也讓越來越多零基礎(chǔ)小白蠢蠢欲動,想加入開發(fā)大軍。但繁瑣的配置流程、深奧的代碼,也讓很多人打起了退堂鼓。近日,鴻蒙開發(fā)者官
    的頭像 發(fā)表于 04-17 14:04 ?34次閱讀
    2小時搞定鴻蒙應(yīng)用!<b class='flag-5'>零基</b>礎(chǔ)做出你的鴻蒙“處女作”

    小安立式桌擺外殼設(shè)計制作

    小安-Eyes-R2,但是一直沒什么時間好好的研究一下。近期學習了一下相關(guān)例程,感覺用的很難受,大概是因為屏幕排線比較短且板子和屏幕不好固定,以及燒錄兩個按鍵必須要倆手按,于是考慮做外殼固定一下。 ?
    的頭像 發(fā)表于 09-09 17:20 ?996次閱讀
    <b class='flag-5'>小安</b><b class='flag-5'>派</b>立式桌擺外殼設(shè)計制作

    【開源硬件】小安AiPi-Eyes-R2詳細測評+DIY天氣時鐘

    接口-130W像素 1 顯示器-4.0寸-RGB接口40寸-像素480x480 1 咪頭-2pin-1.25mm間距-交叉絞線100mm 2 具體開箱流程照片如下: 環(huán)境搭建 因為之前筆者已經(jīng)用過Windows開發(fā)
    的頭像 發(fā)表于 08-12 16:23 ?904次閱讀
    【開源硬件】<b class='flag-5'>小安</b><b class='flag-5'>派</b>AiPi-<b class='flag-5'>Eyes</b>-R2詳細測評+DIY天氣時鐘

    上手體驗安信可小安AI開發(fā)板,如何接入Home Assistant?

    以下作品由安信可社區(qū)用戶 無垠的廣袤 制作 感謝安信可社區(qū)的支持,免費領(lǐng)到了安信可的最新產(chǎn)品 小安AI - AiPi-PalChatV1 語音開發(fā)板。 原貼地址: 【AiPi-PalChatV
    的頭像 發(fā)表于 07-08 10:34 ?4937次閱讀
    上手體驗安信可<b class='flag-5'>小安</b><b class='flag-5'>派</b>AI<b class='flag-5'>開發(fā)</b>板,如何接入Home Assistant?

    【教程】零基礎(chǔ)!手把手教你使用STM32F4進行E22-400T22S編程通信

    通過本文帶大家零基礎(chǔ)使用STM32F407VET6單片機進行E22-400T22S模塊編程并進行簡單的通信,當然如果學會了,也可以舉一反三應(yīng)用于E22、E220、E32所有模塊上。一STM32環(huán)境
    的頭像 發(fā)表于 07-03 19:32 ?1780次閱讀
    【教程】<b class='flag-5'>零基</b>礎(chǔ)!手把手教你使用STM32F4進行E22-400T22<b class='flag-5'>S</b>編程通信

    零基礎(chǔ)學習LuatOS編程:快速上手開發(fā)實戰(zhàn)教程!

    無論你是剛接觸物聯(lián)網(wǎng)編程的新手,還是希望拓展技能的技術(shù)愛好者,本教程將為零基礎(chǔ)的讀者提供一條清晰的LuatOS學習路徑。從安裝開發(fā)工具到編寫第一個程序,我們將通過實例講解核心概念,助你快速實現(xiàn)從理論
    的頭像 發(fā)表于 06-13 17:27 ?723次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)學習LuatOS編程:快速上手<b class='flag-5'>開發(fā)</b>實戰(zhàn)教程!

    死角玩轉(zhuǎn)STM32——系統(tǒng)

    本文共4冊,由于資料內(nèi)存過大,分開上傳,有需要的朋友可以去主頁搜索下載哦~ 《死角玩轉(zhuǎn) STM32》系列教程由初級、中級、高級、系統(tǒng)
    發(fā)表于 05-21 14:08

    死角玩轉(zhuǎn)STM32——中級

    本文共4冊,由于資料內(nèi)存過大,分開上傳,有需要的朋友可以去主頁搜索下載哦~ 《死角玩轉(zhuǎn) STM32》系列教程由初級、中級、高級、系統(tǒng)
    發(fā)表于 05-21 13:56

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】+讀《零基礎(chǔ)開發(fā)AI Agent》掌握扣子平臺開發(fā)智能體方法

    收到發(fā)燒友網(wǎng)站寄來的《零基礎(chǔ)開發(fā)AI Agent》這本書已經(jīng)有好些天了,這段時間有幸拜讀了一下全書,掌握了一個開發(fā)智能體的方法。 該書充分從零基礎(chǔ)入手,先闡述了Agent是什么,它的基
    發(fā)表于 05-14 19:51

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】+ 入門學習

    很高興又有機會學習ai技術(shù),這次試讀的是「零基礎(chǔ)開發(fā)AI Agent」,作者葉濤、管鍇、張心雨。 大模型的普及是近三年來的一件大事,萬物皆可大模型已成為趨勢。作為大模型開發(fā)應(yīng)用中重要組成部分,提示詞
    發(fā)表于 05-02 09:26

    基于小凌RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實驗簡介 本實驗將演示如何在小凌-RK2206開發(fā)板上使用IOT庫的FLASH接口,進行FLASH編程
    發(fā)表于 04-22 15:02

    基于小凌RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實驗簡介本實驗將演示如何在小凌-RK2206開發(fā)板上使用IOT庫的FLASH接口,進行FLASH編程
    的頭像 發(fā)表于 04-22 14:49 ?1057次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)</b>板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>FLASH</b><b class='flag-5'>外設(shè)</b>

    基于小凌RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制UART外設(shè)

    1、實驗簡介本實驗將演示如何在小凌-RK2206開發(fā)板上使用IOT庫的UART接口,進行UART編程開發(fā)。例程將創(chuàng)建一個任務(wù),通過配置UART引腳,實現(xiàn)UART讀寫操作。例程源代碼:
    的頭像 發(fā)表于 04-22 14:22 ?1260次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)</b>板:OpenHarmony如何使用IoT接口控制UART<b class='flag-5'>外設(shè)</b>

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】+初品Agent

    期待中的《零基礎(chǔ)開發(fā)AI Agent——手把手教你用扣子做智能體》終于寄到了,該書由葉濤、 管鍇、張心雨完成,并由電子工業(yè)出版社出版發(fā)行。 全書分為三個部分,即入門、工具及實踐
    發(fā)表于 04-22 11:51

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】總體預覽及入門

    ,Agent對個人和企業(yè)的價值,以及開發(fā)Agent需要掌握的基礎(chǔ)知識。 工具:詳細介紹了Agent開發(fā)平臺的演進,盤點了國內(nèi)的主流Agent開發(fā)平臺,重點介紹了扣子平臺名功能模塊的操
    發(fā)表于 04-20 21:53
    博白县| 昌平区| 喀喇沁旗| 夏河县| 宁南县| 五莲县| 北安市| 高雄县| 陆川县| 东乡县| 馆陶县| 剑阁县| 呼伦贝尔市| 遂川县| 宁夏| 阳新县| 铁岭县| 玉树县| 文登市| 康保县| 汉川市| 察哈| 古田县| 同心县| 铁岭市| 凤冈县| 芮城县| 辉县市| 比如县| 昌黎县| 木兰县| 株洲县| 蓬溪县| 阿克苏市| 饶河县| 平顶山市| 施秉县| 元谋县| 正宁县| 渭源县| 融水|