8051 核
简介
Duo 使用的 CPU 中包含一个 8051 核,8051 子系统位于由 RTC 独立供电的模块中。 该子系统配置有 8051、I2C/UART/SPI NOR/SD 控制器、定时器/WDT、中断管理和 Mailbox IP。系统软件可以使用 8051 管理唤醒条件并在睡眠模式下唤醒系统,并通过外设控制器与外部设备通信。
快速开始
8051核编译指南
源码地址: github。
执行:
git clone https://github.com/milkv-duo/duo-8051.git
cd duo-8051/sdcc/mars/project/base_project
make clean && make
编译成功后在 sdcc/mars/project/base_project/output
中可以找到编译好的固件 mars_mcu_fw.bin
。
加载固件方法
首先下载固件及工具,并将压缩包解压:firmware.zip。
一、在8051-SRAM中加载固件:
-
将
8051_up
、mars_mcu_fw.bin
、blink.sh
拷入/mnt/data
,并赋予执行和读取权限。 -
执行
8051_up
自动更新固件并启动8051核。 -
执行
blink.sh
,该脚本会向8051核心发送信息,使蓝色LED闪烁(在执行该脚本前请确认 /mnt/system/blink.sh 已经被移除)。
该种方法运行时8051内核固件不能超过8KB,超过可能造成不运行。
二、在DDR内存中加载固件:
1.更改SDK中内存分配,修改 build/boards/[chip model]/[board config]/memmap.py
。
在MemoryMap中添加以下内容:
# ==============
# 8051
# ==============
CHIP8051_SIZE = 512 * SIZE_1K
CHIP8051_ADDR = DRAM_BASE + DRAM_SIZE - CHIP8051_SIZE
修改以下内容:
# ==============
# C906L FreeRTOS
# ==============
FREERTOS_SIZE = 768 * SIZE_1K
# FreeRTOS is after 8051
FREERTOS_ADDR = CHIP8051_ADDR - FREERTOS_SIZE
FSBL_C906L_START_ADDR = FREERTOS_ADDR
-
重新编译固件并烧录到开发板。
-
将
8051_up
、mars_mcu_fw.bin
、blink.sh
、8051_boot_cfg.ini
拷入/mnt/data
,并赋予执行和读取权限。 -
执行
8051_up
自动更新固件并启动8051核。 -
执行
blink.sh
,该脚本会向8051核心发送信息,使蓝色LED闪烁(在执行该脚本前请确认 /mnt/system/blink.sh 已经被移除)。
若想自定义8051存放固件的DDR内存大小,请修改:
CHIP8051_SIZE = 512 * SIZE_1K
512为自定义大小,并修改8051_boot_cfg.ini
中地址为自定义地址。
Duo地址计算公式为 "2147483648+64*1048576-[自定义大小]*1024" 。
Duo-256M地址计算公式为 "2147483648+256*1048576-[自定义大小]*1024" 。
(注意地址填写时必须转换成16进制地址0xXXXXXXX。)