реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> помогите перевести в код IAR
sfinks
сообщение May 5 2010, 21:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 2-01-07
Пользователь №: 24 051



Привет всем!

Помогите пожалуйста отконфигурить at91sam7se32 на работу с внешней флешкой 29 серии. Нужно отремапить ее на адрес 0x10000000.
Т.е. стандартный пример кода, который стартует из внутренней флешки проца, ремапит внешнююю флеш на адрес 0x10000000 и передает управление на этот адрес. Благодарность моя не будет иметь границ smile.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 5 2010, 21:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Что там "ремапить", если адрес 0x10000000 и так жестко привязан к CS0? Вам нужно только правильно настроить SMC_CSR0.
Go to the top of the page
 
+Quote Post
sfinks
сообщение May 6 2010, 06:27
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 2-01-07
Пользователь №: 24 051



Не подскажите кусок кода для этого ?
Go to the top of the page
 
+Quote Post
sfinks
сообщение May 8 2010, 20:12
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 2-01-07
Пользователь №: 24 051



Код был взят отсюда http://www.embedded-os.de/source/SAM7SExx_...ter_MemInit.zip


Помогите скомпилировать данный код в IAR или подскажите под какую среду он заточен.
Это пример инициализации флеш и озу для процессора AT91SAM7SE

