精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

DshanMCU-R128s2 燒寫固件

嵌入式Linux那些事 ? 來源:嵌入式Linux那些事 ? 作者:嵌入式Linux那些事 ? 2023-12-22 15:08 ? 次閱讀

編譯系統(tǒng)源碼后,打包后生成的系統(tǒng)文件稱之為固件。固件一般為.img格式。把固件下載到開發(fā)板或者產(chǎn)品上的過程稱之為 燒寫固件

燒錄模式

R128 有兩種燒錄模式,分別為 USB 燒錄與UART燒錄。燒錄模式以芯片 RST 時 PA1,PA2 引腳高低電平控制。

R128 Module 默認配置為 USB 燒錄,PA2 已經(jīng)在模組通過下拉電阻下拉。

PA1PA2模式
11非法模式
10正常啟動
01UART 下載
00USB 下載

USB 燒寫

R128 支持使用 USB 燒寫系統(tǒng)。對于 Windows 用戶可以使用 PhoenixSuit 進行燒寫。是最常用的燒寫工具,通過數(shù)據(jù)線將PC和開發(fā)板連接,把固件燒到開發(fā)板上。PhoenixSuit 支持分區(qū)燒寫,適用于開發(fā)和小規(guī)模生產(chǎn)使用。

PhoenixSuit - Windows

  • 打開PhoenixSuit
  • 點擊瀏覽,選擇固件
  • 點擊全盤擦除升級

image1

  • 使用 USB 數(shù)據(jù)線連接 USB OTG (USB轉(zhuǎn)串口也可以連接,用于燒錄查錯)

image2

  • 按住 FEL 鍵,然后點擊 RESET 鍵重置開發(fā)板

image3

  • RESET 點擊后 PhoenixSuit 會自動進入燒錄模式,開始下載

image4

  • 燒錄完成

image5

PhoenixSuit 單獨分區(qū)燒錄

在開發(fā)的時候,會遇到只需要燒錄單獨分區(qū)的情況,例如只修改了 RV 核心的固件,不需要全盤下載。就可以選擇單獨分區(qū)燒錄功能。

  • 選擇單或多分區(qū)下載,PhoenixSuit 會解析固件并生成分區(qū)表
  • 選擇需要下載的核心的固件

image6

PhoenixSuit - Linux

Linux 版本 PhoenixSuit 支持的發(fā)行版本包括 Ubuntu、Fedora、Redhat 及 CentOS 等幾個常見的發(fā)行版本。目前驅(qū)動已經(jīng)可以支持 4.11.0 版本以上內(nèi)核,建議安裝內(nèi)核版本號大于4.11.0 的 Linux 發(fā)行版本。

安裝 PhoenixSuit - Linux

  • 下載 PhoenixSuit 到 Linux 中,解壓

image7

  • 安裝依賴 dkms,對于 Ubuntu 可以用 sudo apt install dkms dctrl_tools 來安裝

!image8

  • 打開終端,輸入 sudo ./PhoenixSuit.run 來運行安裝程序。

image9

  • 使用 USB 數(shù)據(jù)線連接 USB OTG (USB轉(zhuǎn)串口也可以連接,用于燒錄查錯)

image3

  • 按住 FEL 鍵,然后點擊 RESET 鍵重置開發(fā)板使其進入下載模式

image2

  • 安裝完成后可以用 lsusb 查看 USB 設(shè)備,找到 ID 1f3a:efe8,找到即安裝完成。

image10

燒錄

  • 使用命令 sudo ./PhoenixSuit rtos_xxx_uart0_16Mnor.img 下載燒錄 rtos_xxx_uart0_16Mnor.img

image11

  • 顯示 Clos image OK! 時,按住 FEL 引腳,點擊 RESET 鍵使芯片進入下載模式

image

  • 開始燒錄

image12

  • 燒錄完成

image13

虛擬機 Linux 燒錄

  • 如果使用的是虛擬機連接開發(fā)板燒錄,先運行 sudo ./PhoenixSuit rtos_xxx_uart0_16Mnor.img 下載燒錄 rtos_xxx_uart0_16Mnor.img,先進入下載模式。

image11

  • 選擇設(shè)備-USB,選擇 Onda 設(shè)備連接虛擬機

image14

  • 開始燒錄,但是運行到 Dev Plugout The Device Path is /dev/aw_efex0 會卡住

image15

  • 此時需要重新到 設(shè)備-USB 重新連接 USB 設(shè)備,這是因為芯片燒錄時需要重置USB,導致USB編號變化,虛擬機不會自動連接。

image16

  • 開始下載

