ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
61636 Топик полностью
Сергей Борщ (29.06.2006 13:24, просмотров: 1) ответил Павел В. на Вопрос к тем, кто уже поставил себе новый IAR AVR 4.20A
Приношу извинения, Павел действительно прав. IAR в С-компиляторе почему-то пошел на поводу у Атмела. Действительно, при инициализации указателя на функцию абсолютным адресом в С надо указывать адрес в словах. Я глянул в свои исходники:
	case UPDATE_FIRMWARE:
		{
			void (*BootLoader)(uint8_t) = (void(*)(uint8_t))(0x1802 / 2);
			BootLoader(1);
		}
		return;
Но при этом если я указываю адрес внешней функции в скрипте линкера, то адрес надо указывать в байтах:
-DSerialNo=0x1826
-DSynthInit=0x182E
-DAreaNo=0x1830
И в асме адреса считаются тоже в байтах. Вот такую Ж. Атмел всем сделал с этой пословной адресацией. И при прочтении исходного вопроса лично меня почему-то переклинило на асм, и я все проверки своих аргументов делал на асме. Павлу: а версия 4.10b компилит (*(void(*)())3)(); без всяких ошибок (сейчас проверил).