Камень stm32f103c8t6
Есть некий код по адресу 0x08000A000 и он там есть. Код не сгенерирован кейлом, он просто там лежит. Программа сама его туда предварительно кладёт.
Прошивка пытается его запустить таким образом:
const unsigned char *prog = rom+(24*1024);
typedef int func(void);
func* f = (func*)(prog);
f();
В дебаггере код запускается через BLX R5
В регистре R5 лежит адрес 0x08000A000
И тут в общем-то проблема - срабатывает прерывание MemManage HardFault. Именно на BLX R5, то есть до самого кода даже не хододит.
Долго пытался допереть и всё проверял, пока не наткнулся на инфу об MPU. Но по нему не так много инфы, вроде бы есть геристры, но там только ноли.
Terminal::sendNumber(*((unsigned int*)0xE000ED90), true);
Terminal::sendNumber(*((unsigned int*)0xE000EDA4), true);
Terminal::sendNumber(*((unsigned int*)0xE000ED98), true);
Terminal::sendNumber(*((unsigned int*)0xE000ED9C), true);
Печалька в общем.
Запуск программы из памяти stm32f103c8t6
- black_lizard
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вс сен 23, 2012 05:51:35
Запуск программы из памяти stm32f103c8t6
Собираю самопальный мини-компьютер
- Реклама
Re: Запуск программы из памяти stm32f103c8t6
[uquote="black_lizard",url="/forum/viewtopic.php?p=3543146#p3543146"]В дебаггере код запускается через BLX R5
В регистре R5 лежит адрес 0x08000A000[/uquote]
Нулевой бит адреса должен быть 1.
В регистре R5 лежит адрес 0x08000A000[/uquote]
Нулевой бит адреса должен быть 1.
- black_lizard
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вс сен 23, 2012 05:51:35
Re: Запуск программы из памяти stm32f103c8t6
Я пробовал этот вариант. PC намертво зависает на адресе команды BLX никуда не переходя, а дебагер не даёт двигаться дальше. То есть это то, как он и должен себя вести? Оу. Возможно это ограничения бесплатной версии... только сейчас об этом подумал. Спасибо, наверное, действительно так.Reflector писал(а): Размер шрифта:
Собираю самопальный мини-компьютер