image13

  • 如果長時間沒有重新連接 USB 設(shè)備,PhoenixSuit 會超時自動退出,報錯如下

image17

  • 如果剛才長時間沒有重新連接,超時后連接上 USB 設(shè)備,重新運行sudo ./PhoenixSuit rtos_xxx_uart0_16Mnor.img 下載命令。會出現(xiàn) Errpr!!!: PnpFesIn Error! 這是因為燒錄啟動時的 USB 模式不匹配導致的,之前的操作導致USB進入了 FFFF 模式。此時需要按住 FEL 引腳,點擊 RESET 鍵使芯片進入下載模式重新下載(下載模式會顯示 02B3

image18

PhoenixSuit - MacOS

  • 下載解壓 PhoneixSuit_MacOS.zip
  • 在 Mac 電腦中進入終端,將目錄切到工具目錄下
  • 執(zhí)行命令 chmod 777 ./phoenixsuit 賦予運行權(quán)限
  • 使用命令 ./phoenixsuit rtos_xxx_uart0_16Mnor.img 下載燒錄 rtos_xxx_uart0_16Mnor.img
  • 設(shè)備重新到 boot 的時候會自動進行燒寫
  • 燒寫成功,設(shè)備重啟

image19

USB 燒寫的流程

R128 系統(tǒng)的燒寫流程如下:

  • 片內(nèi)引導 BROM 初始化芯片,識別到 PA1,PA2 腳為 USB 燒錄模式,初始化 USB
  • 上位機通過 USB 燒寫 BOOT0 到 SRAM 中,并運行 BOOT0
  • BOOT0 初始化 PSRAM,返回完成信號等待上位機下載 BOOT1(U-Boot)
  • 上位機收到信號,下載 BOOT1(U-Boot)到 PSRAM 中,并引導運行 BOOT1(U-Boot)
  • BOOT1(U-Boot) 初始化系統(tǒng)資源,初始化內(nèi)部 SPI NOR,USB2.0 等資源,等待上位機下載
  • 上位機下發(fā)固件,進入燒寫模式,燒寫固件

USB 燒錄 log

[0]fes begin commit:61c5f1c6
[2]set pll end
[3]board init ok
[5]fake dram ok
[7]heap: 0x40a0000 size:0xe000
[9]lpsram init
[11]lspsram init aps64
[13]lspsram dqs:0x011b01b0
[18]psram chip APS64 init ok!, freq 1920000000
[22]Init psram controller ok
[24]hpsram init
[26]DRAM DQS gate is PD mode.
[29]DRAM BOOT DRIVE INFO 001: V2.00
[32]DRAM CLK = 800 MHZ
[34]dram_tpr11 = 0x0 , dram_tpr12 =0x0
[38]dram_tpr9 = 0x2222
[68]DRAM simple test OK.
[70]DRAM SIZE =8 MB
[82]fes1 done

U-Boot 2018.05-g024e8cd (Jul 04 2023 - 03:57:33 +0000) Allwinner Technology

[01.080]CPU:   Allwinner Family
[01.083]Model: sun20iw2
[01.086]DRAM:  8 MiB
[01.096]Relocation Offset is: 00799000
[01.131]secure enable bit: 0
[01.135]CPU=384 MHz,PLL6=192 Mhz,AHB=192 Mhz, APB1=96Mhz  MBus=4125Mhz
[01.142]sunxi flash type@0 not support fast burn key
[01.146]flash init start
[01.149]workmode = 16,storage type = 0
try card 0
set card number 0
get card number 0
[01.157][mmc]: mmc driver ver uboot2018:2021-07-19 14:09:00
[01.166][mmc]: get sdc_type fail and use default host:tm1.
[01.209][mmc]: can't find node "mmc0",will add new node
[01.214][mmc]: fdt err returned < no error >
[01.218][mmc]: Using default timing para
[01.221][mmc]: SUNXI SDMMC Controller Version:0x50310
[01.235][mmc]: mmc 0 cmd timeout 100 status 100
[01.240][mmc]: smc 0 err, cmd 8,  RTO
[01.243][mmc]: mmc 0 close bus gating and reset
[01.248][mmc]: mmc 0 cmd timeout 100 status 100
[01.253][mmc]: smc 0 err, cmd 55,  RTO
[01.256][mmc]: mmc 0 close bus gating and reset
[01.265][mmc]: mmc 0 cmd timeout 100 status 100
[01.269][mmc]: smc 0 err, cmd 1,  RTO
[01.272][mmc]: mmc 0 close bus gating and reset
[01.277][mmc]: Card did not respond to voltage select!
[01.282][mmc]: mmc_init: -95, time 56
[01.285][mmc]: mmc_init: mmc init fail, err -95
MMC init failed
try emmc fail
spi sunxi_slave- >max_hz:50000000
sr3:0x68 -- > 0x68
SF: Detected w25q128 with flag 0x301 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
not boot mode, unlock all
[01.360]Loading Environment from SUNXI_FLASH... OK
[01.369]try to burn key
[01.372]out of usb burn from boot: not need burn key
Hit any key to stop autoboot:  0
sunxi work mode=0x10
run usb efex
delay time 2500
weak:otg_phy_config
usb init ok
set address 0xe
set address 0xe ok
SUNXI_EFEX_ERASE_TAG
erase_flag = 0x12
origin_erase_flag = 0x1
FEX_CMD_fes_verify_status
FEX_CMD_fes_verify last err=0
the 0 mbr table is ok
*************MBR DUMP***************
total mbr part 9

part[0] name      :env
part[0] classname :DISK
part[0] addrlo    :0x20
part[0] lenlo     :0x8
part[0] user_type :32768
part[0] keydata   :0
part[0] ro        :0

part[1] name      :env-redund
part[1] classname :DISK
part[1] addrlo    :0x28
part[1] lenlo     :0x8
part[1] user_type :32768
part[1] keydata   :0
part[1] ro        :0

part[2] name      :arm-lpsram
part[2] classname :DISK
part[2] addrlo    :0x30
part[2] lenlo     :0x960
part[2] user_type :32768
part[2] keydata   :0
part[2] ro        :0

part[3] name      :rv-lpsram
part[3] classname :DISK
part[3] addrlo    :0x990
part[3] lenlo     :0xfa0
part[3] user_type :32768
part[3] keydata   :0
part[3] ro        :0

part[4] name      :dsp-hpsram
part[4] classname :DISK
part[4] addrlo    :0x1930
part[4] lenlo     :0x640
part[4] user_type :32768
part[4] keydata   :0
part[4] ro        :0

part[5] name      :rtos-xip
part[5] classname :DISK
part[5] addrlo    :0x1f70
part[5] lenlo     :0x1388
part[5] user_type :32768
part[5] keydata   :0
part[5] ro        :0

part[6] name      :arm-b
part[6] classname :DISK
part[6] addrlo    :0x32f8
part[6] lenlo     :0x960
part[6] user_type :32768
part[6] keydata   :0
part[6] ro        :0

part[7] name      :config
part[7] classname :DISK
part[7] addrlo    :0x3c58
part[7] lenlo     :0x20
part[7] user_type :32768
part[7] keydata   :0
part[7] ro        :0

part[8] name      :UDISK
part[8] classname :DISK
part[8] addrlo    :0x3c78
part[8] lenlo     :0x0
part[8] user_type :33024
part[8] keydata   :0
part[8] ro        :0

need erase flash: 18
The Chip Erase size is: 16M ...
SUNXI_EFEX_MBR_TAG
mbr size = 0x4000
write primary GPT success
spinor: skip backup GPT
[43.156]update partition map
FEX_CMD_fes_verify_status
FEX_CMD_fes_verify last err=0
FEX_CMD_fes_verify_value, start 0x20, size high 0x0:low 0x1000
FEX_CMD_fes_verify_value 0x8c999e79
FEX_CMD_fes_verify_value, start 0x28, size high 0x0:low 0x1000
FEX_CMD_fes_verify_value 0x8c999e79
FEX_CMD_fes_verify_value, start 0x30, size high 0x0:low 0x121e48
FEX_CMD_fes_verify_value 0xe3775740
FEX_CMD_fes_verify_value, start 0x1930, size high 0x0:low 0x7a168
FEX_CMD_fes_verify_value 0x3b80dabd
FEX_CMD_fes_verify_value, start 0x1f70, size high 0x0:low 0x23c230
FEX_CMD_fes_verify_value 0x8bdd937b
FEX_CMD_fes_verify_value, start 0x32f8, size high 0x0:low 0xe8338
FEX_CMD_fes_verify_value 0x3e12775c
FEX_CMD_fes_verify_value, start 0x3c58, size high 0x0:low 0x3c00
FEX_CMD_fes_verify_value 0xe5de21c
flash sectors: 0x8000
FEX_CMD_fes_verify_value, start 0x3c78, size high 0x0:low 0x7e5400
FEX_CMD_fes_verify_value 0x4536d51f
bootfile_mode=4
SUNXI_EFEX_BOOT1_TAG
boot1 size = 0x8000, max size = 0x80000
uboot size = 0x124000
storage type = 3
skip toc1
FEX_CMD_fes_verify_status
FEX_CMD_fes_verify last err=0
bootfile_mode=4
SUNXI_EFEX_BOOT0_TAG
boot0 size = 0xc080
storage type = 3
burn first boot0 ok!
burn boot0 redund ok!
FEX_CMD_fes_verify_status
FEX_CMD_fes_verify last err=0
sunxi_efex_next_action=2
exit usb
next work 2
SUNXI_UPDATE_NEXT_ACTION_REBOOT
free spi flash

UART 燒寫

R128 支持使用 UART 燒寫系統(tǒng)。

請注意:R128 Module 在硬件上下拉了 PA2 引腳,默認配置為USB下載模式。如果希望使用 UART 下載需要摘除 PA2 下拉電阻,或者外部上拉 PA2 到 3V3

image20

PA2 下拉電阻為 47K,可以直接上拉 PA2 到 3V3 進入UART下載模式

image21

UART 下載設(shè)置

  • 打開 PhoenixMC 點擊 刷新 ,注意在下載過程中請斷開各類串口監(jiān)視器,不能占用串口,否則刷新找不到對應串口。
  • 配置串口波特率,一般選擇 1500000 即可

如果選擇太高的波特率會導致通訊錯誤,板載的 CH340C 僅支持最大2000000波特率

image22

  • 點擊 刷新 選擇對應的串口
  • 點擊調(diào)試進入調(diào)試界面

image23

如果出現(xiàn) Open uart error! 則表示沒有關(guān)閉串口助手或者選擇錯了串口。

image24

  • 配置 Flash 長度,例如 R128 內(nèi)置 16M NOR Flash,這里就填入 0x1000000 也就是 16M 長度
  • 燒寫前先擦除 Flash
  • 點擊寫入

image25

  • 選擇 16M 固件,注意這個固件后綴名是 .bin ,不是 USB 燒寫的 .img 文件

注意:USB 燒寫使用的是專有格式,需要 PhoenixSuit 解析并燒錄,UART 燒寫使用的是通用格式,為內(nèi)置 SPI NOR 的鏡像文件。

image26

  • 提示文件較小,點擊確定即可

image27

  • 開始燒寫

image28

  • 燒寫完成,下載結(jié)束

image29

UART mBoot 通訊協(xié)議

HostMain-CMDSub-CMDCMD ValueDescriptionRemarks
PC0x000x000x00Read 1 byte
PC0x000x010x01Write 1 byte
PC0x000x020x02Read 2 bytes
PC0x000x030x03Write 2 bytes
PC0x000x040x04Read 4 bytes
PC0x000x050x05Write 4 bytes
PC0x000x060x06Read 8 bytes
PC0x000x070x07Write 8 bytes
PC0x010x000x08Read n bytes
PC0x010x010x09Write n bytes
PC0x020x000x10Change the UART transmission condition
PC0x020x010x11Enable/Disable JTAG
PC0x020x020x12reboot
PC0x020x030x13Set PC pointer
PC0x020x040x14Enable/disable MCU transmission and validation
PC0x020x050x15Obtain baud rate list
PC0x020x060x16Modify the buffer
PC0x000x000x18Obtain flash information
PC0x010x010x19Chip erase
PC0x010x020x1ARead n sectors
PC0x010x030x1BWrite n sectors
PC0x010x040x1CObtain flash information
PC0x010x050x1DChip erase
PC0x010x060x1ERead n sectors
PC0x010x070x1FWrite n sectors
MCU0x000x00Send message to PC

燒錄速度對比

燒錄方式擦除速度燒錄速度
USB30s38s
UART (1500000)60s205s
UART (115200)60s1466s

審核編輯:湯梓紅

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

    關(guān)注

    146

    文章

    17019

    瀏覽量

    350374
  • 嵌入式
    +關(guān)注

    關(guān)注

    5072

    文章

    19026

    瀏覽量

    303517
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4959

    瀏覽量

    97214
  • 燒寫
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    14264
收藏 人收藏

    評論

    相關(guān)推薦

    NODEMCU V3 AT固件

    NODEMCU V3 AT固件NODEMCU V3AT指令固件,保存配置圖。1.AT
    發(fā)表于 10-28 12:36 ?19次下載
    NODEMCU V3<b class='flag-5'>燒</b><b class='flag-5'>寫</b> AT<b class='flag-5'>固件</b>

    DshanMCU-R128s2-DEVKIT應用開發(fā)案例

    本文章為DshanMCU-R128s2-DEVKIT應用開發(fā)案例,本文案例(點亮一顆 LED 燈)代碼可以到全志在線-在線文檔或者復制鏈接前往下載。
    的頭像 發(fā)表于 09-28 16:26 ?832次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b>-DEVKIT應用開發(fā)案例

    基于DShanMCU-R128s2-DevKit開發(fā)智能手表

    本項目基于DShanMCU-R128s2-DevKit開發(fā),用意是提供一個綜合的示例進行學習參考。
    的頭像 發(fā)表于 11-01 15:32 ?753次閱讀
    基于<b class='flag-5'>DShanMCU-R128s2</b>-DevKit開發(fā)智能手表

    DshanMCU-R128s2全志R128視頻教程

    基于DShanMCU-R128S2_DevKit的入門教程
    的頭像 發(fā)表于 12-26 14:05 ?576次閱讀

    DshanMCU-R128s2芯片簡介

    DshanMCU-R128s2芯片簡介
    的頭像 發(fā)表于 12-22 09:55 ?818次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b>芯片簡介

    DshanMCU-R128s2芯片參數(shù)

    MB LS PSRAM R128 S2)/8 channels (R128 S3) - One LEDC used to control the external intellige
    的頭像 發(fā)表于 12-26 10:57 ?1046次閱讀

    DshanMCU-R128s2 R128 模組

    R128-S2-N16R16 R128-S2 Arm Cortex-M33 C906 RISC-V HIFI5 DSP 1MByte 8Mbyte 8Mbyte 16M NOR Flash 2 Audio
    的頭像 發(fā)表于 12-26 11:11 ?999次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> <b class='flag-5'>R128</b> 模組

    DshanMCU-R128s2 R128 DevKit 開發(fā)板

    針對 R128 模組,百問科技推出了 R128 DevKit 開發(fā)板作為快速開發(fā)評估工具。 特性: 板載 R128-S2-N16R16 模組 板載 2.4G RF 陶瓷天線 板載 USB Type
    的頭像 發(fā)表于 12-22 12:02 ?595次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> <b class='flag-5'>R128</b> DevKit 開發(fā)板

    DshanMCU-R128s2 R128 EVT 開發(fā)套件

    針對 R128 模組,百問科技推出了 R128 EVT 開發(fā)套件作為快速開發(fā)評估工具。
    的頭像 發(fā)表于 12-22 15:16 ?746次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> <b class='flag-5'>R128</b> EVT 開發(fā)套件

    DshanMCU-R128s2 SDK 架構(gòu)與目錄結(jié)構(gòu)

    R128 S2 是全志提供的一款 M33(ARM)+C906(RISCV-64)+HIFI5(Xtensa) 三核異構(gòu) SoC,同時芯片內(nèi)部 SIP 有 1M SRAM、8M LSPSRAM、8M
    的頭像 發(fā)表于 12-22 15:57 ?697次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> SDK 架構(gòu)與目錄結(jié)構(gòu)

    DshanMCU-R128s2 Hello World!

    載入方案選擇 r128s2_module_c906 $ source envsetup.sh $ lunch_rtos 1 編輯程序 打開你喜歡的編輯器,修改文件: lichee/rtos
    的頭像 發(fā)表于 12-22 17:24 ?575次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b> Hello World!

    DshanMCU-R128s2 配置引腳復用

    解析 sys_config.fex 的驅(qū)動配置位于 licheertos-componentsawsys_config_script 中。 對于配置引腳復用,只需要修改 boardr128s2{PROJECT}configsys_config.fex 文件即可。 GPIO描述
    的頭像 發(fā)表于 12-22 17:36 ?633次閱讀

    DshanMCU-R128s2啟動與資源劃分

    固件、協(xié)議棧、驅(qū)動、休眠喚醒、安全啟動、安全控制 C906 應用核。運行大部分驅(qū)動與主要應用,控制臺 HIFI5 算法核。運行音頻相關(guān)驅(qū)動與算法 內(nèi)存配置 R128 方案目前三個核 OS 運行的地址范圍如下表。 這只是默認配置方案,CPU 資源劃分可以按照需求任意修改。
    的頭像 發(fā)表于 12-22 17:46 ?628次閱讀
    <b class='flag-5'>DshanMCU-R128s2</b>啟動與資源劃分

    DshanMCU-R128s2硬件設(shè)計參考

    R128 DevKit 開發(fā)板 硬件工程開源地址:https://oshwhub.com/gloomyghost/r128-module 電路圖
    的頭像 發(fā)表于 12-26 09:46 ?947次閱讀

    DshanMCU-R128s2術(shù)語表

    RISC-V 架構(gòu)的 64 位元處理器單元 HIFI5 Cadence 推出的 Cadence Tensilica HiFi 5 DSP 32 位處理器單元 R128 全志推出的一款包含
    的頭像 發(fā)表于 12-25 10:07 ?591次閱讀