projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cast to unsignet type.
[bertos.git]
/
bertos
/
drv
/
dataflash.c
diff --git
a/bertos/drv/dataflash.c
b/bertos/drv/dataflash.c
index d9392f9aadb6db27088b7c5206417eaa54982c3a..f70628fb18cf52a1e6e9dc2f4ae6e5b677abb5d8 100644
(file)
--- a/
bertos/drv/dataflash.c
+++ b/
bertos/drv/dataflash.c
@@
-30,21
+30,28
@@
*
* -->
*
*
* -->
*
- * \brief Function library for
AT45DBXX Data Flash memory
.
+ * \brief Function library for
dataflash AT45DB family (implementation)
.
*
*
*
*
- * \version $Id: dataflash.c 2
0677 2008-02-19 14:29:52Z batt
$
+ * \version $Id: dataflash.c 2
1658 2008-06-05 16:42:54Z asterix
$
* \author Daniele Basile <asterix@develer.com>
* \author Francesco Sacchi <batt@develer.com>
*/
#include "dataflash.h"
* \author Daniele Basile <asterix@develer.com>
* \author Francesco Sacchi <batt@develer.com>
*/
#include "dataflash.h"
-#include <appconfig.h>
+#include "cfg/cfg_dataflash.h"
#include <cfg/macros.h>
#include <cfg/debug.h>
#include <cfg/module.h>
#include <cfg/macros.h>
#include <cfg/debug.h>
#include <cfg/module.h>
+
+// Define logging setting (for cfg/log.h module).
+#define LOG_LEVEL DATAFLASH_LOG_LEVEL
+#define LOG_VERBOSITY DATAFLASH_LOG_VERBOSITY
+#include <cfg/log.h>
+
#include <drv/timer.h>
#include <drv/timer.h>
+
#include <kern/kfile.h>
#if CONFIG_KERNEL
#include <kern/kfile.h>
#if CONFIG_KERNEL
@@
-82,6
+89,14
@@
static const DataflashInfo mem_info[] =
.page_cnt = 4096,
.read_cmd = DFO_READ_FLASH_MEM_BYTE_D,
},
.page_cnt = 4096,
.read_cmd = DFO_READ_FLASH_MEM_BYTE_D,
},
+ {
+ /* AT45DB642D */
+ .density_id = 0x0F,
+ .page_size = 1056,
+ .page_bits = 11,
+ .page_cnt = 8192,
+ .read_cmd = DFO_READ_FLASH_MEM_BYTE_D,
+ },
/* Add other memories here */
};
/* Add other memories here */
};
@@
-175,9
+190,7
@@
static uint8_t dataflash_stat(KFileDataflash *fd)
* and reset dataflash command decoder.
*/
CS_TOGGLE(fd);
* and reset dataflash command decoder.
*/
CS_TOGGLE(fd);
-
kfile_putc(DFO_READ_STATUS, fd->channel);
kfile_putc(DFO_READ_STATUS, fd->channel);
-
return kfile_getc(fd->channel);
}
return kfile_getc(fd->channel);
}
@@
-281,7
+294,7
@@
static int dataflash_flush(KFile *_fd)
fd->page_dirty = false;
fd->page_dirty = false;
-
kprintf("Flushing page <%ld>
\n", fd->current_page);
+
LOG_INFO("Flushing page {%ld}
\n", fd->current_page);
}
return 0;
}
}
return 0;
}
@@
-294,7
+307,7
@@
static int dataflash_flush(KFile *_fd)
static int dataflash_close(struct KFile *_fd)
{
dataflash_flush(_fd);
static int dataflash_close(struct KFile *_fd)
{
dataflash_flush(_fd);
-
TRACE
;
+
LOG_INFO("Close.\n")
;
return 0;
}
return 0;
}
@@
-312,7
+325,7
@@
static KFile *dataflash_reopen(KFile *_fd)
/* Load selected page from dataflash memory */
dataflash_loadPage(fd, fd->current_page);
/* Load selected page from dataflash memory */
dataflash_loadPage(fd, fd->current_page);
-
TRACE
;
+
LOG_INFO("Reopen.\n")
;
return &fd->fd;
}
return &fd->fd;
}
@@
-338,10
+351,10
@@
static size_t dataflash_read(struct KFile *_fd, void *buf, size_t size)
uint8_t *data = (uint8_t *)buf;
uint8_t *data = (uint8_t *)buf;
- ASSERT(fd->fd.seek_pos + size <= fd->fd.size);
- size = MIN((
uint32
_t)size, fd->fd.size - fd->fd.seek_pos);
+ ASSERT(fd->fd.seek_pos + size <=
(kfile_size_t)
fd->fd.size);
+ size = MIN((
kfile_size
_t)size, fd->fd.size - fd->fd.seek_pos);
-
kprintf
("Reading at pos[%lu]\n", fd->fd.seek_pos);
+
LOG_INFO
("Reading at pos[%lu]\n", fd->fd.seek_pos);
/*
* We select page and offest from absolute address.
/*
* We select page and offest from absolute address.
@@
-349,7
+362,7
@@
static size_t dataflash_read(struct KFile *_fd, void *buf, size_t size)
page_addr = fd->fd.seek_pos / mem_info[fd->dev].page_size;
byte_addr = fd->fd.seek_pos % mem_info[fd->dev].page_size;
page_addr = fd->fd.seek_pos / mem_info[fd->dev].page_size;
byte_addr = fd->fd.seek_pos % mem_info[fd->dev].page_size;
-
kprintf("[page-<%ld>, byte-<%ld>]
", page_addr, byte_addr);
+
LOG_INFO("[page-{%ld}, byte-{%ld}]\n
", page_addr, byte_addr);
/*
* Flush current page in main memory if
/*
* Flush current page in main memory if
@@
-363,7
+376,7
@@
static size_t dataflash_read(struct KFile *_fd, void *buf, size_t size)
dataflash_readBlock(fd, page_addr, byte_addr, mem_info[fd->dev].read_cmd, data, size);
fd->fd.seek_pos += size;
dataflash_readBlock(fd, page_addr, byte_addr, mem_info[fd->dev].read_cmd, data, size);
fd->fd.seek_pos += size;
-
kprintf
("Read %ld bytes\n", size);
+
LOG_INFO
("Read %ld bytes\n", size);
return size;
}
return size;
}
@@
-389,10
+402,10
@@
static size_t dataflash_write(struct KFile *_fd, const void *_buf, size_t size)
const uint8_t *data = (const uint8_t *) _buf;
const uint8_t *data = (const uint8_t *) _buf;
- ASSERT(fd->fd.seek_pos + size <= fd->fd.size);
- size = MIN((
uint32
_t)size, fd->fd.size - fd->fd.seek_pos);
+ ASSERT(fd->fd.seek_pos + size <=
(kfile_off_t)
fd->fd.size);
+ size = MIN((
kfile_size
_t)size, fd->fd.size - fd->fd.seek_pos);
-
kprintf
("Writing at pos[%lu]\n", fd->fd.seek_pos);
+
LOG_INFO
("Writing at pos[%lu]\n", fd->fd.seek_pos);
while (size)
{
while (size)
{
@@
-403,9
+416,9
@@
static size_t dataflash_write(struct KFile *_fd, const void *_buf, size_t size)
offset = fd->fd.seek_pos % mem_info[fd->dev].page_size;
offset = fd->fd.seek_pos % mem_info[fd->dev].page_size;
- size_t wr_len = MIN(size, mem_info[fd->dev].page_size - offset);
+ size_t wr_len = MIN(
(dataflash_size_t)
size, mem_info[fd->dev].page_size - offset);
-
kprintf(" [page-<%ld>, byte-<%ld>]
",new_page, offset);
+
LOG_INFO("[page-{%ld}, byte-{%ld}]\n
",new_page, offset);
if (new_page != fd->current_page)
{
if (new_page != fd->current_page)
{
@@
-415,7
+428,7
@@
static size_t dataflash_write(struct KFile *_fd, const void *_buf, size_t size)
dataflash_loadPage(fd, new_page);
fd->current_page = new_page;
dataflash_loadPage(fd, new_page);
fd->current_page = new_page;
-
kprintf(" >> Load page: <%ld>
", new_page);
+
LOG_INFO(" >> Load page: {%ld}\n
", new_page);
}
/*
* Write byte in current page, and set true
}
/*
* Write byte in current page, and set true
@@
-430,7
+443,7
@@
static size_t dataflash_write(struct KFile *_fd, const void *_buf, size_t size)
total_write += wr_len;
}
total_write += wr_len;
}
-
kprintf
("written %lu bytes\n", total_write);
+
LOG_INFO
("written %lu bytes\n", total_write);
return total_write;
}
return total_write;
}
@@
-449,7
+462,7
@@
bool dataflash_init(KFileDataflash *fd, KFile *ch, DataflashType dev, dataflash_
{
uint8_t stat;
{
uint8_t stat;
- MOD_CHECK(
dataflash_hw
);
+ MOD_CHECK(
hw_dataflash
);
ASSERT(fd);
ASSERT(ch);
ASSERT(fd);
ASSERT(ch);
@@
-472,7
+485,6
@@
bool dataflash_init(KFileDataflash *fd, KFile *ch, DataflashType dev, dataflash_
fd->fd.flush = dataflash_flush;
dataflash_reset(fd);
fd->fd.flush = dataflash_flush;
dataflash_reset(fd);
-
stat = dataflash_stat(fd);
/*
stat = dataflash_stat(fd);
/*