初始提交
This commit is contained in:
51
dtest/nor_flash_test/Makefile
Executable file
51
dtest/nor_flash_test/Makefile
Executable file
@@ -0,0 +1,51 @@
|
||||
|
||||
# OUTPUT type
|
||||
# 1 - .out
|
||||
# 2 - .a
|
||||
# 3 - .so
|
||||
OUTPUT_TYPE = 1
|
||||
OUTPUT_NAME = nor_flash_test
|
||||
|
||||
# .h files dir
|
||||
ADD_INCLUDE += $(TOPDIR)/inc/io_lib $(TOPDIR)/inc/driver $(TOPDIR)/driver/inc
|
||||
|
||||
# predefined macro
|
||||
PRE_MARCO +=
|
||||
|
||||
LD_SCRIPT = link_soc.lds
|
||||
|
||||
ifeq ($(gcc),arm)
|
||||
ADD_LIB = cm3
|
||||
ADD_LIBDIR = $(TOPDIR)/startup/cm3
|
||||
else
|
||||
ADD_LIB = riscv
|
||||
ADD_LIBDIR =$(TOPDIR)/startup/riscv
|
||||
endif
|
||||
|
||||
# lib dir
|
||||
ADD_LIBDIR += $(TOPDIR)/driver $(TOPDIR)/common
|
||||
# lib need to ld together
|
||||
ADD_LIB += driver common
|
||||
|
||||
#####################################################
|
||||
|
||||
ifdef TOPDIR
|
||||
include $(TOPDIR)/build/makefile.cfg
|
||||
else
|
||||
include $(CURDIR)/build/makefile.cfg
|
||||
TOPDIR = $(CURDIR)
|
||||
export TOPDIR
|
||||
endif
|
||||
|
||||
dump:
|
||||
$(OBJDUMP) -D -S -l $(OUTPUT_FULL_NAME) > $(OUTPUT_FULL_NAME).dump
|
||||
|
||||
# display the obj files and output name
|
||||
debug:
|
||||
@echo TOPDIR=$(TOPDIR)
|
||||
@echo OUTPUT_LIB=$(OUTPUT_FULL_NAME)
|
||||
@echo DEPS=$(DEPS)
|
||||
@echo OBJECTS=$(OBJECTS)
|
||||
@echo SRCS=$(SRCS)
|
||||
@echo OBJECTS folder=$(foreach dirname, $(SUB_DIRS), $(addprefix $(BIN_DIR)/, $(dirname)))
|
||||
@echo output_name=$(OUTPUT_FULL_NAME)
|
156
dtest/nor_flash_test/nor_flash_test.c
Executable file
156
dtest/nor_flash_test/nor_flash_test.c
Executable file
@@ -0,0 +1,156 @@
|
||||
/****************************************************************************
|
||||
|
||||
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
||||
|
||||
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
||||
be copied by any method or incorporated into another program without
|
||||
the express written consent of Aerospace C.Power. This Information or any portion
|
||||
thereof remains the property of Aerospace C.Power. The Information contained herein
|
||||
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
||||
liability for its use in any way and conveys no license or title under
|
||||
any patent or copyright and makes no representation or warranty that this
|
||||
Information is free from patent or copyright infringement.
|
||||
****************************************************************************/
|
||||
|
||||
#include "iot_bitops.h"
|
||||
#include "os_lock.h"
|
||||
#include "iot_config.h"
|
||||
#include "dbg_io.h"
|
||||
#include "iot_io.h"
|
||||
#include "ahb.h"
|
||||
#include "hw_reg_api.h"
|
||||
#include "gd25lq16x.h"
|
||||
#include "iot_config.h"
|
||||
#include "gpio_mtx.h"
|
||||
#include "nor_flash.h"
|
||||
#include "iot_nor_flash_api.h"
|
||||
|
||||
#define ENABLE 1
|
||||
#define DISABLE 0
|
||||
|
||||
#define RX_NUM 30
|
||||
#define TX_NUM 30
|
||||
|
||||
void nor_main() {
|
||||
volatile uint32_t loop = 0x10000;
|
||||
uint32_t dev_info = 0;
|
||||
uint8_t memType_ID = 0;
|
||||
uint8_t manuf_ID = 0;
|
||||
uint8_t capacity_ID = 0;
|
||||
uint8_t reg_stats_l = 0;
|
||||
uint8_t reg_stats_h = 0;
|
||||
uint8_t check_cnt = 0;
|
||||
|
||||
uint8_t i = 0;
|
||||
char TxBuf[TX_NUM] = { 0x13,0x48,0x48,0x48,0x28,0x68,0x70,
|
||||
0x88,0x90,0xA8,0xB3,0xC1,0xDD,0xE8,0xF0,
|
||||
0x11,0x47,0x47,0x47,0x47,0x66,0x77,
|
||||
0x88,0x99,0x8A,0xBB,0x81,0xDD,0xEE,0xF9};
|
||||
char RxBuf[RX_NUM];
|
||||
|
||||
dbg_uart_init();
|
||||
iot_printf("nand flash test start..........\r\n");
|
||||
|
||||
iot_norfc_cfg_t cfg = {0};
|
||||
cfg.spi.gpio.clk = 37;
|
||||
cfg.spi.gpio.cs = 28;
|
||||
cfg.spi.gpio.miso = 40;
|
||||
cfg.spi.gpio.mosi = 39;
|
||||
cfg.spi.port = 0;
|
||||
iot_norfc_init(&cfg);
|
||||
|
||||
do {
|
||||
dev_info = iot_norfc_read_chip_info();
|
||||
memType_ID = (uint8_t)( (dev_info>>8) & 0xFF);
|
||||
capacity_ID = (uint8_t)((dev_info>>16) & 0xFF);
|
||||
manuf_ID = (uint8_t)dev_info;
|
||||
iot_printf("Memery type ID: %x\r\n", memType_ID);
|
||||
iot_printf("Manufact ID: %x\r\n", manuf_ID);
|
||||
iot_printf("Capacity ID: %x\r\n", capacity_ID);
|
||||
iot_printf("******************************\r\n");
|
||||
iot_printf("\r\n");
|
||||
|
||||
reg_stats_l = norfc_get_status_reg(READ_STS_REG_L_CMD);
|
||||
iot_printf("Low Status Reg: %x\r\n", reg_stats_l);
|
||||
iot_printf("******************************\r\n");
|
||||
iot_printf("\r\n");
|
||||
|
||||
loop = 0x10000;
|
||||
while(loop--);
|
||||
|
||||
reg_stats_h = norfc_get_status_reg(READ_STS_REG_H_CMD);
|
||||
iot_printf("High Status Reg: %x\r\n", reg_stats_l);
|
||||
iot_printf("******************************\r\n");
|
||||
iot_printf("\r\n");
|
||||
if( reg_stats_h & 0x40 )
|
||||
{
|
||||
/*set BP2,BP1,BP0*/
|
||||
reg_stats_l |= 0x1C;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*clear BP2,BP1,BP0*/
|
||||
reg_stats_l &= 0xE3;
|
||||
}
|
||||
norfc_set_status_reg(®_stats_l, 1);
|
||||
|
||||
loop = 0x10000;
|
||||
while(loop--);
|
||||
|
||||
reg_stats_l = norfc_get_status_reg(READ_STS_REG_L_CMD);
|
||||
iot_printf("Lower status reg set: %x\r\n", reg_stats_l);
|
||||
iot_printf("******************************\r\n");
|
||||
iot_printf("\r\n");
|
||||
|
||||
if(!iot_norfc_erase_data(BLOCK_ERASE_32K_CMD,50))
|
||||
{
|
||||
iot_printf("Erase block done! \r\n");
|
||||
iot_printf("******************************\r\n");
|
||||
iot_printf("\r\n");
|
||||
}
|
||||
|
||||
if(!iot_norfc_program_page(TxBuf, 50, TX_NUM))
|
||||
{
|
||||
iot_printf("Program random data done! \r\n");
|
||||
iot_printf("******************************\r\n");
|
||||
iot_printf("\r\n");
|
||||
}
|
||||
|
||||
iot_norfc_read_data(RxBuf, 50, RX_NUM);
|
||||
|
||||
for(i = 0; i<RX_NUM; i++)
|
||||
{
|
||||
iot_printf("Received data1: %x\r\n", RxBuf[i]);
|
||||
if(RxBuf[i] != TxBuf[i])
|
||||
{
|
||||
iot_printf("Something wrong when programming or reading!!!!\r\n");
|
||||
iot_printf("\r\n");
|
||||
check_cnt++;
|
||||
}
|
||||
}
|
||||
if (check_cnt == 0)
|
||||
{
|
||||
iot_printf("\r\n");
|
||||
iot_printf("nand flash test done..........\r\n");
|
||||
|
||||
}
|
||||
check_cnt = 0;
|
||||
iot_printf("\r\n");
|
||||
iot_printf("******************************\r\n");
|
||||
iot_printf("\r\n");
|
||||
|
||||
loop = 0x2000000;
|
||||
while(loop--);
|
||||
} while (true);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
int main(void) {
|
||||
nor_main();
|
||||
return 0;
|
||||
}
|
||||
#endif // __GCC__
|
||||
|
Reference in New Issue
Block a user