summaryrefslogtreecommitdiff
path: root/bsp/simlinux/drivers
diff options
context:
space:
mode:
authorprife <[email protected]>2013-01-22 17:08:54 +0800
committerprife <[email protected]>2013-01-22 17:08:54 +0800
commit832bbb9fe2a0d6aa04729627018536abb75f8dd3 (patch)
treed7865545134a5cd9c67be4c68f088c5d8e6c9c54 /bsp/simlinux/drivers
parentf2636ea813cac0b63729ae25127928895d3bb040 (diff)
remove bsp/simlinux
Diffstat (limited to 'bsp/simlinux/drivers')
-rwxr-xr-xbsp/simlinux/drivers/SConscript22
-rwxr-xr-xbsp/simlinux/drivers/board.c104
-rwxr-xr-xbsp/simlinux/drivers/board.h33
-rwxr-xr-xbsp/simlinux/drivers/nanddrv_file.c399
-rwxr-xr-xbsp/simlinux/drivers/sd_sim.c193
-rwxr-xr-xbsp/simlinux/drivers/sdl_fb.c328
-rwxr-xr-xbsp/simlinux/drivers/serial.c177
-rwxr-xr-xbsp/simlinux/drivers/serial.h22
-rwxr-xr-xbsp/simlinux/drivers/sst25vfxx_mtd.h24
-rwxr-xr-xbsp/simlinux/drivers/sst25vfxx_mtd_sim.c227
-rwxr-xr-xbsp/simlinux/drivers/usart_sim.c192
11 files changed, 0 insertions, 1721 deletions
diff --git a/bsp/simlinux/drivers/SConscript b/bsp/simlinux/drivers/SConscript
deleted file mode 100755
index 079d329c0e..0000000000
--- a/bsp/simlinux/drivers/SConscript
+++ /dev/null
@@ -1,22 +0,0 @@
-from building import *
-
-cwd = GetCurrentDir()
-src = Glob('*.c')
-
-# remove no need file.
-if GetDepend('RT_USING_RTGUI') == False:
- SrcRemove(src, 'sdl_fb.c')
-if GetDepend('RT_USING_DFS') == False or GetDepend('RT_USING_DFS_ELMFAT') == False:
- SrcRemove(src, 'sd_sim.c')
-if GetDepend('RT_USING_DFS') == False or GetDepend('RT_USING_MTD_NAND') == False:
- SrcRemove(src, 'nanddrv_file.c')
-if GetDepend('RT_USING_DFS') == False or GetDepend('RT_USING_MTD_NOR') == False:
- SrcRemove(src, 'sst25vfxx_mtd_sim.c')
-#if GetDepend('RT_USING_SERIAL') == False:
-# SrcRemove(src, 'usart_sim.c')
-
-CPPPATH = [cwd]
-
-group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
-
-Return('group')
diff --git a/bsp/simlinux/drivers/board.c b/bsp/simlinux/drivers/board.c
deleted file mode 100755
index f497561bcb..0000000000
--- a/bsp/simlinux/drivers/board.c
+++ /dev/null
@@ -1,104 +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 <rthw.h>
-#include <rtthread.h>
-#include "board.h"
-#include <stdlib.h>
-
-/**
- * @addtogroup simulator on win32
- */
-rt_uint8_t *heap;
-
-rt_uint8_t *rt_hw_sram_init(void)
-{
- rt_uint8_t *heap;
- heap = malloc(RT_HEAP_SIZE);
- if (heap == RT_NULL)
- {
- rt_kprintf("there is no memory in pc.");
-#ifdef _WIN32
- _exit(1);
-#else
- exit(1);
-#endif
- }
- return heap;
-}
-
-#ifdef _WIN32
-#include <windows.h>
-#endif
-
-void rt_hw_win32_low_cpu(void)
-{
-#ifdef _WIN32
- /* in windows */
- Sleep(1000);
-#else
- /* in linux */
- sleep(1);
-#endif
-}
-
-#ifdef _WIN32
-#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
-#endif
-
-#if defined(RT_USING_FINSH)
-#include <finsh.h>
-void rt_hw_exit(void)
-{
- rt_kprintf("RT-Thread, bye\n");
-#if !defined(_WIN32) && defined(__GNUC__)
- /* *
- * getchar reads key from buffer, while finsh need an non-buffer getchar
- * in windows, getch is such an function, in linux, we had to change
- * the behaviour of terminal to get an non-buffer getchar.
- * in usart_sim.c, set_stty is called to do this work
- * */
- {
- extern void restore_stty(void);
- restore_stty();
- }
-#endif
- exit(0);
-}
-FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_exit, exit, exit rt - thread);
-#endif /* RT_USING_FINSH */
-
-/**
- * This function will initial win32
- */
-void rt_hw_board_init()
-{
- /* init system memory */
- heap = rt_hw_sram_init();
-
-//#if defined(RT_USING_USART)
- rt_hw_usart_init();
-//#endif
-
-#if defined(RT_USING_CONSOLE)
- rt_hw_serial_init();
- rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
-#endif
-}
-/*@}*/
diff --git a/bsp/simlinux/drivers/board.h b/bsp/simlinux/drivers/board.h
deleted file mode 100755
index 7edb856505..0000000000
--- a/bsp/simlinux/drivers/board.h
+++ /dev/null
@@ -1,33 +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_init(void);
-rt_uint8_t *rt_hw_sram_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 *, unsigned int , unsigned int);
-void pcap_netif_hw_init(void);
-void rt_platform_init(void);
-void rt_hw_usart_init(void);
-void rt_hw_serial_init(void);
-void rt_hw_sdl_start(void);
-void rt_hw_win32_low_cpu(void);
-
-void rt_hw_exit(void);
-#endif
diff --git a/bsp/simlinux/drivers/nanddrv_file.c b/bsp/simlinux/drivers/nanddrv_file.c
deleted file mode 100755
index 770751ac79..0000000000
--- a/bsp/simlinux/drivers/nanddrv_file.c
+++ /dev/null
@@ -1,399 +0,0 @@
-#include <rtdevice.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define NAND_SIM "nand.bin"
-#if 1
-#define OOB_SIZE 64
-#define PAGE_DATA_SIZE 2048
-#define PAGE_SIZE (2048 + 64)
-#define PAGE_PER_BLOCK 64
-#define BLOCK_SIZE (PAGE_SIZE * PAGE_PER_BLOCK)
-#define BLOCK_NUM 512
-// #define BLOCK_NUM 2048
-#else
-#define OOB_SIZE 16
-#define PAGE_SIZE (512 + OOB_SIZE)
-#define PAGE_PER_BLOCK 32
-#define BLOCK_SIZE (PAGE_SIZE * PAGE_PER_BLOCK)
-#define BLOCK_NUM 512
-#endif
-
-#define ECC_SIZE ((PAGE_DATA_SIZE) * 3 / 256)
-
-static unsigned char block_data[BLOCK_SIZE];
-static struct rt_mtd_nand_device _nanddrv_file_device;
-static FILE *file = NULL;
-
-static rt_uint8_t CountBitsInByte(rt_uint8_t byte)
-{
- rt_uint8_t count = 0;
-
- while (byte > 0)
- {
- if (byte & 1)
- {
- count++;
- }
- byte >>= 1;
- }
-
- return count;
-}
-
-static void Compute256(const rt_uint8_t *data, rt_uint8_t *code)
-{
- rt_uint32_t i;
- rt_uint8_t columnSum = 0;
- rt_uint8_t evenLineCode = 0;
- rt_uint8_t oddLineCode = 0;
- rt_uint8_t evenColumnCode = 0;
- rt_uint8_t oddColumnCode = 0;
-
- // Xor all bytes together to get the column sum;
- // At the same time, calculate the even and odd line codes
- for (i = 0; i < 256; i++)
- {
- columnSum ^= data[i];
-
- // If the xor sum of the byte is 0, then this byte has no incidence on
- // the computed code; so check if the sum is 1.
- if ((CountBitsInByte(data[i]) & 1) == 1)
- {
- // Parity groups are formed by forcing a particular index bit to 0
- // (even) or 1 (odd).
- // Example on one byte:
- //
- // bits (dec) 7 6 5 4 3 2 1 0
- // (bin) 111 110 101 100 011 010 001 000
- // '---'---'---'----------.
- // |
- // groups P4' ooooooooooooooo eeeeeeeeeeeeeee P4 |
- // P2' ooooooo eeeeeee ooooooo eeeeeee P2 |
- // P1' ooo eee ooo eee ooo eee ooo eee P1 |
- // |
- // We can see that: |
- // - P4 -> bit 2 of index is 0 --------------------'
- // - P4' -> bit 2 of index is 1.
- // - P2 -> bit 1 of index if 0.
- // - etc...
- // We deduce that a bit position has an impact on all even Px if
- // the log2(x)nth bit of its index is 0
- // ex: log2(4) = 2, bit2 of the index must be 0 (-> 0 1 2 3)
- // and on all odd Px' if the log2(x)nth bit of its index is 1
- // ex: log2(2) = 1, bit1 of the index must be 1 (-> 0 1 4 5)
- //
- // As such, we calculate all the possible Px and Px' values at the
- // same time in two variables, evenLineCode and oddLineCode, such as
- // evenLineCode bits: P128 P64 P32 P16 P8 P4 P2 P1
- // oddLineCode bits: P128' P64' P32' P16' P8' P4' P2' P1'
- //
- evenLineCode ^= (255 - i);
- oddLineCode ^= i;
- }
- }
-
- // At this point, we have the line parities, and the column sum. First, We
- // must caculate the parity group values on the column sum.
- for (i = 0; i < 8; i++)
- {
- if (columnSum & 1)
- {
- evenColumnCode ^= (7 - i);
- oddColumnCode ^= i;
- }
- columnSum >>= 1;
- }
-
- // Now, we must interleave the parity values, to obtain the following layout:
- // Code[0] = Line1
- // Code[1] = Line2
- // Code[2] = Column
- // Line = Px' Px P(x-1)- P(x-1) ...
- // Column = P4' P4 P2' P2 P1' P1 PadBit PadBit
- code[0] = 0;
- code[1] = 0;
- code[2] = 0;
-
- for (i = 0; i < 4; i++)
- {
- code[0] <<= 2;
- code[1] <<= 2;
- code[2] <<= 2;
-
- // Line 1
- if ((oddLineCode & 0x80) != 0)
- {
- code[0] |= 2;
- }
-
- if ((evenLineCode & 0x80) != 0)
- {
- code[0] |= 1;
- }
-
- // Line 2
- if ((oddLineCode & 0x08) != 0)
- {
- code[1] |= 2;
- }
-
- if ((evenLineCode & 0x08) != 0)
- {
- code[1] |= 1;
- }
-
- // Column
- if ((oddColumnCode & 0x04) != 0)
- {
- code[2] |= 2;
- }
-
- if ((evenColumnCode & 0x04) != 0)
- {
- code[2] |= 1;
- }
-
- oddLineCode <<= 1;
- evenLineCode <<= 1;
- oddColumnCode <<= 1;
- evenColumnCode <<= 1;
- }
-
- // Invert codes (linux compatibility)
- code[0] = (~(rt_uint32_t)code[0]);
- code[1] = (~(rt_uint32_t)code[1]);
- code[2] = (~(rt_uint32_t)code[2]);
-}
-
-void ecc_hamming_compute256x(const rt_uint8_t *pucData, rt_uint32_t dwSize, rt_uint8_t *puCode)
-{
- while (dwSize > 0)
- {
- Compute256(pucData, puCode) ;
-
- pucData += 256;
- puCode += 3;
- dwSize -= 256;
- }
-}
-
-/* read chip id */
-static rt_uint32_t nanddrv_file_read_id(struct rt_mtd_nand_device *device)
-{
- return 0x00;
-}
-
-/* read/write/move page */
-static rt_err_t nanddrv_file_read_page(struct rt_mtd_nand_device *device,
- rt_off_t page,
- rt_uint8_t *data, rt_uint32_t data_len,
- rt_uint8_t *spare, rt_uint32_t spare_len)
-{
- rt_uint32_t offset;
- rt_uint8_t oob_ecc [ECC_SIZE];
- rt_uint8_t ecc [ECC_SIZE];
-
- page = page + device->block_start * device->pages_per_block;
-
- if (page / device->pages_per_block > device->block_end)
- {
- return -RT_EIO;
- }
-
- /* write page */
- offset = page * PAGE_SIZE;
- if (data != NULL && data_len != 0)
- {
- fseek(file, offset, SEEK_SET);
- fread(data, data_len, 1, file);
- if (data_len == PAGE_DATA_SIZE)
- {
- /* read ecc size */
- fread(oob_ecc, ECC_SIZE, 1, file);
-
- /* verify ECC */
- ecc_hamming_compute256x(data, PAGE_DATA_SIZE, &ecc[0]);
- if (memcmp(&oob_ecc[0], &ecc[0], ECC_SIZE) != 0)
- return -RT_MTD_EECC;
- }
- }
-
- if (spare != NULL && spare_len)
- {
- offset = page * PAGE_SIZE + PAGE_DATA_SIZE;
- fseek(file, offset, SEEK_SET);
- fread(spare, spare_len, 1, file);
- }
-
- return RT_EOK;
-}
-
-static rt_err_t nanddrv_file_write_page(struct rt_mtd_nand_device *device,
- rt_off_t page,
- const rt_uint8_t *data, rt_uint32_t data_len,
- const rt_uint8_t *oob, rt_uint32_t spare_len)
-{
- rt_uint32_t offset;
- rt_uint8_t ecc[ECC_SIZE];
-
- page = page + device->block_start * device->pages_per_block;
- if (page / device->pages_per_block > device->block_end)
- {
- return -RT_EIO;
- }
-
- /* write page */
- offset = page * PAGE_SIZE;
- if (data != RT_NULL && data_len != 0)
- {
- fseek(file, offset, SEEK_SET);
- fwrite(data, data_len, 1, file);
-
- if (data_len == PAGE_DATA_SIZE)
- {
- /*write the ecc information */
- ecc_hamming_compute256x(data, PAGE_DATA_SIZE, ecc);
-
- fwrite(ecc, ECC_SIZE, 1, file);
- }
- }
-
- if (oob != RT_NULL && spare_len != 0)
- {
- offset = page * PAGE_SIZE + PAGE_DATA_SIZE + ECC_SIZE;
- fseek(file, offset, SEEK_SET);
- fwrite(&oob[ECC_SIZE], spare_len-ECC_SIZE, 1, file);
- }
-
- return RT_EOK;
-}
-
-static rt_err_t nanddrv_file_move_page(struct rt_mtd_nand_device *device, rt_off_t from, rt_off_t to)
-{
- rt_uint32_t offset;
- rt_uint8_t page_buffer[PAGE_DATA_SIZE];
- rt_uint8_t oob_buffer[OOB_SIZE];
-
- from = from + device->block_start * device->pages_per_block;
- to = to + device->block_start * device->pages_per_block;
-
- if (from / device->pages_per_block > device->block_end ||
- to / device->pages_per_block > device->block_end)
- {
- return -RT_EIO;
- }
-
- if (device->plane_num > 1)
- {
- rt_uint32_t mask;
- rt_uint16_t from_block, to_block;
-
- from_block = (rt_uint16_t)(from / PAGE_PER_BLOCK);
- to_block = (rt_uint16_t)(to / PAGE_PER_BLOCK);
- mask = device->plane_num - 1;
-
- if ((from_block & mask) != (to_block & mask))
- {
- rt_kprintf("invalid page copy on the block. from [%d] --> to[%d]\n", from_block, to_block);
- return -RT_EIO;
- }
- }
-
- /* read page */
- offset = from * PAGE_SIZE;
- fseek(file, offset, SEEK_SET);
- fread(page_buffer, sizeof(page_buffer), 1, file);
- fread(oob_buffer, sizeof(oob_buffer), 1, file);
-
- /* write page */
- offset = to * PAGE_SIZE;
- fseek(file, offset, SEEK_SET);
- fwrite(page_buffer, sizeof(page_buffer), 1, file);
- fwrite(oob_buffer, sizeof(oob_buffer), 1, file);
-
- return RT_EOK;
-}
-
-/* erase block */
-static rt_err_t nanddrv_file_erase_block(struct rt_mtd_nand_device *device, rt_uint32_t block)
-{
- if (block > BLOCK_NUM) return -RT_EIO;
-
- /* add the start blocks */
- block = block + device->block_start;
-
- fseek(file, block * BLOCK_SIZE, SEEK_SET);
- fwrite(block_data, sizeof(block_data), 1, file);
-
- return RT_EOK;
-}
-
-const static struct rt_mtd_nand_driver_ops _ops =
-{
- nanddrv_file_read_id,
- nanddrv_file_read_page,
- nanddrv_file_write_page,
- nanddrv_file_move_page,
- nanddrv_file_erase_block,
- RT_NULL,
- RT_NULL,
-};
-
-void nand_eraseall(void);
-
-void rt_hw_mtd_nand_init(void)
-{
- rt_uint16_t ecc_size;
- rt_uint32_t size;
-
- memset(block_data, 0xff, sizeof(block_data));
- /* open file */
- file = fopen(NAND_SIM, "rb+");
- if (file == NULL)
- {
- file = fopen(NAND_SIM, "wb+");
- }
- fseek(file, 0, SEEK_END);
- size = ftell(file);
-
- fseek(file, 0, SEEK_SET);
- if (size < BLOCK_NUM * BLOCK_SIZE)
- {
- rt_uint32_t index;
- fseek(file, 0, SEEK_SET);
- for (index = 0; index < BLOCK_NUM; index ++)
- {
- fwrite(block_data, sizeof(block_data), 1, file);
- }
- }
- fseek(file, 0, SEEK_SET);
-
- ecc_size = (PAGE_DATA_SIZE) * 3 / 256;
- _nanddrv_file_device.plane_num = 2;
- _nanddrv_file_device.oob_size = OOB_SIZE;
- _nanddrv_file_device.oob_free = OOB_SIZE - ecc_size;
- _nanddrv_file_device.page_size = PAGE_DATA_SIZE;
- _nanddrv_file_device.pages_per_block = PAGE_PER_BLOCK;
- _nanddrv_file_device.block_start = 0;
- _nanddrv_file_device.block_end = BLOCK_NUM / 2;
- _nanddrv_file_device.block_total = _nanddrv_file_device.block_end - _nanddrv_file_device.block_start;
- _nanddrv_file_device.ops = &_ops;
-
- rt_mtd_nand_register_device("nand0", &_nanddrv_file_device);
-}
-
-#if defined(RT_USING_FINSH)
-#include <finsh.h>
-void nand_eraseall()
-{
- int index;
- for (index = 0; index < _nanddrv_file_device.block_total; index ++)
- {
- nanddrv_file_erase_block(&_nanddrv_file_device, index);
- }
-}
-FINSH_FUNCTION_EXPORT(nand_eraseall, erase all of block in the nand flash);
-
-#endif //RT_USING_FINSH
diff --git a/bsp/simlinux/drivers/sd_sim.c b/bsp/simlinux/drivers/sd_sim.c
deleted file mode 100755
index 1f39843d3e..0000000000
--- a/bsp/simlinux/drivers/sd_sim.c
+++ /dev/null
@@ -1,193 +0,0 @@
-#include <rtthread.h>
-#include <stdio.h>
-//#include <stdlib.h>
-//#include <string.h>
-#include <dfs_def.h>
-
-// #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;
- 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 <finsh.h>
-void eraseall(void)
-{
- printf("had not implemented yet!\n");
-}
-FINSH_FUNCTION_EXPORT(eraseall, erase all block in SPI flash);
-#endif
diff --git a/bsp/simlinux/drivers/sdl_fb.c b/bsp/simlinux/drivers/sdl_fb.c
deleted file mode 100755
index 752a6fb93c..0000000000
--- a/bsp/simlinux/drivers/sdl_fb.c
+++ /dev/null
@@ -1,328 +0,0 @@
-#include <rtthread.h>
-
-#ifdef _WIN32
-#include <sdl.h>
-#else
-#include <SDL/SDL.h>
-#endif
-#include <rtdevice.h>
-#include <rtgui/driver.h>
-
-#define SDL_SCREEN_WIDTH 800
-#define SDL_SCREEN_HEIGHT 480
-
-struct sdlfb_device
-{
- struct rt_device parent;
-
- SDL_Surface *screen;
- rt_uint16_t width;
- rt_uint16_t height;
-};
-struct sdlfb_device _device;
-
-/* common device interface */
-static rt_err_t sdlfb_init(rt_device_t dev)
-{
- return RT_EOK;
-}
-static rt_err_t sdlfb_open(rt_device_t dev, rt_uint16_t oflag)
-{
- return RT_EOK;
-}
-static rt_err_t sdlfb_close(rt_device_t dev)
-{
- SDL_Quit();
- return RT_EOK;
-}
-
-static rt_mutex_t sdllock;
-static rt_err_t sdlfb_control(rt_device_t dev, rt_uint8_t cmd, void *args)
-{
- struct sdlfb_device *device;
-
- rt_mutex_take(sdllock, RT_WAITING_FOREVER);
- device = (struct sdlfb_device *)dev;
- RT_ASSERT(device != RT_NULL);
- RT_ASSERT(device->screen != RT_NULL);
-
- switch (cmd)
- {
- case RTGRAPHIC_CTRL_GET_INFO:
- {
- struct rt_device_graphic_info *info;
-
- info = (struct rt_device_graphic_info *) args;
- info->bits_per_pixel = 16;
- info->pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565P;
- info->framebuffer = device->screen->pixels;
- info->width = device->screen->w;
- info->height = device->screen->h;
- }
- break;
- case RTGRAPHIC_CTRL_RECT_UPDATE:
- {
- struct rt_device_rect_info *rect;
- rect = (struct rt_device_rect_info *)args;
-
- /* SDL_UpdateRect(_device.screen, rect->x, rect->y, rect->x + rect->w, rect->y + rect->h); */
- SDL_UpdateRect(_device.screen, 0, 0, device->width, device->height);
- }
- break;
- case RTGRAPHIC_CTRL_SET_MODE:
- {
-#if 0
- struct rt_device_rect_info *rect;
-
- rect = (struct rt_device_rect_info *)args;
- if ((_device.width == rect->width) && (_device.height == rect->height)) return -RT_ERROR;
-
- _device.width = rect->width;
- _device.height = rect->height;
-
- if (_device.screen != RT_NULL)
- {
- SDL_FreeSurface(_device.screen);
-
- /* re-create screen surface */
- _device.screen = SDL_SetVideoMode(_device.width, _device.height, 16, SDL_SWSURFACE | SDL_DOUBLEBUF);
- if (_device.screen == NULL)
- {
- fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError());
- exit(1);
- }
-
- SDL_WM_SetCaption("RT-Thread/GUI Simulator", NULL);
- }
-#endif
- }
- break;
- }
- rt_mutex_release(sdllock);
- return RT_EOK;
-}
-
-static void sdlfb_hw_init(void)
-{
- /* set video driver for VC++ debug */
- //_putenv("SDL_VIDEODRIVER=windib");
-
- //if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO) < 0)
- if (SDL_Init(SDL_INIT_VIDEO) < 0)
- {
- fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
- exit(1);
- }
-
- _device.parent.init = sdlfb_init;
- _device.parent.open = sdlfb_open;
- _device.parent.close = sdlfb_close;
- _device.parent.read = RT_NULL;
- _device.parent.write = RT_NULL;
- _device.parent.control = sdlfb_control;
-
- _device.width = SDL_SCREEN_WIDTH;
- _device.height = SDL_SCREEN_HEIGHT;
- _device.screen = SDL_SetVideoMode(_device.width, _device.height, 16, SDL_SWSURFACE | SDL_DOUBLEBUF);
- if (_device.screen == NULL)
- {
- fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError());
- exit(1);
- }
-
- SDL_WM_SetCaption("RT-Thread/GUI Simulator", NULL);
- rt_device_register(RT_DEVICE(&_device), "sdl", RT_DEVICE_FLAG_RDWR);
-
- sdllock = rt_mutex_create("fb", RT_IPC_FLAG_FIFO);
-}
-
-#ifdef _WIN32
-#include <windows.h>
-#include <mmsystem.h>
-#else
-#include <pthread.h>
-#endif
-
-#include <stdio.h>
-#include <rtgui/event.h>
-#include <rtgui/kbddef.h>
-#include <rtgui/rtgui_server.h>
-#include <rtgui/rtgui_system.h>
-
-#ifdef _WIN32
-static DWORD WINAPI sdl_loop(LPVOID lpParam)
-#else
-static void *sdl_loop(void *lpParam)
-#endif
-{
- int quit = 0;
- SDL_Event event;
- int button_state = 0;
-
- rt_device_t device;
- sdlfb_hw_init();
-
- device = rt_device_find("sdl");
- rtgui_graphic_set_device(device);
-
- /* handle SDL event */
- while (!quit)
- {
- SDL_WaitEvent(&event);
-
- switch (event.type)
- {
- case SDL_MOUSEMOTION:
-#if 0
- {
- struct rtgui_event_mouse emouse;
- emouse.parent.type = RTGUI_EVENT_MOUSE_MOTION;
- emouse.parent.sender = RT_NULL;
- emouse.wid = RT_NULL;
-
- emouse.x = ((SDL_MouseMotionEvent *)&event)->x;
- emouse.y = ((SDL_MouseMotionEvent *)&event)->y;
-
- /* init mouse button */
- emouse.button = button_state;
-
- /* send event to server */
- rtgui_server_post_event(&emouse.parent, sizeof(struct rtgui_event_mouse));
- }
-#endif
- break;
-
- case SDL_MOUSEBUTTONDOWN:
- case SDL_MOUSEBUTTONUP:
- {
- struct rtgui_event_mouse emouse;
- SDL_MouseButtonEvent *mb;
-
- emouse.parent.type = RTGUI_EVENT_MOUSE_BUTTON;
- emouse.parent.sender = RT_NULL;
- emouse.wid = RT_NULL;
-
- mb = (SDL_MouseButtonEvent *)&event;
-
- emouse.x = mb->x;
- emouse.y = mb->y;
-
- /* init mouse button */
- emouse.button = 0;
-
- /* set emouse button */
- if (mb->button & (1 << (SDL_BUTTON_LEFT - 1)))
- {
- emouse.button |= RTGUI_MOUSE_BUTTON_LEFT;
- }
- else if (mb->button & (1 << (SDL_BUTTON_RIGHT - 1)))
- {
- emouse.button |= RTGUI_MOUSE_BUTTON_RIGHT;
- }
- else if (mb->button & (1 << (SDL_BUTTON_MIDDLE - 1)))
- {
- emouse.button |= RTGUI_MOUSE_BUTTON_MIDDLE;
- }
-
- if (mb->type == SDL_MOUSEBUTTONDOWN)
- {
- emouse.button |= RTGUI_MOUSE_BUTTON_DOWN;
- button_state = emouse.button;
- }
- else
- {
- emouse.button |= RTGUI_MOUSE_BUTTON_UP;
- button_state = 0;
- }
-
-
- /* send event to server */
- rtgui_server_post_event(&emouse.parent, sizeof(struct rtgui_event_mouse));
- }
- break;
-
- case SDL_KEYUP:
- {
- struct rtgui_event_kbd ekbd;
- ekbd.parent.type = RTGUI_EVENT_KBD;
- ekbd.parent.sender = RT_NULL;
- ekbd.type = RTGUI_KEYUP;
- ekbd.wid = RT_NULL;
- ekbd.mod = event.key.keysym.mod;
- ekbd.key = event.key.keysym.sym;
-
- /* FIXME: unicode */
- ekbd.unicode = 0;
-
- /* send event to server */
- rtgui_server_post_event(&ekbd.parent, sizeof(struct rtgui_event_kbd));
- }
- break;
-
- case SDL_KEYDOWN:
- {
- struct rtgui_event_kbd ekbd;
- ekbd.parent.type = RTGUI_EVENT_KBD;
- ekbd.parent.sender = RT_NULL;
- ekbd.type = RTGUI_KEYDOWN;
- ekbd.wid = RT_NULL;
- ekbd.mod = event.key.keysym.mod;
- ekbd.key = event.key.keysym.sym;
-
- /* FIXME: unicode */
- ekbd.unicode = 0;
-
- /* send event to server */
- rtgui_server_post_event(&ekbd.parent, sizeof(struct rtgui_event_kbd));
- }
- break;
-
- case SDL_QUIT:
- SDL_Quit();
- quit = 1;
- break;
-
- default:
- break;
- }
-
- if (quit)
- break;
- }
- //exit(0);
- return 0;
-}
-
-/* start sdl thread */
-void rt_hw_sdl_start(void)
-{
-#ifdef _WIN32
- HANDLE thread;
- DWORD thread_id;
-
- /* create thread that loop sdl event */
- thread = CreateThread(NULL,
- 0,
- (LPTHREAD_START_ROUTINE)sdl_loop,
- 0,
- CREATE_SUSPENDED,
- &thread_id);
- if (thread == NULL)
- {
- //Display Error Message
-
- return;
- }
- ResumeThread(thread);
-#else
- /* Linux */
- pthread_t pid;
- int res;
- res = pthread_create(&pid, NULL, &sdl_loop, NULL);
- if (res)
- {
- printf("pthread create sdl thread faild, <%d>\n", res);
- exit(EXIT_FAILURE);
- }
-#endif
-}
diff --git a/bsp/simlinux/drivers/serial.c b/bsp/simlinux/drivers/serial.c
deleted file mode 100755
index 87de4d0498..0000000000
--- a/bsp/simlinux/drivers/serial.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
-******************************************************************************
-* By : parai
-* virtual serial driver
-******************************************************************************
-*/
-
-#include <rthw.h>
-#include <rtthread.h>
-
-#define _DEBUG_SERIAL 0
-#include "serial.h"
-#include <stdio.h>
-struct rt_device serial_device;
-//extern struct serial_int_rx serial_rx;
-struct serial_int_rx serial_rx;
-
-#if 0
-static FILE *fp = RT_NULL;
-#endif
-
-/*@{*/
-
-/* 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
-#if 0
- if (fp == NULL)
- fp = fopen("log.txt", "wb+");
-
- if (fp != NULL)
- fwrite(buffer, size, 1, fp);
-#endif
-
- printf("%s", (char *)buffer);
- fflush(stdout);
- 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_uint16_t)(RT_DEVICE_FLAG_RDWR | flag));
-}
-
-rt_err_t rt_hw_serial_init(void)
-{
- return rt_hw_serial_register(&serial_device, RT_CONSOLE_DEVICE_NAME,
- RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM);
-}
diff --git a/bsp/simlinux/drivers/serial.h b/bsp/simlinux/drivers/serial.h
deleted file mode 100755
index 010631ab32..0000000000
--- a/bsp/simlinux/drivers/serial.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-*********************************************************************************************************
-* MC9S12DP256/DG128 Specific code
-* BANKED MEMORY MODEL
-*
-* File : rthw.c
-* By : parai
-*******************************************************************************************************/
-
-#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/simlinux/drivers/sst25vfxx_mtd.h b/bsp/simlinux/drivers/sst25vfxx_mtd.h
deleted file mode 100755
index cb0bb84129..0000000000
--- a/bsp/simlinux/drivers/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 <rtthread.h>
-#include <drivers/spi.h>
-
-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/simlinux/drivers/sst25vfxx_mtd_sim.c b/bsp/simlinux/drivers/sst25vfxx_mtd_sim.c
deleted file mode 100755
index 9271c1bb03..0000000000
--- a/bsp/simlinux/drivers/sst25vfxx_mtd_sim.c
+++ /dev/null
@@ -1,227 +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 <rtdevice.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "sst25vfxx_mtd.h"
-
-#ifdef RT_USING_MTD_NOR
-#define NOR_SIM "nor.bin"
-/* JEDEC Manufacturer��s 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_off_t offset, rt_uint32_t length)
-{
- 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, offset, 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)
- {
- rt_uint32_t i;
- /* create a file to simulate nor */
- sst25->file = fopen(NOR_SIM, "wb+");
-
- memset(block_buffer, 0xFF, sizeof(block_buffer));
- for (i = 0; i < total_block; i++)
- {
- fseek(sst25->file, 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 <finsh.h>
-void nor_erase(void)
-{
- rt_uint32_t index;
- struct rt_mtd_nor_device *mtd;
-
- mtd = RT_MTD_NOR_DEVICE(&_sst25_mtd);
- for (index = mtd->block_start; index < mtd->block_end; index ++)
- {
- sst25vfxx_erase_block(mtd, index * mtd->block_size, BLOCK_SIZE);
- }
-}
-FINSH_FUNCTION_EXPORT(nor_erase, erase all block in SPI flash);
-#endif
-
-#endif
diff --git a/bsp/simlinux/drivers/usart_sim.c b/bsp/simlinux/drivers/usart_sim.c
deleted file mode 100755
index 2cbb1ed345..0000000000
--- a/bsp/simlinux/drivers/usart_sim.c
+++ /dev/null
@@ -1,192 +0,0 @@
-#include <rthw.h>
-#include <rtthread.h>
-
-#ifdef _WIN32
-#include <windows.h>
-#include <mmsystem.h>
-#include <conio.h>
-#endif
-
-#include <stdio.h>
-#include "serial.h"
-
-struct serial_int_rx serial_rx;
-extern struct rt_device serial_device;
-
-#ifdef _WIN32
-/*
- * 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 receive 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);
-}
-
-#else /* POSIX version */
-
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <termios.h> /* for tcxxxattr, ECHO, etc */
-#include <unistd.h> /* for STDIN_FILENO */
-
-
-static void * ThreadforKeyGet(void * lpParam);
-static pthread_t OSKey_Thread;
-void rt_hw_usart_init(void)
-{
- int res;
- res = pthread_create(&OSKey_Thread, NULL, &ThreadforKeyGet, NULL);
- if (res)
- {
- printf("pthread create faild, <%d>\n", res);
- exit(EXIT_FAILURE);
- }
-}
-#endif
-/*
- * �����(��)�� 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_index��������read_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;
-}
-#ifdef _WIN32
-static DWORD WINAPI ThreadforKeyGet(LPVOID lpParam)
-#else
-
-static struct termios oldt, newt;
-/*simulate windows' getch(), it works!!*/
-void set_stty(void)
-{
- /* get terminal input's attribute */
- tcgetattr(STDIN_FILENO, &oldt);
- newt = oldt;
-
- /* set termios' local mode */
- newt.c_lflag &= ~(ECHO|ICANON);
- tcsetattr(STDIN_FILENO, TCSANOW, &newt);
-}
-
-void restore_stty(void)
-{
- /* recover terminal's attribute */
- tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
-}
-
-#define getch getchar
-
-static void * ThreadforKeyGet(void * lpParam)
-#endif /* not _WIN32*/
-{
- unsigned char key;
-
-#ifndef _WIN32
- sigset_t sigmask, oldmask;
- /* set the getchar without buffer */
- sigfillset(&sigmask);
- pthread_sigmask(SIG_BLOCK, &sigmask, &oldmask);
- set_stty();
-#endif
- (void)lpParam; //prevent compiler warnings
- for (;;)
- {
- key = getch();
-#ifdef _WIN32
- 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;
- }
-#endif
- savekey(key);
- }
-} /*** ThreadforKeyGet ***/