一、前言(Wujian100 SOC存储器的介绍)
Wujian100 SoC内部包含1块64KB的指令ROM和3块64KB的数据RAM(如下图),通过AHB总线挂载到处理器 上,只支持小端模式存储数据指令。
此指令ROM专门用来存放启动程序,SOC上电后,会将data段数据由ROM搬运至RAM,并且将BSS段数据在数据RAM 的相应位置进行初始化为0处理(一个程序的3个基本段:text段,data段,bss段)。
Wujian100 SOC存储器在Wujian100开源代码中的体现如下图:
二、实现思路
简单来说,就是将启动程序的bin文件数据放入Wujian100 SOC的指令ROM中即可,虽然称作为ROM,但实际上是通过FPGA BRAM资源实现的,故数据掉电丢失,所以需要将启动程序的bin文件数据作为该BRAM的初始数据,这样bootrom就完成了。
三、具体步骤
(一)、在剑池SDK中编写启动程序C代码,并编译生成bin文件
编写C代码
#include <stdio.h>
#include "soc.h"
#include "drv_gpio.h"
#include "pin_name.h"
#include "pin.h"
static void gpio_interrupt_handler1(int32_t idx)
{
}
static void gpio_interrupt_handler2(int32_t idx)
{
}
volatile int yzp=0;
void delay(void)
{
unsigned int i=0,j=0;
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
yzp = 0;
}
int main(void)
{
gpio_pin_handle_t pin1 = NULL;
gpio_pin_handle_t pin2 = NULL;
pin1 = csi_gpio_pin_initialize(PA0, gpio_interrupt_handler1);
csi_gpio_pin_config_mode(pin1, GPIO_MODE_PUSH_PULL);
csi_gpio_pin_config_direction(pin1, GPIO_DIRECTION_OUTPUT);
pin2 = csi_gpio_pin_initialize(PA1, gpio_interrupt_handler2);
csi_gpio_pin_config_mode(pin2, GPIO_MODE_PUSH_PULL);
csi_gpio_pin_config_direction(pin2, GPIO_DIRECTION_OUTPUT);
while(1)
{
printf("CODE START!\n");
csi_gpio_pin_write(pin1, 0);
csi_gpio_pin_write(pin2, 1);
printf("CODE START!\n");
csi_gpio_pin_write(pin1, 1);
csi_gpio_pin_write(pin2, 0);
}
return 0;
}
勾选生成bin文件选项
编译,即可生成bin文件
(二)修改wujian100 SOC的verilog代码
该指令ROM的代码结构如下图蓝框处,红框内的四个小RAM模块一起组成一个64KB的RAM,这个64KB的RAM就是指令ROM:
我们将实现该ROM的verilog模块复制出一份,并更改模块名字,但不改模块内的代码,变成新的模块。经过对工程的修改,该指令ROM的代码结构变成如下图所示:
将启动程序的bin文件数据放入该指令ROM中,即作为fpga_byte_spram_yzp1、fpga_byte_spram_yzp2、fpga_byte_spram_yzp3、fpga_byte_spram_yzp4这四个RAM的初始数据。将bin文件数据拆成4份,通过readmemh函数分别作为这四个RAM的初始数据,如下图:
为什么要将bin文件数据拆成4份呢?因为这个指令ROM由四个RAM构成,故需要四份数据分别对这四个RAM进行初始化。
ROM按照如下图方式存储BIN数据,理解这个存储方式之后,你就知道怎么拆bin文件了。
四、参考文献
邸志雄老师wujian100课程:
http://www.dizhixiong.cn/class5/
2-玄铁E902处理器与无剑100_SoC体系架构.pdf
wujian100开源代码自带的文档说明:
https://github.com/T-head-Semi/wujian100_open
wujian100_open Userguide v1.0.docx
wujian100架构图:
https://blog.csdn.net/weixin_44085642/article/details/105312548