SDRAM_DISCO_F746NG_BlockDevice
Dependents: DISCO-F746NG_SDRAMBlockDevice
Fork of SDRAM_DISCO_F746NG by
SDRAM_DISCO_F746NG_BlockDevice.cpp
- Committer:
- tapiov
- Date:
- 2018-03-08
- Revision:
- 1:36b940e6b8d2
File content as of revision 1:36b940e6b8d2:
/* Copyright (c) 2010-2016 mbed.org, MIT License * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or * substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include <inttypes.h> #include "SDRAM_DISCO_F746NG_BlockDevice.h" // Constructor //SDRAM_DISCO_F746NG_BlockDevice::SDRAM_DISCO_F746NG_BlockDevice() //{ // BSP_SDRAM_Init(); //} // Destructor //SDRAM_DISCO_F746NG_BlockDevice::~SDRAM_DISCO_F746NG_BlockDevice() //{ // BSP_SDRAM_DeInit(); //} //================================================================================================================= // Public methods //================================================================================================================= int SDRAM_DISCO_F746NG_BlockDevice::init() //uint8_t SDRAM_DISCO_F746NG::Init(void) { return BSP_SDRAM_Init(); } int SDRAM_DISCO_F746NG_BlockDevice::deinit() { return BSP_SDRAM_DeInit(); } void SDRAM_DISCO_F746NG_BlockDevice::Initialization_sequence(uint32_t RefreshCount) { BSP_SDRAM_Initialization_sequence(RefreshCount); } int SDRAM_DISCO_F746NG_BlockDevice::read(void * pData, bd_addr_t uwStartAddress, bd_size_t uwDataSize) //uint8_t SDRAM_DISCO_F746NG::ReadData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize) { return BSP_SDRAM_ReadData(uwStartAddress,(uint32_t *) pData, uwDataSize); } uint8_t SDRAM_DISCO_F746NG_BlockDevice::ReadData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize) { return BSP_SDRAM_ReadData_DMA(uwStartAddress, pData, uwDataSize); } int SDRAM_DISCO_F746NG_BlockDevice::program(const void *pData, bd_addr_t uwStartAddress, bd_size_t uwDataSize) //uint8_t SDRAM_DISCO_F746NG::WriteData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize) { return BSP_SDRAM_WriteData(uwStartAddress, (uint32_t *) pData, uwDataSize); } uint8_t SDRAM_DISCO_F746NG_BlockDevice::WriteData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize) { return BSP_SDRAM_WriteData_DMA(uwStartAddress, pData, uwDataSize); } uint8_t SDRAM_DISCO_F746NG_BlockDevice::Sendcmd(FMC_SDRAM_CommandTypeDef *SdramCmd) { return BSP_SDRAM_Sendcmd(SdramCmd); } int SDRAM_DISCO_F746NG_BlockDevice::erase(bd_addr_t addr, bd_size_t size) { uint32_t tmpIndex; uint32_t Value = 0; uint64_t PSize = SDRAM_DISCO_F746NG_BlockDevice::get_program_size(); uint64_t DSize = SDRAM_DISCO_F746NG_BlockDevice::size(); uint32_t UDSize=(uint32_t) DSize; uint32_t UPSize=(uint32_t) PSize; uint32_t UAddr=(uint32_t) addr; uint32_t *pBuffer = (uint32_t *)malloc(UPSize * sizeof(uint32_t));; printf("Erase starting "); printf("pBuffer mallocated "); // Fill buffer with zeroes for (tmpIndex = 0; tmpIndex<UPSize; tmpIndex++ ) { pBuffer[tmpIndex] = Value; } printf("pBuffer written\n"); printf("DSize %lu ", UDSize); printf("PSize %lu\n", UPSize); // Write the buffer to fill whole device for (tmpIndex = 0; tmpIndex<(UDSize/UPSize); tmpIndex++ ) { // printf("Index %lu WAddr %#032x% %#032x% %lu EndIndex %lu \n", tmpIndex,(SDRAM_DEVICE_ADDR + UAddr+(tmpIndex*UPSize)),&pBuffer,(UDSize/UPSize)); // wait(1); BSP_SDRAM_WriteData((SDRAM_DEVICE_ADDR + UAddr+(tmpIndex*UPSize)),pBuffer,UPSize); } free(pBuffer); pBuffer=NULL; return 0; } bd_size_t SDRAM_DISCO_F746NG_BlockDevice::get_read_size() const { return 1024; } bd_size_t SDRAM_DISCO_F746NG_BlockDevice::get_program_size() const { return 1024; } bd_size_t SDRAM_DISCO_F746NG_BlockDevice::get_erase_size() const { return 1048576; } bd_size_t SDRAM_DISCO_F746NG_BlockDevice::size() const { return 1048576; }