add sdcard test

This commit is contained in:
hustccc 2020-11-03 08:33:28 +09:00
parent 6606920781
commit e9d3fe98b8
8 changed files with 45 additions and 36 deletions

View File

@ -4928,3 +4928,11 @@ int fpioa_get_io_by_function(fpioa_function_t function)
return -1;
}
void fpioa_pin_init() {
fpioa_set_function(27, FUNC_SPI0_SCLK);
fpioa_set_function(28, FUNC_SPI0_D0);
fpioa_set_function(26, FUNC_SPI0_D1);
fpioa_set_function(32, FUNC_GPIOHS7);
fpioa_set_function(29, FUNC_SPI0_SS3);
}

View File

@ -197,7 +197,7 @@ void virtio_disk_intr(void);
// test.c
void test_kalloc(void);
void test_vm(unsigned long);
void test_sdcard(void);
// spi.c
// void spi_init(spi_device_num_t spi_num, spi_work_mode_t work_mode, spi_frame_format_t frame_format,
// uint64 data_bit_length, uint32 endian);

View File

@ -1028,6 +1028,7 @@ int fpioa_set_st(int number, uint8 st_enable);
*/
int fpioa_set_oe_inv(int number, uint8 inv_enable);
void fpioa_pin_init(void);
#ifdef __cplusplus
}
#endif

View File

@ -77,6 +77,7 @@ typedef struct {
extern SD_CardInfo cardinfo;
uint8 sd_init(void);
void sdcard_init(void);
uint8 sd_read_sector(uint8 *data_buff, uint32 sector, uint32 count);
uint8 sd_write_sector(uint8 *data_buff, uint32 sector, uint32 count);
uint8 sd_read_sector_dma(uint8 *data_buff, uint32 sector, uint32 count);

View File

@ -34,43 +34,14 @@ main(unsigned long hartid, unsigned long dtb_pa)
// fileinit(); // file table
// virtio_disk_init(); // emulated hard disk
// userinit(); // first user process
fpioa_set_function(27, FUNC_SPI0_SCLK);
fpioa_set_function(28, FUNC_SPI0_D0);
fpioa_set_function(26, FUNC_SPI0_D1);
fpioa_set_function(32, FUNC_GPIOHS7);
fpioa_set_function(29, FUNC_SPI0_SS3);
uint8 cardinfo = sd_init();
if(cardinfo) {
panic("sd card init error\n");
} else
{
printf("sdcard init: %d\n", cardinfo);
}
uint8 buffer[100];
memset(buffer, 0, sizeof(buffer));
if(sd_read_sector(buffer, 0, 10)) {
printf("SD card read sector err\n");
} else {
printf("SD card read sector succeed\n");
}
memmove(buffer, "Hello,World", sizeof("Hello,World"));
printf("Buffer: %s\n", buffer);
if(sd_write_sector(buffer, 0, 10)) {
printf("SD card write sector err\n");
} else {
printf("SD card write sector succeed\n");
}
memset(buffer, 0, sizeof(buffer));
if(sd_read_sector(buffer, 0, 10)) {
printf("SD card read sector err\n");
} else {
printf("SD card read sector succeed\n");
}
printf("Buffer: %s\n", buffer);
fpioa_pin_init();
sdcard_init();
test_kalloc(); // test kalloc
test_vm(hartid); // test kernel pagetable
test_proc_init(); // test porc init
test_sdcard();
printf("hart 0 init done\n");
for(int i = 1; i < NCPU; i++) {

View File

@ -35,6 +35,15 @@
SD_CardInfo cardinfo;
void sdcard_init() {
uint8 cardinfo = sd_init();
if(cardinfo) {
panic("sd card init error\n");
} else
{
printf("sdcard init: %d\n", cardinfo);
}
}
void SD_CS_HIGH(void)
{
gpiohs_set_pin(7, GPIO_PV_HIGH);

View File

@ -2,7 +2,7 @@
#include "include/types.h"
#include "include/spi.h"
#include "../kendryte_sdk/include/platform.h"
#include "include/platform.h"
#include "include/riscv.h"
#include "include/utils.h"
#include "include/defs.h"

View File

@ -9,7 +9,7 @@
#include "include/proc.h"
#include "include/defs.h"
#include "include/sbi.h"
#include "include/sdcard.h"
extern uint64 etext_addr;
extern struct proc *initproc;
@ -88,3 +88,22 @@ void test_vm(unsigned long hart_id) {
printf("[test_vm](walkaddr) va: %p, pa: %p\n", 0, walkaddr(test_pagetable, 0));
printf("[test_vm](walkaddr) va: %p, pa: %p\n", PGSIZE - 1, walkaddr(test_pagetable, PGSIZE - 1) + (PGSIZE - 1) % PGSIZE);
}
void test_sdcard() {
uint8 *buffer = kalloc();
memset(buffer, 0, sizeof(buffer));
memmove(buffer, "Hello,sdcard", sizeof("Hello,sdcard"));
printf("[test_sdcard]Buffer: %s\n", buffer);
if(sd_write_sector(buffer, 0, 10)) {
printf("[test_sdcard]SD card write sector err\n");
} else {
printf("[test_sdcard]SD card write sector succeed\n");
}
memset(buffer, 0, sizeof(buffer));
if(sd_read_sector(buffer, 0, 10)) {
printf("[test_sdcard]SD card read sector err\n");
} else {
printf("[test_sdcard]SD card read sector succeed\n");
}
printf("[test_sdcard]Buffer: %s\n", buffer);
}