在Lichee RV Dock上的不成功的烧录尝试

最近在学基于risc-v的简单操作系统,刚好手里有块Lichee RV Dock 的板子,所以在学了基础的"hello, world"程序后,想着能不能把这个程序烧录到板子上,简单的做个实验。

要完成这个任务,需要将程序烧录到sd卡上,板子通电后先执行bootloader程序,再跳转去执行sd卡上的程序,而bootloader程序是机器自带的,所以不用更改。要做的就是写好程序并烧录到sd卡上。听上去似乎挺简单的:)

程序在课程资料中已经给出,不同的是程序中以qemu模拟的risc-v平台为基础去编写的程序,而这个模拟平台和板子存在差异。主要表现在各种寄存器的物理地址上,所以我们需要根据板子的实际情况,更改代码中各个寄存器的地址。这个可以参考RISC RV Dock的用户手册,或者参考已有代码中的写法。

在这个实验中,仅涉及到UART寄存器,我们需要将字符串输入到UART寄存器,然后通过USB转TTL转接线在屏幕上显示这些内容。

关于寄存器的地址,手册上给出的信息如下:

我们需要用到其中的UART0寄存器,所以我们仅需将程序中UART地址代码 #define UART0 0x10000000L 改为 #define UART0 0x02500000L 即可,然后执行 make run 生成 .bin 文件。(bin文件中存放纯指令,而不像elf文件那样有额外的信息)

接下来的问题就是如何将.bin 程序烧录到sd卡中。虽然官方提供了烧录程序,能正常烧录官方提供的镜像文件 (参考Lichee RV 烧录系统) ,但却不能烧录我生成的bin文件(即使将它转化为了img文件)。我暂时也没有找到相关的方式,所以暂时先在这里做个记录,后面学到后再填坑。

不过我了解到了另一种方式,直接在DDR内存中跑编写的.bin文件,通过FEL程序将bin文件烧录到DDR上(可惜似乎不能用FEL程序烧录sd卡),相关教程见 d1下载xboot的过程,这个方式等我的USB转TTL线到达后再进行实践。

相关推荐
听风吹雨yu14 分钟前
STM32F407-MD5码计算/Digest认证计算
stm32·单片机·嵌入式硬件
yugi98783823 分钟前
RN8302B电表芯片驱动开发指南(基于SPI通信)
驱动开发·单片机·嵌入式硬件
youcans_1 小时前
【STM32-MBD】(15)Simulink 模型开发之三相互补 PWM
stm32·单片机·嵌入式硬件·matlab·foc
Funing72 小时前
硬件实战项目——纯硬件寻迹小车
嵌入式硬件·电机·电路·智能车
逐步前行3 小时前
STM32_内部结构
网络·stm32·嵌入式硬件
我是一棵无人问荆的小草4 小时前
STM32标准库与HAL库编程差异分析
stm32·单片机·嵌入式硬件
LingLong_roar4 小时前
手搓温湿度传感器(单片机普冉PY32F002AF15P6TU + 温湿度传感器 SHT40-AD1B-R2 + 0.96寸TFT IPS 显示屏)
单片机·嵌入式硬件
XINVRY-FPGA4 小时前
中阶FPGA效能红线重新划定! AMD第2代Kintex UltraScale+登场,记忆体频宽跃升5倍
嵌入式硬件·fpga开发·硬件工程·dsp开发·fpga
不做无法实现的梦~4 小时前
思翼mk32遥控器配置图传和数传教程
linux·嵌入式硬件·机器人·自动驾驶
上海合宙LuatOS4 小时前
LuatOS ——Modbus RTU 通信模式
java·linux·服务器·开发语言·网络·嵌入式硬件·物联网