add sdcard test
This commit is contained in:
parent
6606920781
commit
e9d3fe98b8
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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++) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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);
|
||||
}
|
Loading…
Reference in New Issue