From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 333 invoked by alias); 8 May 2005 00:05:19 -0000 Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Received: (qmail 32660 invoked from network); 8 May 2005 00:05:06 -0000 Received: from unknown (HELO mout.alturo.net) (212.227.15.20) by sourceware.org with SMTP; 8 May 2005 00:05:06 -0000 Received: from [212.227.15.30] (helo=mrelay.alturo.net) by mout.alturo.net with esmtp (Exim 3.35 #1) id 1DUZI5-00040D-00; Sun, 08 May 2005 02:05:01 +0200 Received: from [84.56.137.44] (helo=[192.168.2.103]) by mrelay.alturo.net with asmtp (Exim 3.35 #1) id 1DUZI5-0005w3-00; Sun, 08 May 2005 02:05:01 +0200 Message-ID: <427D57AE.3030500@ovidius-ib.de> Date: Mon, 09 May 2005 07:45:00 -0000 From: Marcel Ovidiu Achim User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913) MIME-Version: 1.0 To: Andrew Lunn CC: ecos-discuss@ecos.sourceware.org, ecos-discuss@sources.redhat.com References: <427C7BD1.9020605@ovidius-ib.de> <20050507161853.GM31731@lunn.ch> In-Reply-To: <20050507161853.GM31731@lunn.ch> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [ECOS] Re: unaligned half-word flash memory access on a EB55/AT91 X-SW-Source: 2005-05/txt/msg00109.txt.bz2 Message-ID: <20050509074500.k_YZGYXtYYVn1-TNGyJkKgCuH7quFJxY-J-WlpxRRMM@z> Andrew Lunn schrieb: >On Sat, May 07, 2005 at 10:26:57AM +0200, Marcel Ovidiu Achim wrote: > > >>Andrew Lunn schrieb: >> >> >> >>>On Fri, May 06, 2005 at 08:51:17PM +0200, Marcel Ovidiu Achim wrote: >>> >>> >>> >>> >>>>Hi all, >>>> >>>>I am using eCos on an Atmel EB55 board. For an application I need to >>>>store data into the on board flash device. My compiled code seams to >>>>do an unaligned access to the on board flash which is enabled by the >>>>NCS0 line. >>>> >>>>This is a very simple code for a better understanding. >>>> >>>>// Set the EBI_CSR0 register for 16 bit access etc. >>>>HAL_WRITE_UINT32(0xFFE00000, 0x010030A1); >>>> >>>>// Write 0xAA to address 0x555 of into the flash device. >>>>// Note: this is not the whole prog. seq. >>>>HAL_WRITE_UINT16(0x01000000 + 0x555, 0xAA); >>>> >>>> >>>> >>>I don't think this is allowed. You have to do 16 bit accesses on 16 >>>bit aligned addresses. Maybe you want to do: >>> >>>HAL_WRITE_UINT8(0x01000000 + 0x555, 0xAA); >>>HAL_WRITE_UINT8(0x01000000 + 0x556, 0x00); >>> >>>which will acheive the same but will do it in a legal way. >>> >>> Andrew >>> >>> >>> >>> >>> >>Your sugestion drives the NCS0 line twice and again the access is not >>alligned >>(both read and write of the AT91 starts from A0 instead of A1). Since >>the memory cells of the flash >>device are 16 bit long, while writing 0x556 means also writng to another >>cell instead >>of 0x555. >> >>Please give more advice. >> >> > >How do you have the MMU setup for that area of memory? > > Andrew > > > Well, the only way to set the memory behaviour that I konw is to configure the EBI_CSR0 register. I set it up as follows. // Set the EBI_CSR0 register for 16 bit access etc. HAL_WRITE_UINT32(0xFFE00000, BA_0x010 | CSEN | EBI_BAT_BYTE_SELECT | EBI_TDF_0 | 4MB_PAGE | WSE | EBI_NWS_1 | EBI_DBW_16); -- Mit freundlichen Grüssen / Best regards Marcel Ovidiu Achim OVIDIUS Ingenieurbüro Vogelsangstr. 76 70197 Stuttgart/Germany Tel.: +49 (0)711 62 03 600 Mobil: +49 (0)177 69 070 59 email: marcel.achim@ovidius-ib.de -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss