|
В include файле inavr.h есть такие функции:
/* SPM */
__intrinsic void __DataToR0ByteToSPMCR_SPM(unsigned char data,
unsigned char byte);
__intrinsic void __AddrToZByteToSPMCR_SPM(void __flash* addr,
unsigned char byte);
__intrinsic void __AddrToZWordToR1R0ByteToSPMCR_SPM(void __flash* addr,
unsigned short word,
unsigned char byte);
И вот такие:
#define _SPM_ERASE(Addr) \
__AddrToZByteToSPMCR_SPM((void __flash*)(Addr), 0x03)
#define _SPM_FILLTEMP(Addr,Data) \
__AddrToZWordToR1R0ByteToSPMCR_SPM((void __flash*)(Addr), (Data), 0x01)
#define _SPM_PAGEWRITE(Addr) \
__AddrToZByteToSPMCR_SPM((void __flash*)(Addr), (0x05))
Как с этими функциями работать? Может есть какая нибудь AppNot’a?
Также остались непонятными следующие вопросы:
1).Каким образом в IAR пишется BootLoader в виде отдельной программы или в программе приложения?
2).Каким образом сказать IAR чтобы он разместил BootLoader в BootLoader Section (NRWW)?
3).Как от программы BootLoader передается управление в программу приложения?
4).Как узнать какие блоки памяти заняты программой приложения а в какие можно разместить данные? Какие страницы памяти заняты и их адреса.
5). Как передать управление BootLoader’y , скажем по приходу данных по USART?
Эти вопросы приминительно к IAR C 2.28, Как это делается на ASMе боле мене понятно.
E-mail: info@telesys.ru