From bfc30136ef49852698fbbcb7a244f3463accd931 Mon Sep 17 00:00:00 2001 From: "goprife@gmail.com" Date: Sun, 4 Nov 2012 05:49:49 +0000 Subject: [PATCH] change simulator directory organization git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2388 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- bsp/simulator/SConscript | 37 +---- bsp/simulator/application.c | 107 -------------- bsp/simulator/board.c | 45 ------ bsp/simulator/board.h | 32 ---- bsp/simulator/nand_sim.c | 234 ------------------------------ bsp/simulator/platform.c | 36 ----- bsp/simulator/rtconfig.h | 2 +- bsp/simulator/sd_sim.c | 193 ------------------------ bsp/simulator/serial.c | 161 -------------------- bsp/simulator/serial.h | 22 --- bsp/simulator/sst25vfxx_mtd.h | 24 --- bsp/simulator/sst25vfxx_mtd_sim.c | 228 ----------------------------- bsp/simulator/startup.c | 102 ------------- bsp/simulator/usart_sim.c | 131 ----------------- bsp/simulator/vs2005.vcproj | 74 ++++++---- 15 files changed, 54 insertions(+), 1374 deletions(-) delete mode 100644 bsp/simulator/application.c delete mode 100644 bsp/simulator/board.c delete mode 100644 bsp/simulator/board.h delete mode 100644 bsp/simulator/nand_sim.c delete mode 100644 bsp/simulator/platform.c delete mode 100644 bsp/simulator/sd_sim.c delete mode 100644 bsp/simulator/serial.c delete mode 100644 bsp/simulator/serial.h delete mode 100644 bsp/simulator/sst25vfxx_mtd.h delete mode 100644 bsp/simulator/sst25vfxx_mtd_sim.c delete mode 100644 bsp/simulator/startup.c delete mode 100644 bsp/simulator/usart_sim.c diff --git a/bsp/simulator/SConscript b/bsp/simulator/SConscript index 0eba347dc6..d9c64eb9f9 100644 --- a/bsp/simulator/SConscript +++ b/bsp/simulator/SConscript @@ -1,33 +1,12 @@ -import rtconfig -Import('RTT_ROOT') from building import * -src_bsp = ['application.c', 'startup.c', 'board.c', 'platform.c'] -src_drv = ['serial.c', 'usart_sim.c'] +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) -if GetDepend('RT_USING_DFS'): - src_drv += ['sd_sim.c'] +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) -if GetDepend('RT_USING_MTD_NAND'): - src_drv += ['nand_sim.c'] - -if GetDepend('RT_USING_MTD_NOR'): - src_drv += ['sst25vfxx_mtd_sim.c'] - -if GetDepend('RT_USING_RTGUI'): - src_drv += ['touch.c', 'calibration.c'] - -if GetDepend('RT_USING_RTGUI'): - if rtconfig.RT_USING_LCD_TYPE == 'FMT0371': - src_drv += ['lcd_a70.c'] - elif rtconfig.RT_USING_LCD_TYPE == 'ILI932X': - src_drv += ['ili_lcd_general.c'] - elif rtconfig.RT_USING_LCD_TYPE == 'SSD1289': - src_drv += ['ssd1289.c'] - -src = src_bsp + src_drv -CPPPATH = [ GetCurrentDir() ] -CPPDEFINES = [] -group = DefineGroup('Startup', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) - -Return('group') +Return('objs') diff --git a/bsp/simulator/application.c b/bsp/simulator/application.c deleted file mode 100644 index 7bbe6f4cb9..0000000000 --- a/bsp/simulator/application.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * File : application.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2009-01-05 Bernard the first version - */ - -#include -#include -#include - -#include - -void rt_init_thread_entry(void* parameter) -{ - /* initialization RT-Thread Components */ - rt_components_init(); - - rt_platform_init(); - - /* Filesystem Initialization */ -#ifdef RT_USING_DFS - { -#ifdef RT_USING_DFS_ELMFAT - /* mount sd card fat partition 1 as root directory */ - if (dfs_mount("sd0", "/", "elm", 0, 0) == 0) - { - rt_kprintf("fatfs initialized!\n"); - } - else - rt_kprintf("fatfs initialzation failed!\n"); -#endif - -#ifdef RT_USING_DFS_ELMFAT - /* mount sd card fat partition 1 as root directory */ - if (dfs_mount("nand0", "/nand", "uffs", 0, 0) == 0) - { - rt_kprintf("uffs initialized!\n"); - } - else - rt_kprintf("uffs initialzation failed!\n"); -#endif - -#ifdef RT_USING_DFS_JFFS2 - /* mount sd card fat partition 1 as root directory */ - if (dfs_mount("nor", "/nor", "jffs2", 0, 0) == 0) - { - rt_kprintf("jffs2 initialized!\n"); - } - else - rt_kprintf("jffs2 initialzation failed!\n"); -#endif - } -#endif -} - -void rt_test_thread_entry(void* parameter) -{ - int i; - for(i=0; i<10; i++) - { - rt_kprintf("hello, world\n"); - rt_thread_delay(100); - } -} - -int rt_application_init() -{ - rt_thread_t tid; - - tid = rt_thread_create("init", - rt_init_thread_entry, RT_NULL, - 2048, RT_THREAD_PRIORITY_MAX/3, 20); - - if (tid != RT_NULL) - rt_thread_startup(tid); - - tid = rt_thread_create("test", - rt_test_thread_entry, RT_NULL, - 2048, RT_THREAD_PRIORITY_MAX * 3 /4, 20); - if (tid != RT_NULL) - rt_thread_startup(tid); - - return 0; -} - -#ifndef _CRT_TERMINATE_DEFINED -#define _CRT_TERMINATE_DEFINED -_CRTIMP __declspec(noreturn) void __cdecl exit(__in int _Code); -_CRTIMP __declspec(noreturn) void __cdecl _exit(__in int _Code); -_CRTIMP void __cdecl abort(void); -#endif -void rt_hw_exit(void) -{ - rt_kprintf("RT-Thread, bye\n"); - exit(0); -} -FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_exit, exit, exit rt-thread); - -/*@}*/ diff --git a/bsp/simulator/board.c b/bsp/simulator/board.c deleted file mode 100644 index d73c29f508..0000000000 --- a/bsp/simulator/board.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * File : board.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2009 RT-Thread Develop Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2009-01-05 Bernard first implementation - */ - -#include -#include - -#include "board.h" - -/** - * @addtogroup STM32 - */ - -/** - * This function will initial STM32 board. - */ -void rt_hw_board_init() -{ -#if 0 - /* NVIC Configuration */ - NVIC_Configuration(); - - /* Configure the SysTick */ - SysTick_Config( SystemCoreClock / RT_TICK_PER_SECOND ); -#endif - -#if defined(RT_USING_CONSOLE) - rt_hw_usart_init(); - rt_hw_serial_init(); - rt_console_set_device(RT_CONSOLE_DEVICE_NAME); -#endif - -} - -/*@}*/ diff --git a/bsp/simulator/board.h b/bsp/simulator/board.h deleted file mode 100644 index cf7c375cc1..0000000000 --- a/bsp/simulator/board.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * File : board.h - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2009, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2009-09-22 Bernard add board.h to this bsp - */ - -#ifndef __BOARD_H__ -#define __BOARD_H__ - -void rt_hw_board_led_on(int n); -void rt_hw_board_led_off(int n); -void rt_hw_board_init(void); - -void rt_hw_serial_init(void); - -/* SD Card init function */ -void rt_hw_sdcard_init(void); - -int rt_hw_mtd_nand_init(void); - -int sst25vfxx_mtd_init(const char * nor_name, unsigned int block_start, unsigned int block_end); - -void rt_platform_init(void); -#endif diff --git a/bsp/simulator/nand_sim.c b/bsp/simulator/nand_sim.c deleted file mode 100644 index 69a328f3f4..0000000000 --- a/bsp/simulator/nand_sim.c +++ /dev/null @@ -1,234 +0,0 @@ -#include -#include -#include -#include -#include - -// #define NAND_TRACE rt_kprintf -#define NAND_TRACE(...) - -#define NAND_SIM "nand.bin" - -struct nand_device -{ - struct rt_mtd_nand_device parent; - FILE * file; -}; -static struct nand_device _nand; - -#define NAND_DEVICE(device) (( struct nand_device*)(device)) - -#define PAGE_DATA_SIZE 2048 /* page data size in bytes */ -#define PAGE_SPARE_SIZE 64 /* oob size in bytes */ -#define BLOCK_PAGES 64 /* the number of pages in a block */ -#define BLOCK_SIZE ((PAGE_DATA_SIZE + PAGE_SPARE_SIZE) * BLOCK_PAGES) - -#define BLOCK_COUNT 128 /* 128 blocks == 16M */ -#define BLOCK_MARK_SPARE_OFFSET 4 - -static rt_mutex_t lock; - -/* RT-Thread device interface */ - -static rt_err_t k9f1g08_mtd_check_block( - struct rt_mtd_nand_device* device, - rt_uint32_t block) -{ - rt_uint8_t block_status; - int result; - - struct nand_device * nand; - nand = NAND_DEVICE(device); - - fseek(nand->file, block * device->pages_per_block * - (device->page_size + device->oob_size) + - device->page_size + BLOCK_MARK_SPARE_OFFSET, - SEEK_SET); - result = fread(&block_status, 1, 1, nand->file); - if (result < 0) - { - NAND_TRACE("nand fread error\n"); - return -RT_ERROR; - } - - return block_status == 0xFF ? RT_EOK : -RT_ERROR; -} - -static rt_err_t k9f1g08_mtd_mark_bad_block( - struct rt_mtd_nand_device* device, - rt_uint32_t block) -{ - rt_uint8_t block_status; - int result; - - struct nand_device * nand; - nand = NAND_DEVICE(device); - - fseek(nand->file, block * device->pages_per_block * - (device->page_size + device->oob_size) + - device->page_size + BLOCK_MARK_SPARE_OFFSET, - SEEK_SET); - - block_status = 0x00; - result = fwrite(&block_status, 1, 1, nand->file); - if (result < 0) - { - NAND_TRACE("nand fwrite error\n"); - return -RT_ERROR; - } - - return RT_EOK; -} - -static char block_buffer[BLOCK_SIZE]; - -static rt_err_t k9f1g08_mtd_erase_block( - struct rt_mtd_nand_device* device, - rt_uint32_t block) -{ - int result; - - struct nand_device * nand; - nand = NAND_DEVICE(device); - - fseek(nand->file, block * device->pages_per_block * - (device->page_size + device->oob_size), - SEEK_SET); - - memset(block_buffer, 0xFF, sizeof(BLOCK_SIZE)); - result = fwrite(block_buffer, BLOCK_SIZE, 1, nand->file); - if (result < 0) - { - NAND_TRACE("nand fwrite error\n"); - return -RT_ERROR; - } - - return RT_EOK; -} - -/* return 0, ecc ok, 1, can be fixed , -1 can not be fixed */ -static rt_err_t k9f1g08_mtd_read( - struct rt_mtd_nand_device * device, - rt_off_t page, - rt_uint8_t * data, rt_uint32_t data_len, //may not always be 2048 - rt_uint8_t * spare, rt_uint32_t spare_len) -{ - int result; - int ecc_status = 0; - - struct nand_device * nand; - nand = NAND_DEVICE(device); - - if (data != RT_NULL && data_len != 0) - { - fseek(nand->file, page * (device->page_size + device->oob_size), - SEEK_SET); - result = fread(data, data_len, 1, nand->file); - if (result < 0) - ecc_status = -1; - } - - if (spare != RT_NULL && spare_len != 0) - { - fseek(nand->file, page * (device->page_size + device->oob_size) - +device->page_size, - SEEK_SET); - result = fread(spare, spare_len, 1, nand->file); - if (result < 0) - ecc_status = -1; - } - - return ecc_status; -} - -static rt_err_t k9f1g08_mtd_write ( - struct rt_mtd_nand_device * device, - rt_off_t page, - const rt_uint8_t * data, rt_uint32_t data_len,//will be 2048 always! - const rt_uint8_t * spare, rt_uint32_t spare_len) -{ - int result; - int ecc_status = 0; - - struct nand_device * nand; - nand = NAND_DEVICE(device); - - if (data != RT_NULL && data_len != 0) - { - fseek(nand->file, page * (device->page_size + device->oob_size), - SEEK_SET); - result = fwrite(data, data_len, 1, nand->file); - if (result < 0) - ecc_status = -1; - } - - if (spare != RT_NULL && spare_len != 0) - { - fseek(nand->file, page * (device->page_size + device->oob_size) - +device->page_size, - SEEK_SET); - result = fwrite(spare, spare_len, 1, nand->file); - if (result < 0) - ecc_status = -1; - } - - return ecc_status; -} - - -const static struct rt_mtd_nand_driver_ops k9f1g08_mtd_ops = -{ - RT_NULL, - k9f1g08_mtd_read, - k9f1g08_mtd_write, - k9f1g08_mtd_erase_block, - k9f1g08_mtd_check_block, - k9f1g08_mtd_mark_bad_block, -}; - -/* interface of nand and rt-thread device */ -static struct rt_mtd_nand_device nand_part[2]; - -int rt_hw_mtd_nand_init(void) -{ - int size; - rt_uint32_t id, total_block; - struct nand_device * nand; - struct rt_mtd_nand_device * nand_part; - - nand = &_nand; - nand_part = &(nand->parent); - - lock = rt_mutex_create("nand", RT_IPC_FLAG_FIFO); - - /* open sd card file, if not exist, then create it */ - nand->file = fopen(NAND_SIM, "rb+"); - if (nand->file == NULL) - { - int i; - /* create a file to simulate sd card */ - nand->file = fopen(NAND_SIM, "wb+"); - - memset(block_buffer, 0xFF, sizeof(block_buffer)); - for(i=0; ifile, i * BLOCK_SIZE, SEEK_SET); - fwrite(block_buffer, BLOCK_SIZE, 1, nand->file); - } - } - fseek(nand->file, 0, SEEK_SET); - - /* the first partition of nand */ - nand_part->page_size = PAGE_DATA_SIZE; - nand_part->pages_per_block = BLOCK_PAGES;//don't caculate oob size - nand_part->block_start = 0; - nand_part->block_end = BLOCK_COUNT -1; - nand_part->oob_size = PAGE_SPARE_SIZE; - nand_part->ops = &k9f1g08_mtd_ops; - rt_mtd_nand_register_device("nand0", nand_part); - return RT_EOK; -} - -#ifdef RT_USING_FINSH -#include -#endif diff --git a/bsp/simulator/platform.c b/bsp/simulator/platform.c deleted file mode 100644 index f74fced86c..0000000000 --- a/bsp/simulator/platform.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include "board.h" - -void rt_platform_init(void) -{ -#ifdef RT_USING_DFS - /* initilize sd card */ -#ifdef RT_USING_DFS_ELMFAT - rt_hw_sdcard_init(); -#endif - -#ifdef RT_USING_MTD_NAND - rt_hw_mtd_nand_init(); -#endif - -#ifdef RT_USING_MTD_NOR - sst25vfxx_mtd_init("nor", 0, RT_UINT32_MAX); -#endif - -#endif /* RT_USING_DFS */ - -#ifdef RT_USING_RTGUI - /* initilize touch panel */ - rtgui_touch_hw_init("spi21"); - - /* initilize ra8875 lcd controller */ - ra8875_init(); - - /* initilize key module */ - rt_hw_key_init(); -#endif /* RT_USING_RTGUI */ - - rt_thread_delay(50); - rt_device_init_all(); -} - diff --git a/bsp/simulator/rtconfig.h b/bsp/simulator/rtconfig.h index 214a4dcf1e..24941a0ae8 100644 --- a/bsp/simulator/rtconfig.h +++ b/bsp/simulator/rtconfig.h @@ -74,7 +74,7 @@ /* SECTION: Device System */ /* Using Device System */ #define RT_USING_DEVICE -#define RT_USING_SERIAL +//#define RT_USING_SERIAL //#define RT_USING_UART1 /* SECTION: Console options */ diff --git a/bsp/simulator/sd_sim.c b/bsp/simulator/sd_sim.c deleted file mode 100644 index bb83fcc37d..0000000000 --- a/bsp/simulator/sd_sim.c +++ /dev/null @@ -1,193 +0,0 @@ -#include -#include -#include -#include - -// #define SD_TRACE rt_kprintf -#define SD_TRACE(...) - -//#define SDCARD_SIM "F:\\Project\\tools\\SDCARD" -#define SDCARD_SIM "sd.bin" -#define SDCARD_SIZE (16*1024*1024) //16M - -struct sdcard_device -{ - struct rt_device parent; - FILE* file; -}; -static struct sdcard_device _sdcard; - -#define SDCARD_DEVICE(device) (( struct sdcard_device*)(device)) - -static rt_mutex_t lock; - -/* RT-Thread device interface */ - -static rt_err_t rt_sdcard_init(rt_device_t dev) -{ - return RT_EOK; -} - -static rt_err_t rt_sdcard_open(rt_device_t dev, rt_uint16_t oflag) -{ - return RT_EOK; -} - -static rt_err_t rt_sdcard_close(rt_device_t dev) -{ - return RT_EOK; -} - -/* position: block page address, not bytes address - * buffer: - * size : how many blocks - */ -static rt_size_t rt_sdcard_read(rt_device_t device, rt_off_t position, void* buffer, rt_size_t size) -{ - struct sdcard_device * sd; - int result = 0; - - SD_TRACE("sd read: pos %d, size %d\n", position, size); - - rt_mutex_take(lock, RT_WAITING_FOREVER); - sd = SDCARD_DEVICE(device); - fseek(sd->file, position * SECTOR_SIZE, SEEK_SET); - - result = fread(buffer, size * SECTOR_SIZE, 1, sd->file); - if (result < 0) - goto _err; - - rt_mutex_release(lock); - return size; - -_err: - SD_TRACE("sd read errors!\n"); - rt_mutex_release(lock); - return 0; -} - -/* position: block page address, not bytes address - * buffer: - * size : how many blocks - */ -static rt_size_t rt_sdcard_write(rt_device_t device, rt_off_t position, const void* buffer, rt_size_t size) -{ - struct sdcard_device * sd; - int result = 0; - - SD_TRACE("sst write: pos %d, size %d\n", position, size); - - rt_mutex_take(lock, RT_WAITING_FOREVER); - sd = SDCARD_DEVICE(device); - fseek(sd->file, position * SECTOR_SIZE, SEEK_SET); - - result = fwrite(buffer, size * SECTOR_SIZE, 1, sd->file); - if (result < 0) - goto _err; - - rt_mutex_release(lock); - return size; - -_err: - SD_TRACE("sd write errors!\n"); - rt_mutex_release(lock); - return 0; -} - -static rt_err_t rt_sdcard_control(rt_device_t dev, rt_uint8_t cmd, void *args) -{ - struct sdcard_device * sd; - unsigned int size; - - RT_ASSERT(dev != RT_NULL); - - sd = SDCARD_DEVICE(dev); - - if (cmd == RT_DEVICE_CTRL_BLK_GETGEOME) - { - struct rt_device_blk_geometry *geometry; - - geometry = (struct rt_device_blk_geometry *)args; - if (geometry == RT_NULL) return -RT_ERROR; - - geometry->bytes_per_sector = SECTOR_SIZE; - geometry->block_size = SECTOR_SIZE; - - fseek(sd->file, 0, SEEK_END); - size = ftell(sd->file); - - geometry->sector_count = size/SECTOR_SIZE; - } - return RT_EOK; -} - - -rt_err_t rt_hw_sdcard_init(const char * spi_device_name) -{ - int size; - rt_uint32_t id, total_block; - struct sdcard_device * sd; - struct rt_device * device; - - sd = &_sdcard; - device = &(sd->parent); - - lock = rt_mutex_create("lock", RT_IPC_FLAG_FIFO); - - /* open sd card file, if not exist, then create it */ - sd->file = fopen(SDCARD_SIM, "rb+"); - if (sd->file == NULL) - { - /* create a file to simulate sd card */ - sd->file = fopen(SDCARD_SIM, "wb+"); - - fseek(sd->file, 0, SEEK_END); - size = ftell(sd->file); - - fseek(sd->file, 0, SEEK_SET ); - if (size < SDCARD_SIZE) - { - int i; - unsigned char* ptr; - - ptr = (unsigned char*) malloc (1024 * 1024); - if (ptr == NULL) - { - SD_TRACE("malloc error, no memory!\n"); - return RT_ERROR; - } - memset(ptr, 0x0, 1024 * 1024); - - fseek(sd->file, 0, SEEK_SET); - - for(i=0; i<(SDCARD_SIZE / (1024*1024)); i++) - fwrite(ptr, 1024 * 1024, 1, sd->file); - - free(ptr); - } - } - fseek(sd->file, 0, SEEK_SET); - - device->type = RT_Device_Class_Block; - device->init = rt_sdcard_init; - device->open = rt_sdcard_open; - device->close = rt_sdcard_close; - device->read = rt_sdcard_read; - device->write = rt_sdcard_write; - device->control = rt_sdcard_control; - device->user_data = NULL; - - rt_device_register(device, "sd0", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE); - - return RT_EOK; -} - -#ifdef RT_USING_FINSH -#include -void eraseall(void) -{ - printf("had not implemented yet!\n"); -} -FINSH_FUNCTION_EXPORT(eraseall, erase all block in SPI flash); -#endif diff --git a/bsp/simulator/serial.c b/bsp/simulator/serial.c deleted file mode 100644 index 0777bff928..0000000000 --- a/bsp/simulator/serial.c +++ /dev/null @@ -1,161 +0,0 @@ -/* -****************************************************************************** -* By : parai -* email:parai@foxmail.com -* 这并不是一个真的串口设备,只是为了能够让内核打印信息而创建 -****************************************************************************** -*/ - -#include "rtthread.h" - -#define _DEBUG_SERIAL 0 -#include "serial.h" -#include -struct rt_device serial_device; -extern struct serial_int_rx serial_rx; - -/*@{*/ - -/* RT-Thread Device Interface */ -/** - * This function initializes serial - */ -static rt_err_t rt_serial_init (rt_device_t dev) -{ - if (!(dev->flag & RT_DEVICE_FLAG_ACTIVATED)) - { - if (dev->flag & RT_DEVICE_FLAG_INT_RX) - { - rt_memset(serial_rx.rx_buffer, 0, - sizeof(serial_rx.rx_buffer)); - serial_rx.read_index = 0; - serial_rx.save_index = 0; - } - - dev->flag |= RT_DEVICE_FLAG_ACTIVATED; - } - return RT_EOK; -} - -static rt_err_t rt_serial_open(rt_device_t dev, rt_uint16_t oflag){ -#if _DEBUG_SERIAL==1 - printf("in rt_serial_open()\n"); -#endif - return RT_EOK; -} - -static rt_err_t rt_serial_close(rt_device_t dev) -{ -#if _DEBUG_SERIAL==1 - printf("in rt_serial_close()\n"); -#endif - return RT_EOK; -} -static rt_size_t rt_serial_read (rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size) -{ - rt_uint8_t* ptr; - rt_err_t err_code; - - ptr = buffer; - err_code = RT_EOK; - - if (dev->flag & RT_DEVICE_FLAG_INT_RX) - { - /* interrupt mode Rx */ - while (size) - { - rt_base_t level; - - /* disable interrupt */ - level = rt_hw_interrupt_disable(); - - if (serial_rx.read_index != serial_rx.save_index) - { - /* read a character */ - *ptr++ = serial_rx.rx_buffer[serial_rx.read_index]; - size--; - - /* move to next position */ - serial_rx.read_index ++; - if (serial_rx.read_index >= SERIAL_RX_BUFFER_SIZE) - serial_rx.read_index = 0; - } - else - { - /* set error code */ - err_code = -RT_EEMPTY; - - /* enable interrupt */ - rt_hw_interrupt_enable(level); - break; - } - - /* enable interrupt */ - rt_hw_interrupt_enable(level); - } - } - - - /* set error code */ - rt_set_errno(err_code); - return (rt_uint32_t)ptr - (rt_uint32_t)buffer; -} - -static rt_size_t rt_serial_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) -{ -#if _DEBUG_SERIAL==1 - printf("in rt_serial_write()\n"); -#endif - printf("%s",(char*)buffer); - return size; -} - -static rt_err_t rt_serial_control (rt_device_t dev, rt_uint8_t cmd, void *args) -{ - RT_ASSERT(dev != RT_NULL); - - switch (cmd){ - case RT_DEVICE_CTRL_SUSPEND: - /* suspend device */ - dev->flag |= RT_DEVICE_FLAG_SUSPENDED; - break; - - case RT_DEVICE_CTRL_RESUME: - /* resume device */ - dev->flag &= ~RT_DEVICE_FLAG_SUSPENDED; - break; - } - - return RT_EOK; -} - -/* - * serial register - */ -static rt_err_t rt_hw_serial_register(rt_device_t device, const char* name, rt_uint32_t flag) -{ - RT_ASSERT(device != RT_NULL); -#if _DEBUG_SERIAL==1 - printf("in rt_serial_register()\n"); -#endif - device->type = RT_Device_Class_Char; - device->rx_indicate = RT_NULL; - device->tx_complete = RT_NULL; - device->init = rt_serial_init; - device->open = rt_serial_open; - device->close = rt_serial_close; - device->read = rt_serial_read; - device->write = rt_serial_write; - device->control = rt_serial_control; - device->user_data = RT_NULL; - - /* register a character device */ - return rt_device_register(device, name, RT_DEVICE_FLAG_RDWR | flag); -} - -rt_err_t rt_hw_serial_init(void) -{ - return rt_hw_serial_register(&serial_device,"sci0", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM); -} - diff --git a/bsp/simulator/serial.h b/bsp/simulator/serial.h deleted file mode 100644 index fe82957b34..0000000000 --- a/bsp/simulator/serial.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -********************************************************************************************************* -* MC9S12DP256/DG128 Specific code -* BANKED MEMORY MODEL -* -* File : rthw.c -* By : parai -* email:parai@foxmail.com -*******************************************************************************************************/ - -#ifndef __RT_HW_SERIAL_H__ -#define __RT_HW_SERIAL_H__ - -#define SERIAL_RX_BUFFER_SIZE 80 -struct serial_int_rx -{ - rt_uint8_t rx_buffer[SERIAL_RX_BUFFER_SIZE]; - rt_uint32_t read_index, save_index; -}; - -rt_err_t rt_hw_serial_init(void); -#endif diff --git a/bsp/simulator/sst25vfxx_mtd.h b/bsp/simulator/sst25vfxx_mtd.h deleted file mode 100644 index 6b08662474..0000000000 --- a/bsp/simulator/sst25vfxx_mtd.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * File : sst25vfxx_mtd.h - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006 - 2011, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2011-12-16 aozima the first version - * 2012-02-01 mbbill MTD driver version - */ - -#ifndef SST25VFXX_MTD_H -#define SST25VFXX_MTD_H - -#include -#include - -rt_err_t sst25vfxx_mtd_init(const char *spi_device_name, rt_uint32_t block_start, rt_uint32_t block_end); - -#endif diff --git a/bsp/simulator/sst25vfxx_mtd_sim.c b/bsp/simulator/sst25vfxx_mtd_sim.c deleted file mode 100644 index d2c4117302..0000000000 --- a/bsp/simulator/sst25vfxx_mtd_sim.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * File : rtdef.h - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2012-10-21 prife the first version - */ - -#include -#include -#include -#include -#include "sst25vfxx_mtd.h" - -#ifdef RT_USING_MTD_NOR -#define NOR_SIM "nor.bin" -/* JEDEC Manufacturers ID */ -#define MF_ID (0xBF) -/* JEDEC Device ID : Memory Type */ -#define MT_ID (0x25) -/* JEDEC Device ID: Memory Capacity */ -#define MC_ID_SST25VF016 (0x41) -#define MC_ID_SST25VF032 (0x4A) -#define MC_ID_SST25VF064 (0x4B) - -#define BLOCK_SIZE (64*1024) - - -#define SST25_MTD(device) ((struct sst25_mtd*)(device)) -struct sst25_mtd -{ - struct rt_mtd_nor_device parent; - FILE * file; -}; -static struct sst25_mtd _sst25_mtd; - -static struct rt_mutex flash_lock; - -/* RT-Thread MTD device interface */ -static rt_uint32_t sst25vfxx_read_id(struct rt_mtd_nor_device* device) -{ - rt_uint8_t id_recv[3] = {MF_ID, MT_ID, MC_ID_SST25VF016}; - - return (id_recv[0] << 16) | (id_recv[1] << 8) | id_recv[2]; -} - -static int sst25vfxx_read(struct rt_mtd_nor_device* device, rt_off_t position, rt_uint8_t *data, rt_size_t size) -{ - struct sst25_mtd *sst25; - int result; - - sst25 = SST25_MTD(device); - RT_ASSERT(sst25 != RT_NULL); - - rt_mutex_take(&flash_lock, RT_WAITING_FOREVER); - - fseek(sst25->file, position, SEEK_SET); - result = fread(data, size, 1, sst25->file); - if (result < 0) - rt_kprintf("sst read error.\n"); - - rt_mutex_release(&flash_lock); - return size; -} - -static int sst25vfxx_write(struct rt_mtd_nor_device* device, rt_off_t position, - const rt_uint8_t *data, rt_size_t size) -{ - struct sst25_mtd *sst25; - int result; - - sst25 = SST25_MTD(device); - RT_ASSERT(sst25 != RT_NULL); - - rt_mutex_take(&flash_lock, RT_WAITING_FOREVER); - - fseek(sst25->file, position, SEEK_SET); - result = fwrite(data, size, 1, sst25->file); - if (result < 0) - rt_kprintf("sst write error.\n"); - - rt_mutex_release(&flash_lock); - return size; -} - -static char block_buffer[BLOCK_SIZE]; - -static rt_err_t sst25vfxx_erase_block(struct rt_mtd_nor_device* device, rt_uint32_t block) -{ - struct sst25_mtd *sst25; - int result; - - sst25 = SST25_MTD(device); - - RT_ASSERT(sst25 != RT_NULL); - - rt_mutex_take(&flash_lock, RT_WAITING_FOREVER); - - memset(block_buffer, 0xFF, BLOCK_SIZE); - fseek(sst25->file, block, SEEK_SET); - - result = fwrite(block_buffer, BLOCK_SIZE, 1, sst25->file); - if (result < 0) - rt_kprintf("sst write error.\n"); - - rt_mutex_release(&flash_lock); - return RT_EOK; -} - -const static struct rt_mtd_nor_driver_ops sst25vfxx_mtd_ops = -{ - sst25vfxx_read_id, - sst25vfxx_read, - sst25vfxx_write, - sst25vfxx_erase_block, -}; -static rt_err_t sst25vfxx_hw_init(struct sst25_mtd *mtd) -{ - mtd = mtd; - return RT_EOK; -} - -/** - * SST25vfxx API - */ -rt_err_t sst25vfxx_mtd_init(const char * nor_name, - rt_uint32_t block_start, - rt_uint32_t block_end) -{ - rt_uint32_t id, total_block; - struct sst25_mtd * sst25; - struct rt_mtd_nor_device *mtd; - - - sst25 = &_sst25_mtd; - mtd = &(sst25->parent); - - /* set page size and block size */ - mtd->block_size = 64 * 1024; /* 64kByte */ - mtd->ops = &sst25vfxx_mtd_ops; - - /* initialize mutex */ - if (rt_mutex_init(&flash_lock, nor_name, RT_IPC_FLAG_FIFO) != RT_EOK) - { - rt_kprintf("init sd lock mutex failed\n"); - } - - /* initialize flash */ - id = sst25vfxx_read_id(mtd); - switch (id & 0xff) - { - case MC_ID_SST25VF016: - total_block = (16 * 1024 * 1024 / 8) / mtd->block_size; - break; - case MC_ID_SST25VF032: - total_block = (32 * 1024 * 1024 / 8) / mtd->block_size; - break; - case MC_ID_SST25VF064: - total_block = (64 * 1024 * 1024 / 8) / mtd->block_size; - break; - default: - rt_kprintf("SST25 detection error, id: %x\n", id); - return -RT_ERROR; - } - - if ((block_end == RT_UINT32_MAX) || (block_end == 0)) - { - block_end = total_block; - } - else if (block_end > total_block) - { - rt_kprintf("SST25 total block: %d, out of block\n", total_block); - return -RT_ERROR; - } - - mtd->block_start = block_start; - mtd->block_end = block_end; - - /* open nor file, if not exist, then create it */ - sst25->file = fopen(NOR_SIM, "rb+"); - if (sst25->file == NULL) - { - int i; - /* create a file to simulate nor */ - sst25->file = fopen(NOR_SIM, "wb+"); - - memset(block_buffer, 0xFF, sizeof(block_buffer)); - for(i=0; ifile, i * BLOCK_SIZE, SEEK_SET); - fwrite(block_buffer, BLOCK_SIZE, 1, sst25->file); - } - } - - fseek(sst25->file, 0, SEEK_SET); - - /* initialize hardware */ - sst25vfxx_hw_init(&_sst25_mtd); - - /* register MTD device */ - rt_mtd_nor_register_device("nor", mtd); - - return RT_EOK; -} - -#ifdef RT_USING_FINSH -#include -void nor_erase(void) -{ - rt_uint32_t index; - struct rt_mtd_nor_device *mtd; - - mtd = SST25_MTD(&_sst25_mtd); - for (index = mtd->block_start; index < mtd->block_end; index ++) - { - sst25vfxx_erase_block(mtd, index * mtd->block_size); - } -} -FINSH_FUNCTION_EXPORT(nor_erase, erase all block in SPI flash); -#endif - -#endif diff --git a/bsp/simulator/startup.c b/bsp/simulator/startup.c deleted file mode 100644 index 8ce9257c08..0000000000 --- a/bsp/simulator/startup.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * File : startup.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006, RT-Thread Develop Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://openlab.rt-thread.com/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2012-09-03 prife first implementation - */ - -#include -#include - -#include "board.h" - -/** - * @addtogroup win32 - */ -#define HEAP_SIZE (1024*1024*10) -static rt_uint8_t * heap; - -void vs_heap_init(void) -{ - heap = malloc(HEAP_SIZE); - if (heap == RT_NULL) - rt_kprintf("there is no memory in pc."); -} -/*@{*/ - -extern int rt_application_init(void); -#ifdef RT_USING_FINSH -extern void finsh_system_init(void); -extern void finsh_set_device(const char* device); -#endif - -/** - * This function will startup RT-Thread RTOS. - */ -void rtthread_startup(void) -{ - /* init board */ - rt_hw_board_init(); - - /* show version */ - rt_show_version(); - - /* init tick */ - rt_system_tick_init(); - - /* init kernel object */ - rt_system_object_init(); - - /* init timer system */ - rt_system_timer_init(); - -#ifdef RT_USING_HEAP - /* init memory system */ -#if (MSVC) - vs_heap_init(); -#endif - rt_system_heap_init((void*)heap, (void*)&heap[HEAP_SIZE-1]); -#endif - - /* init scheduler system */ - rt_system_scheduler_init(); - - /* init all device */ -#ifdef RT_USING_DEVICE - rt_device_init_all(); -#endif - /* init application */ - rt_application_init(); - - /* init timer thread */ - rt_system_timer_thread_init(); - - /* init idle thread */ - rt_thread_idle_init(); - - /* start scheduler */ - rt_system_scheduler_start(); - - /* never reach here */ - return ; -} - -int main(void) -{ - /* disable interrupt first */ - rt_hw_interrupt_disable(); - - /* startup RT-Thread RTOS */ - rtthread_startup(); - - return 0; -} - -/*@}*/ diff --git a/bsp/simulator/usart_sim.c b/bsp/simulator/usart_sim.c deleted file mode 100644 index d77328bf32..0000000000 --- a/bsp/simulator/usart_sim.c +++ /dev/null @@ -1,131 +0,0 @@ -#include -#include -#include -#include -#include "serial.h" - -struct serial_int_rx serial_rx; -extern struct rt_device serial_device; - -/* - * Handler for OSKey Thread - */ -static HANDLE OSKey_Thread; -static DWORD OSKey_ThreadID; - -static DWORD WINAPI ThreadforKeyGet(LPVOID lpParam); -void rt_hw_usart_init(void) -{ - - /* - * create serial thread that revice key input from keyboard - */ - - OSKey_Thread = CreateThread(NULL, - 0, - (LPTHREAD_START_ROUTINE)ThreadforKeyGet, - 0, - CREATE_SUSPENDED, - &OSKey_ThreadID); - if(OSKey_Thread == NULL) - { - //Display Error Message - - return; - } - SetThreadPriority(OSKey_Thread, - THREAD_PRIORITY_NORMAL); - SetThreadPriorityBoost(OSKey_Thread, - TRUE); - SetThreadAffinityMask(OSKey_Thread, - 0x01); - /* - * Start OS get key Thread - */ - ResumeThread(OSKey_Thread); - -} - -/* - * () 0xe04b - * () 0xe048 - * () 0xe04d - * () 0xe050 - */ -static int savekey(unsigned char key) -{ - /* save on rx buffer */ - { - rt_base_t level; - - /* disable interrupt */ - //ʱرжϣΪҪuartݽṹ - level = rt_hw_interrupt_disable(); - - /* save character */ - serial_rx.rx_buffer[serial_rx.save_index] = key; - serial_rx.save_index ++; - //Ĵsave_indexǷѾβתͷΪһλ - if (serial_rx.save_index >= SERIAL_RX_BUFFER_SIZE) - serial_rx.save_index = 0; - - //ʾתsave_index׷read_indexread_indexһɵ - /* if the next position is read index, discard this 'read char' */ - if (serial_rx.save_index == serial_rx.read_index) - { - serial_rx.read_index ++; - if (serial_rx.read_index >= SERIAL_RX_BUFFER_SIZE) - serial_rx.read_index = 0; - } - - /* enable interrupt */ - //uartݽṹѾɣʹж - rt_hw_interrupt_enable(level); - } - - /* invoke callback */ - if (serial_device.rx_indicate != RT_NULL) - { - rt_size_t rx_length; - - /* get rx length */ - rx_length = serial_rx.read_index > serial_rx.save_index ? - SERIAL_RX_BUFFER_SIZE - serial_rx.read_index + serial_rx.save_index : - serial_rx.save_index - serial_rx.read_index; - - serial_device.rx_indicate(&serial_device, rx_length); - } - return 0; -} -static DWORD WINAPI ThreadforKeyGet(LPVOID lpParam) -{ - unsigned char key; - - (void)lpParam; //prevent compiler warnings - - for(;;) - { - key = _getch();//getchar(); - if (key == 0xE0) - { - key = _getch(); - - if (key == 0x48) //up key , 0x1b 0x5b 0x41 - { - savekey(0x1b); - savekey(0x5b); - savekey(0x41); - } - else if (key == 0x50)//0x1b 0x5b 0x42 - { - savekey(0x1b); - savekey(0x5b); - savekey(0x42); - } - - continue; - } - - savekey(key); - } -} /*** ThreadforKeyGet ***/ \ No newline at end of file diff --git a/bsp/simulator/vs2005.vcproj b/bsp/simulator/vs2005.vcproj index 55c3413165..65178e610b 100644 --- a/bsp/simulator/vs2005.vcproj +++ b/bsp/simulator/vs2005.vcproj @@ -40,7 +40,7 @@ - - - - - - - - - - - - @@ -716,6 +692,46 @@ + + + + + + + + + + + + + + + + + + + +