IAP в LPC21xx

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`ы? Я продолжаю курить мануалы искать экзамплы, но надеюсь на ваш дельный совет.

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

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

Reply to
Gerasimov Gerasim
Loading thread data ...

Привет 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] Алексей М. ... Синяки рождаются в споре куда чаще, чем истина...

Reply to
Alex Mogilnikov

Привет, 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

Reply to
Leha Bishletov

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

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

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

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

Reply to
Gerasimov Gerasim

Привет 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] Алексей М. ... Программисты и программистки! Выше флаг промежуточного переноса!

Reply to
Alex Mogilnikov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.