Код
void SAM7SE_MemInit(void)
{
  
    /********************************************************
    *            init the external SMC A/D bus              *
    ********************************************************/
                                                           // Configure PIO controllers to periph mode
    AT91S_PIOB_BSR  = (AT91S_PB00_A0_NBS0 | AT91S_PB01_A1_NBS2 | AT91S_PB02_A2  | AT91S_PB03_A3  | AT91S_PB04_A4  | AT91S_PB05_A5  | AT91S_PB06_A6  | AT91S_PB07_A7  |
                       AT91S_PB08_A8      | AT91S_PB09_A9      | AT91S_PB10_A10 | AT91S_PB11_A11 | AT91S_PB12_A12 | AT91S_PB13_A13 | AT91S_PB14_A14 | AT91S_PB15_A15 |
                       AT91S_PB16_A16_BA0 | AT91S_PB17_A17_BA1 );
    AT91S_PIOB_PDR  = (AT91S_PB00_A0_NBS0 | AT91S_PB01_A1_NBS2 | AT91S_PB02_A2  | AT91S_PB03_A3  | AT91S_PB04_A4  | AT91S_PB05_A5  | AT91S_PB06_A6  | AT91S_PB07_A7  |
                       AT91S_PB08_A8      | AT91S_PB09_A9      | AT91S_PB10_A10 | AT91S_PB11_A11 | AT91S_PB12_A12 | AT91S_PB13_A13 | AT91S_PB14_A14 | AT91S_PB15_A15 |
                       AT91S_PB16_A16_BA0 | AT91S_PB17_A17_BA1 );
    AT91S_PIOC_ASR  = (AT91S_PC00_D0 | AT91S_PC01_D1 | AT91S_PC02_D2  | AT91S_PC03_D3  | AT91S_PC04_D4  | AT91S_PC05_D5  | AT91S_PC06_D6  | AT91S_PC07_D7  |
                       AT91S_PC08_D8 | AT91S_PC09_D9 | AT91S_PC10_D10 | AT91S_PC11_D11 | AT91S_PC12_D12 | AT91S_PC13_D13 | AT91S_PC14_D14 | AT91S_PC15_D15 |
                       AT91S_PC16_A18_NWAIT);
    AT91S_PIOC_BSR  = (AT91S_PC21_NWR0_NWE | AT91S_PC22_NRD);
    AT91S_PIOC_PDR  = (AT91S_PC00_D0 | AT91S_PC01_D1 | AT91S_PC02_D2  | AT91S_PC03_D3  | AT91S_PC04_D4  | AT91S_PC05_D5  | AT91S_PC06_D6  | AT91S_PC07_D7  |
                       AT91S_PC08_D8 | AT91S_PC09_D9 | AT91S_PC10_D10 | AT91S_PC11_D11 | AT91S_PC12_D12 | AT91S_PC13_D13 | AT91S_PC14_D14 | AT91S_PC15_D15 |
                       AT91S_PC16_A18_NWAIT | AT91S_PC21_NWR0_NWE | AT91S_PC22_NRD);
    /********************************************************
    *            init the NOR  interface on NCS0            *
    *                    ( AT49BV040B )                     *
    *  start:   0x 1000 0000       size:   0x 0008 0000     *
    ********************************************************/
    AT91S_PIOC_BSR  = AT91S_PC23_NCS0;                     // NCS0 config
    AT91S_PIOC_PDR  = AT91S_PC23_NCS0;
    AT91S_SMC_CSR->s[0] =                                  // Configure SMC Register
                      AT91S_SMC_CSR_NWS_2            |     // 1 wait states required by the NOR Flash device
                      AT91S_SMC_CSR_WSEN_EN          |     // NWS register enabled
                      AT91S_SMC_CSR_TDF_0            |     // 0 Data Float Time Cycles required by the NOR Flash device
                      AT91S_SMC_CSR_BAT_8BIT         |     // (one) 8-bit device connected over the bus
                      AT91S_SMC_CSR_DBW_8            |     // 8-bit Data Bus Width
                      AT91S_SMC_CSR_DRP_STD          |     // Standard Read protocol required by the NOR Flash device
                      AT91S_SMC_CSR_ACSS_STD         |     // Standard address to chip select
                      AT91S_SMC_CSR_RWSETUP_0        |     // 0 Read/Write Setup time required by the NOR Flash device
                      AT91S_SMC_CSR_RWHOLD_0        ;     // 0 Read/Write Hold time required by the NOR Flash device
    /********************************************************
    *            init the sRAM interface on NCS2            *
    *                   ( K6X4008T1F-70 )                   *
    *  start:   0x 3000 0000       size:   0x 0008 0000     *
    ********************************************************/
    AT91S_PIOA_BSR  = AT91S_PA20_NCS2;                     // NCS2 config
    AT91S_PIOA_PDR  = AT91S_PA20_NCS2;
    AT91S_SMC_CSR->s[2] =                                  // Configure SMC Register
                      AT91S_SMC_CSR_NWS_4            |     // 4 wait states required by the sRAM device
                      AT91S_SMC_CSR_WSEN_EN          |     // NWS register enabled
                      AT91S_SMC_CSR_TDF_1            |     // 1 Data Float Time Cycles required by the sRAM device
                      AT91S_SMC_CSR_BAT_8BIT         |     // (one) 8-bit device connected over the bus
                      AT91S_SMC_CSR_DBW_8            |     // 8-bit Data Bus Width
                      AT91S_SMC_CSR_DRP_STD          |     // Standard Read protocol required by the sRAM device
                      AT91S_SMC_CSR_ACSS_0           |     // 1 cycle address to chip select at begin and end
                      AT91S_SMC_CSR_RWSETUP_0        |     // 0 Read/Write Setup time required by the sRAM device
                      AT91S_SMC_CSR_RWHOLD_0        ;     // 0 Read/Write Hold time required by the sRAM device


Сообщение отредактировал rezident - May 9 2010, 00:06
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 8 2010, 20:17
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Компилятор здесь совершенно ни причем - код ничего специфичного не содержит. Возьмите хидеры и все. А вообще следует начать с основ языка, а а не с copy-paste кусков непонятного для Вас кода.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sfinks
сообщение May 8 2010, 20:53
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 2-01-07
Пользователь №: 24 051



Вот одна из ошибок на которую ругается компилятор iar
Error[Pe137]: expression must be a modifiable lvalue. Можно както это исправить ?


Цитата(zltigo @ May 8 2010, 23:17) *
Компилятор здесь совершенно ни причем - код ничего специфичного не содержит. Возьмите хидеры и все. А вообще следует начать с основ языка, а а не с copy-paste кусков непонятного для Вас кода.
Go to the top of the page
 
+Quote Post
toweroff
сообщение May 8 2010, 21:46
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(sfinks @ May 9 2010, 00:53) *
Вот одна из ошибок на которую ругается компилятор iar
Error[Pe137]: expression must be a modifiable lvalue. Можно както это исправить ?

так включите опцию прекомпилятора... посмотрите точно, на что он там ругается после окончательной сборки выражения
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 8 2010, 21:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Надо полагать, вещи типа AT91S_PIOB_BSR никак не определены. Если хотите собрать это дело со "стандартными" атмеловскими хидерами, замените AT91S_ на *AT91C_
Go to the top of the page
 
+Quote Post
sfinks
сообщение May 9 2010, 06:00
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 2-01-07
Пользователь №: 24 051



Естественно я сделал это в первую очередь, ругается именно на все строки с присвоением в регистр.

Цитата(aaarrr @ May 9 2010, 00:54) *
Надо полагать, вещи типа AT91S_PIOB_BSR никак не определены. Если хотите собрать это дело со "стандартными" атмеловскими хидерами, замените AT91S_ на *AT91C_
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 09:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016