Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » ARM
Загрузка+векторы MAT91SAM9260 начинающему
Jury093
Добавлено 23.03.2010 09:26 Сообщение: 11
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Зажигаю нулем
Повторюсь, что вручную это делается элементарно, без инициализации всяких там Clock, Watchdog, Power controller.
Тупо вписывал 0х40000 по адресам: 0хFFFFF600
0xFFFFF610
0xFFFFF634

угу, тут все понятно, я свое время наступал на грабли - хорошо помимо 1>CODR прописывать 0>SODR в соответствующий разряд и наоборот..

Цитата
А как я понимаю из последнего рисунка, то обсуждаемые векторы это типа ссылки на обработчики своих исключеий, так? Но если так, то все равно не понятно с начальным адресом программы


да, привел чисто для примера как выглядит начало дизасма для загрузчика PXA270 (под руку подвернулся)
я проглядел - что у вас за плата - или что-то самосборное? и способ загрузки и запуска своего кода?
кстати, Саша (sasami) правильно посоветовал поискать на atmel.com примеры приложений (там их дофига), как говорится - "все давно придумано и написано"
чисто для анализа - вот кусок начального загрузчика (к сожалению от nuc950), просто посмотреть на синтаксис и ключи. я, когда писал на асме, потом код скармливал дизассемблеру, чтобы посмотреть - все ли правильно нагенерилось :)
Код
.globl _start
_start: b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
.balignl 16,0xdeadbeef
/*
*************************************************************************
*
* Startup Code (reset vector)
*
* do important init only if we don't start from RAM!
* relocate armboot to ram
* setup stack
* jump to second stage
*
*************************************************************************
*/
_TEXT_BASE:
.word TEXT_BASE

.globl _armboot_start
_armboot_start:
.word _start
/*
* These are defined in the board-specific linker script.
*/
.globl _bss_start
_bss_start:
.word __bss_start
.globl _bss_end
_bss_end:
.word _end
#ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START
IRQ_STACK_START:
.word 0x0badc0de
/* IRQ stack memory (calculated at run-time) */
.globl FIQ_STACK_START
FIQ_STACK_START:
.word 0x0badc0de
#endif
/*
* the actual reset code
*/
reset:
/*
* set the cpu to SVC32 mode
*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
ldr pc, _start_armboot
/*
* we do sys-critical inits only at reboot,
* not when booting from ram!
*/

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.03.2010 09:41 Сообщение: 12
sasamy
4.70

Пункты: 77333
Регистрация: 14.08.2009
Мне просто интересно сколько лет он собирается делать диплом с темой
Цитата
Передо мной стоит задача создать анализатор акустического спектра на этой плате


если элементарно не хочет проинициализировать основные устройства. процессор стартует на частоте 32 кГц на внутренней sram 4 кбайт без внешней sdram. При этом все лепит на асме и очевидно не читал даташит - чтобы gpio заработал ему хотя бы нужно клок включить в pmc.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.03.2010 10:49 Редактировалось 23.03.2010 10:50 Сообщение: 13
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Мне просто интересно сколько лет он собирается делать диплом с темой
Передо мной стоит задача создать анализатор акустического спектра на этой плате


А заклепки мы поставим деревянные :)
Исходя из трудов на Си, описанных тут
за 2-3 месяца на асме нереально (на мой взгляд)


Цитата
если элементарно не хочет проинициализировать основные устройства. процессор стартует на частоте 32 кГц на внутренней sram 4 кбайт без внешней sdram. При этом все лепит на асме и очевидно не читал даташит - чтобы gpio
заработал ему хотя бы нужно клок включить в pmc.


согласен. я бы упростил себе задачу - грузил бы свою аппликуху средствами bootstrap - практически халява :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
AlexCorp
Добавлено 23.03.2010 14:48 Сообщение: 14
AlexCorp
5

Регистрация: 22.03.2010
Пол: Мужчина
Из: Комсомольск-на-Амуре
На самом деле анализ спектра сводится к элементарному интегрированю в дискретном пробразовании фурье из множественных выборок аналоговой функции.
Програмно интгралы вичисляются элементарно. Есть куча методов. Самый простой и довольно точный метод Рунге-Кута это всего 5-7 операторов на языке высокого уровня. Ну да, на асме придется расширить код, но это не смертельно. Далее сгенерировать график на жки - это просто, в свое время проектировал систему отображения информации на панели ГИПС-16, знаю что старье, но тем не менее.

Вся беда в том чтобы мой код выполнялся.

Обсуждать чужие планы конечно легко, но лучше бы посоветовали чего полезного. Нигде ведь нормально не написано как по шагам запустить прогу с нуля. Вот и приходится тыкаться и тупить.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 23.03.2010 15:09 Сообщение: 15
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Вам же говорят - возьмите готовое. Да вот хотя бы из bootstrap файл crt0_gnu.S и ничего что он для gcc - вы ведь не пасуете перед трудностями ;)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.03.2010 15:23 Редактировалось 23.03.2010 15:24 Сообщение: 16
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Обсуждать чужие планы конечно легко, но лучше бы посоветовали чего полезного. Нигде ведь нормально не написано как по шагам запустить прогу с нуля. Вот и приходится тыкаться и тупить.

я бы и попробовал посоветовать, да так и не увидел вашу методу попыток запуска бинарника и собственно на чем запускаете.. (не пустобрехства ради) понять где возможная ошибка

Цитата
Повторюсь, что вручную это делается элементарно, без инициализации всяких там Clock, Watchdog, Power controller.

если используете Самбу, то она вполне может что-нить самостоятельно настроить и не сообщить об этом..
вытащите с atmel.com хотя бы исходники bootstrap для 9260 - чтобы понять стартовые телодвижения

зы пока писал - уже насоветовали :)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
AlexCorp
Добавлено 23.03.2010 15:31 Сообщение: 17
AlexCorp
5

Регистрация: 22.03.2010
Пол: Мужчина
Из: Комсомольск-на-Амуре
слил оригинальный бутстрап, сижу изучаю
Спуститься к концу Подняться к началу
Персональная информация
AlexCorp
Добавлено 24.03.2010 12:14 Сообщение: 18
AlexCorp
5

Регистрация: 22.03.2010
Пол: Мужчина
Из: Комсомольск-на-Амуре
Решил сделать по нормальному.
Изучил бутстрап. В нем сказано, что заливать его надо самбой в датафлэш с адреса 0х0, что исполняемая программа должна находится по адресу 0х8000, что после инициализации бутстрап копирует ее в sdram в адрес 0х23F00000.
Сделал как написано, а далее непонятное для меня явление:
проверяя адрес 0х23F00000 увидел там свою прогу, но как она могла там оказаться, если моя SDRAM кончается адресом 0х22000000 (начало на 0х20000000, 32МБ) а дальше никаких памятей нет.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 24.03.2010 13:12 Редактировалось 24.03.2010 13:15 Сообщение: 19
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Сделал как написано, а далее непонятное для меня явление:
проверяя адрес 0х23F00000 увидел там свою прогу, но как она могла там оказаться, если моя SDRAM кончается адресом 0х22000000 (начало на 0х20000000, 32МБ) а дальше никаких памятей нет.

на оригинальных китах от Атмела ставят 64МБ - это надо учитывать при адаптации всей цепочки оригинальных исходников на 32МБ плату SK..
в частности в файле \board\at91sam9260ek\dataflash\at91sam9260ek.h
исправить #define JUMP_ADDR 0x23F00000 /* Final Jump Address */ куда-нить пониже в диапазон свой памяти
эффект считывания с "фантомной" памяти связан с физическим сигналом Chip Select 1/SDRAMC, которым выбирается SDRAM банк в дипазоне адресов 0x2000.0000-0x2fff.ffff. Т.о. при 32МБ считывая с шагом адреса 0х0200.0000 получим одинаковое содержимое

зы где-могу ошибиться, но примерно как-то так..

зы2 я бы не "терзал" dataflash, а грузил бы либо самбой в SRAM/SDRAM либо посредством uboot туда же. Dataflash целее будет

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
AlexCorp
Добавлено 24.03.2010 15:17 Сообщение: 20
AlexCorp
5

Регистрация: 22.03.2010
Пол: Мужчина
Из: Комсомольск-на-Амуре
То что надо заменить #define JUMP_ADDR 0x23F00000 это я понял.
В папке с бутстрапом в доке написано что его потом надо дополнительно скомпилить для получения нового бинарника командой make. Я так понял что это делается в Buildenv.bat в той же папке. Но дело в том что после команды make консоль мне выдает что "make не является внутренней или внешней командой..."

Ввожу так, как в документации:
>cd \boards\at91sam9260ek\dataflash
>make

а далее ругательства.

И еще поскажите плиз, могу ли я в #define JUMP_ADDR указать самое начало моего ОЗУ?
Заранее благодарен за разьяснения
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » ARM