IAP в LPC21xx

Feb 10, 2006 4 Replies

Hi All,



А всё таки круто Philips замутил, предоставив высокоуровневый API для работы с флешью...



Пытаюсь заюзать IAP.Грабли начались сразу: делаю как в мануале #define IAP_LOCATION 0x7ffffff1 typedef void (*IAP)(unsigned int [],unsigned int[]); IAP iap_entry = (IAP)(IAP_LOCATION); unsigned int command[5]; unsigned int result[2]; пытаюсь получить, ну хотя бы версию бутлодера disableIRQ(); command[0] = 55;//Read Boot code version result[0] = 0; result[1] = 0; result[2] = 0; iap_entry (command, result);//тут процессор зависает enableIRQ(); ModbusBuffer[_u_data_section_cm03+0] = result[0];//status code ModbusBuffer[_u_data_section_cm03+1] = result[1];//Major ModbusBuffer[_u_data_section_cm03+2] = result[2];//Minor



на месте iap_entry (command, result); проц наглухо зависает. Пишу на gcc в arm-mode, функции IAP в Thumb(так в мануале сказано).



Что делают в таких случаях делают ARM embedder`ы? Я продолжаю курить мануалы искать экзамплы, но надеюсь на ваш дельный совет.



С уважением, Герасим.



Замути хитовый расколбас


Привет Gerasimov!

10 Feb 06 12:08, Gerasimov Gerasim писал All:

GG> на месте iap_entry (command, result); проц наглухо зависает. GG> Пишу на gcc в arm-mode, функции IAP в Thumb(так в мануале сказано).

GG> Что делают в таких случаях делают ARM embedder`ы?

-mthumb-interwork компилятору указываешь?

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Синяки рождаются в споре куда чаще, чем истина...

Привет, Gerasimov! Вы писали to All on Fri, 10 Feb 2006 09:08:50 +0000 (UTC):

GG> Пытаюсь заюзать IAP.Грабли начались сразу: GG> делаю как в мануале GG> #define IAP_LOCATION 0x7ffffff1 GG> typedef void (*IAP)(unsigned int [],unsigned int[]);

Здесь надо указать, что это THUMB функция

GG> IAP iap_entry = (IAP)(IAP_LOCATION); ... GG> iap_entry (command, result);//тут процессор зависает

Я использую такую конструкцию:

typedef void (__thumb *TIAP)(UINT command[], UINT result[]); #define iap_entry ((TIAP)0x7ffffff1)

With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

GG>> на месте iap_entry (command, result); проц наглухо зависает. AM> -mthumb-interwork компилятору указываешь? Спасибо за дельный совет.

-mthumb-interwork указал, помогло, только код стал больше на пол кило. Есть ли способ сказать, arm-elf-gcc что именно эта функция будет thumb? Указанный Leha Bishletov способ typedef void (__thumb *TIAP)(....); вызывает ошибку компиляции gcc.

С уважением, Герасимов.

Замути хитовый расколбас

Привет Gerasimov!

14 Feb 06 05:19, Gerasimov Gerasim писал Alex Mogilnikov:

GG> -mthumb-interwork указал, помогло, только код стал больше на пол кило. GG> Есть ли способ сказать, arm-elf-gcc что именно эта функция будет GG> thumb?

Вынести эту функцию в отдельный модуль, который компилировать с

-mthumb-interwork, других способов не знаю. Да и вообще я thumb никогда не использовал...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Программисты и программистки! Выше флаг промежуточного переноса!

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required