Скачал я at91sam9m10-ekes-softpack-1.9.zip скомпилировал getting-started-project-at91sam9m10-ekes самбой залиливал в 0х0 и sram и ddram варианты результата никакого, подскажите что я не так делаю?
я бы пошел в обратную сторону:
- на понравившийся пин припаял бы светодиод с резистором или осциллограф
- зажег/помигал из линукса
- зажег/помигал из юбута
- зажег/помигал из бутстрапа
- зажег/помигал из стендалоне
Ну линух, убут и бутстрап все гуд мигает.
А вот как бутстрапом запустить стендалоне или тот же измененный бутстрап тут затык случился(
Не в какую не желает бутстрап грузить не самогоже себя измененного не те примеры из at91sam9m10-ekes-softpack-1.9.zip. И просто те примеры по адресу 0х0 тоже не работают(
Может что не так делаю уже незнаю что и делать направтье в нужном направлении
Зажог помигал тут все понятно, а вот как запустить хотябы один пример из at91sam9m10-ekes-softpack-1.9.zip непонимаю. Я просто уже реально незнаю что происходит и как с этим бороться.
вариант 1:
Пишу бутстрап в 0х0
Пишу убут в 0х40000
Запускаю грузится бутстрап затем убут и все работает
вариант 2:
в 0х0 не чего не меняю
Изменяю бутстрап дописав строку в main
dbg_log(1, "Jump to %d\n\r", JUMP_ADDR);
перед
return JUMP_ADDR;
Пишу измененный бутстрап в 0х40000
Запускаю грузится бутстрап 1 и дальше ничего т.е. после return JUMP_ADDR; результата нет.
вариант 3:
в 0х0 не чего не меняю
в 0х40000 пишу такой же бутстрап как и в 0х0
Запускаю грузится бутстрап 1 дальше грузится бутстрап 2 который начинает выдавать ошибку при попытке копировать себя же в тот же адрес где он находится
вариант 4:
в 0х0 пишу измененный бутстрап
в 0х40000 пишу измененный бутстрап
Запускаю и результат такой же как в варианте 3 только с разницей той что появилась строка которую вписал
Почему не работает 2-й вариант ни как не понимаю
Работает только когда в 0х40000 находится убут или точно такая же копия бутстрапа как и в 0х0
размер бинарника бутстрапа может быть "не более чем" а лучше меньше..
оставьте штатный бутстрап, а по адресу 0х40000 запишите свой бинарник "дергаю лапой/мигаю светиком" скомпилированный для адреса 0х40000
запускать второй раз бутстрап занятие бессмысленное..
тогда внимательно читайте раздел "стратегия загрузки" в доке на 9g45..
если на пальцах:
после включения питания нестираемый загрузчик в АРМе ищет в определенной последовательности устройство для загрузки с валидным кодом.. если не находит, но встает в режим загрузки через Samba
если находит, то грузит маленький бинарник (бутстрап) в свою внутреннюю оперативку и отдает туда управление..
задачи бинарника - проинтить контроллер SDRAM и устройство, где находится следующий бинарник (uboot, kernel)
отсюда можно понять, как формируется цепочка загрузки и запуска всей системы..
каждый последующий бинарник знает куда его загрузили и адрес запуска..
кстати, я ошибся - адрес для компиляции будет не 0х40000 (это адрес для записи во флеш), а другой - надо смотреть в настройках юбута..
я понимаю принцип запуска но не могу понять одного, как скомпилить приложение для запуска его бутстрапом из 0х40000 т.е. не бутстрап записанвый в этот адрес не те примеры не запускаются бутстрапом я понимая что дело в компиляции или в старт.с но где понять немогу т.к. чайник и нет рабочего примера стандалон для этой платы на gnu
переименуйте getting-started-project-at9~0-ekes-at91sam9m10-sram.bin в BOOT.BIN, скопируйте его на SD карту с FAT и снимите перемычку NAND CS чтобы загрузить с SD
см. at91lib/boards/at91sam9m10-ekes/at91sam9m10
ddram.lds
sram.lds