zltigo 1 22 декабря, 2006 Опубликовано 22 декабря, 2006 · Жалоба переход в эту точку происходит путем вызова функции longjmp(). А я о чем? Только о том, что прямо установить точку возврата невозможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 25 декабря, 2006 Опубликовано 25 декабря, 2006 · Жалоба В бутлоадере исплользовал такое объявление функции: void (*start_application)( void ) = 0x0000; //pointer to application //at flash start Далее, в произвольном месте программы, мы можем ее вызвать и соответственно перейти по адресу 0. З.Ы. Работает. Использую компилятор GCC. Спасибо. Не додумался до такого. Прямолинейно мыслю, - переход значит переход! :) А в IAR, интересно, это выглядит так? extern void start_application(void)@0x0000; Спасибо также _bill. Не обратил внимания, теперь буду помнить. Думаю можно использовать по входу/выходу из sleep. Всем остальным тоже спасибо. Буду переваривать и пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 декабря, 2006 Опубликовано 25 декабря, 2006 · Жалоба А в IAR, интересно, это выглядит так? extern void start_application(void)@0x0000; Процитирую коллегу: RAM зачем расходовать попусту? Сразу и пишите. (void (*)(void))(0x0000)(); Это наиболее правильный вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 25 декабря, 2006 Опубликовано 25 декабря, 2006 · Жалоба Процитирую коллегу: RAM зачем расходовать попусту? Сразу и пишите. (void (*)(void))(0x0000)(); Это наиболее правильный вариант. Сейчас глянул на цитируемое и понял, что в первом посте банально опечатался :( и для полгого счастья скобочек не хватает. Во втором посте не ошибся, полностью универсально и переносимо так: ((void (*)(void))(0x0000))(); 1. Берем абстрактный 0 2.....делаем из него указатель (*)0 3. ... на функцию ((*)())0 4. ... без аргументов ((*)(void))0 5.... ничего не возвращающую (void(*)(void))0 6.... если вместо 0 какой-нибудь define выражение поставлять будут и забудут в выражении скобочки поставить,то для перестраховки ставим свои (void(*)(void))(0) 7. осталось вызвать функцию ((void(*)(void))(0))(); 8. Это я все к тому, что на форуме уже был спор по подобному прводу со стенаниями "непонятно!!!","скобочки!!!", "звездочки!!!". Решил пошагово обьяснить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 26 декабря, 2006 Опубликовано 26 декабря, 2006 · Жалоба 8. Это я все к тому, что на форуме уже был спор по подобному прводу со стенаниями "непонятно!!!","скобочки!!!", "звездочки!!!". Решил пошагово обьяснить. Стенают обычно те, кто вырос на Паскале. У эмбеддеров такие вопросы не возникают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться