编译通过 仿真启动 请知悉 改处理器没有csr
This commit is contained in:
64
tb/sw/src/main.c
Normal file
64
tb/sw/src/main.c
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
#include <stdint.h>
|
||||
// #include "uart.h"
|
||||
// #include "gpio.h"
|
||||
// #include "timer.h"
|
||||
|
||||
volatile uint32_t *cdr_0_tx_status = (uint32_t*)( 0x40000000 + 0x0 ); //read
|
||||
volatile uint32_t *cdr_0_tx_txLen = (uint32_t*)( 0x40000000 + 0x4 ); //write
|
||||
volatile uint32_t *cdr_0_tx_txFifo = (uint32_t*)( 0x40000000 + 0x8 ); //write
|
||||
|
||||
volatile uint32_t *cdr_0_rx_softReset = (uint32_t*)( 0x40000000 + 0x10 ); //write
|
||||
volatile uint32_t *cdr_0_rx_status = (uint32_t*)( 0x40000000 + 0x14 ); //read
|
||||
volatile uint32_t *cdr_0_rx_rxLen = (uint32_t*)( 0x40000000 + 0x18 ); //read
|
||||
volatile uint32_t *cdr_0_rx_rxFifo = (uint32_t*)( 0x40000000 + 0x1c ); //read
|
||||
|
||||
volatile uint32_t *cdr_1_tx_status = (uint32_t*)( 0x40000080 + 0x0 ); //read
|
||||
volatile uint32_t *cdr_1_tx_txLen = (uint32_t*)( 0x40000080 + 0x4 ); //write
|
||||
volatile uint32_t *cdr_1_tx_txFifo = (uint32_t*)( 0x40000080 + 0x8 ); //write
|
||||
|
||||
volatile uint32_t *cdr_1_rx_softReset = (uint32_t*)( 0x40000080 + 0x10 ); //write
|
||||
volatile uint32_t *cdr_1_rx_status = (uint32_t*)( 0x40000080 + 0x14 ); //read
|
||||
volatile uint32_t *cdr_1_rx_rxLen = (uint32_t*)( 0x40000080 + 0x18 ); //read
|
||||
volatile uint32_t *cdr_1_rx_rxFifo = (uint32_t*)( 0x40000080 + 0x1c ); //read
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
// uart_init();
|
||||
|
||||
// print_uart("Hello World, RocketChip is now Waking Up!\r\n");
|
||||
|
||||
// gpio_write( 0xfffffffa );
|
||||
|
||||
|
||||
|
||||
// for ( i = 0; i < 255; i++ )
|
||||
// {
|
||||
// *(txBuf+i) = data;
|
||||
// data = data << 4 | data >> 60;
|
||||
// }
|
||||
|
||||
// udelay(50);
|
||||
|
||||
*(cdr_0_tx_txLen) = 32;
|
||||
for( uint8_t i = 0; i < 32; i ++ ){
|
||||
*cdr_0_tx_txFifo = 32-i;
|
||||
}
|
||||
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
void handle_trap(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
134
tb/sw/src/startup.S
Normal file
134
tb/sw/src/startup.S
Normal file
@@ -0,0 +1,134 @@
|
||||
|
||||
.section .text.init
|
||||
.globl _prog_start
|
||||
_prog_start:
|
||||
|
||||
li x1, 0
|
||||
li x2, 0
|
||||
li x3, 0
|
||||
li x4, 0
|
||||
li x5, 0
|
||||
li x6, 0
|
||||
li x7, 0
|
||||
li x8, 0
|
||||
li x9, 0
|
||||
li x10,0
|
||||
li x11,0
|
||||
li x12,0
|
||||
li x13,0
|
||||
li x14,0
|
||||
li x15,0
|
||||
li x16,0
|
||||
li x17,0
|
||||
li x18,0
|
||||
li x19,0
|
||||
li x20,0
|
||||
li x21,0
|
||||
li x22,0
|
||||
li x23,0
|
||||
li x24,0
|
||||
li x25,0
|
||||
li x26,0
|
||||
li x27,0
|
||||
li x28,0
|
||||
li x29,0
|
||||
li x30,0
|
||||
li x31,0
|
||||
|
||||
# li t0, 0xffff
|
||||
# csrc mie, t0
|
||||
|
||||
# li t0, 0xa
|
||||
# csrc mstatus, t0
|
||||
|
||||
li sp, 0x80010000
|
||||
|
||||
# la t0, trap_entry
|
||||
# csrw mtvec, t0
|
||||
|
||||
|
||||
|
||||
call main
|
||||
|
||||
li gp, 1;
|
||||
ecall
|
||||
|
||||
trap_entry:
|
||||
addi sp, sp, -136
|
||||
|
||||
sw x1, 1* 4(sp)
|
||||
sw x2, 2* 4(sp)
|
||||
sw x3, 3* 4(sp)
|
||||
sw x4, 4* 4(sp)
|
||||
sw x5, 5* 4(sp)
|
||||
sw x6, 6* 4(sp)
|
||||
sw x7, 7* 4(sp)
|
||||
sw x8, 8* 4(sp)
|
||||
sw x9, 9* 4(sp)
|
||||
sw x10, 10*4(sp)
|
||||
sw x11, 11*4(sp)
|
||||
sw x12, 12*4(sp)
|
||||
sw x13, 13*4(sp)
|
||||
sw x14, 14*4(sp)
|
||||
sw x15, 15*4(sp)
|
||||
sw x16, 16*4(sp)
|
||||
sw x17, 17*4(sp)
|
||||
sw x18, 18*4(sp)
|
||||
sw x19, 19*4(sp)
|
||||
sw x20, 20*4(sp)
|
||||
sw x21, 21*4(sp)
|
||||
sw x22, 22*4(sp)
|
||||
sw x23, 23*4(sp)
|
||||
sw x24, 24*4(sp)
|
||||
sw x25, 25*4(sp)
|
||||
sw x26, 26*4(sp)
|
||||
sw x27, 27*4(sp)
|
||||
sw x28, 28*4(sp)
|
||||
sw x29, 29*4(sp)
|
||||
sw x30, 30*4(sp)
|
||||
sw x31, 31*4(sp)
|
||||
|
||||
# csrr a0, mcause
|
||||
# csrr a1, mepc
|
||||
mv a2, sp
|
||||
jal handle_trap
|
||||
# csrw mepc, a0
|
||||
|
||||
|
||||
# li t0, MSTATUS_MPP
|
||||
# csrs mstatus, t0
|
||||
|
||||
lw x1, 1 *4(sp)
|
||||
lw x2, 2 *4(sp)
|
||||
lw x3, 3 *4(sp)
|
||||
lw x4, 4 *4(sp)
|
||||
lw x5, 5 *4(sp)
|
||||
lw x6, 6 *4(sp)
|
||||
lw x7, 7 *4(sp)
|
||||
lw x8, 8 *4(sp)
|
||||
lw x9, 9 *4(sp)
|
||||
lw x10, 10*4(sp)
|
||||
lw x11, 11*4(sp)
|
||||
lw x12, 12*4(sp)
|
||||
lw x13, 13*4(sp)
|
||||
lw x14, 14*4(sp)
|
||||
lw x15, 15*4(sp)
|
||||
lw x16, 16*4(sp)
|
||||
lw x17, 17*4(sp)
|
||||
lw x18, 18*4(sp)
|
||||
lw x19, 19*4(sp)
|
||||
lw x20, 20*4(sp)
|
||||
lw x21, 21*4(sp)
|
||||
lw x22, 22*4(sp)
|
||||
lw x23, 23*4(sp)
|
||||
lw x24, 24*4(sp)
|
||||
lw x25, 25*4(sp)
|
||||
lw x26, 26*4(sp)
|
||||
lw x27, 27*4(sp)
|
||||
lw x28, 28*4(sp)
|
||||
lw x29, 29*4(sp)
|
||||
lw x30, 30*4(sp)
|
||||
lw x31, 31*4(sp)
|
||||
|
||||
addi sp, sp, 136
|
||||
mret
|
||||
Reference in New Issue
Block a user