AndrejM
-
Постов
54 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные AndrejM
-
-
Добрый день.
вопрос к ELVEES R&D Center , отладочная плата Салют-ЭЛ24ОМ1 рев.1.2 , я знакомлюсь с документацией на процессор и исследую периферию , для этого пишу небольшие bare-metal приложения и запускаю из под u-boot (elf с загрузкой с SD карты).
Несколько строк на ассемблере запустить получается , в том числе что то вывести в uart , а вот запуск более крупной сборки заканчивается примерно так:
reading test2
272744 bytes read in 31 ms (8.4 MiB/s)
mcom# bootelf 0x60000000
CACHE: Misaligned operation at range [40010000, 40013038]
CACHE: Misaligned operation at range [40013038, 40013058]
CACHE: Misaligned operation at range [40013058, 40013100]
CACHE: Misaligned operation at range [40013100, 40013110]
CACHE: Misaligned operation at range [40013110, 400134bd]
CACHE: Misaligned operation at range [400134bd, 400134d6]
CACHE: Misaligned operation at range [400134d6, 400134da]
CACHE: Misaligned operation at range [400134dc, 400134fc]
CACHE: Misaligned operation at range [400134fc, 4001351c]
CACHE: Misaligned operation at range [4001351c, 40013538]
CACHE: Misaligned operation at range [40013538, 4001354c]
CACHE: Misaligned operation at range [4001354c, 4001356c]
CACHE: Misaligned operation at range [4001356c, 40013574]
CACHE: Misaligned operation at range [40013578, 400155ac]
CACHE: Misaligned operation at range [500166ac, 500196ac]
CACHE: Misaligned operation at range [50100000, 50100804]
## Starting application at 0x40000000 ...
plU cm
ete.
*************** test2 start *****************
undefined instruction
pc : [<00000004>] lr : [<40013108>]
reloc pc : [<c0082044>] lr : [<00095148>]
sp : 50019670 ip : 4001310c fp : 7ff800cc
r10: 00000002 r9 : 7f76dee0 r8 : 7f78bad8
r7 : 5001967c r6 : 7f78bae0 r5 : 00000000 r4 : 00000000
r3 : 00000020 r2 : 00000804 r1 : 00000000 r0 : 000000ff
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
Можно ли как то, используя u-boot загрузить elf на исполнение с предварительно выключенным MMU и кэшами? Ну или как , вы советуете поступить , для решения озвученной выше задачи?
-
Для управления критически важными объектами в плане требований к архитектуре и к разработке все уже придумано, и более, как военные уставы написано кровью. Можете изучить соответствующий ГОСТ МЭК61508 (он же IEC61508), а если решите использовать несколько архитектур то тогда вам еще понадобится МЭК61784, прочитайте там требования к безопасным коммуникационным профилям и оцените надо оно вообще для вашей задачи, или же достаточно будет, к примеру, то же геркулес взять и в рамках одного CU решить. Ну и требования к разработке ПО посмотрите, прежде чем решение принимать, там много сюрпризов типа запрета арифметики с указателями, фактический запрет приведения типов, запрет использования динамической памяти, запрет использования внешних прерываний и.т.д. Я вас уверяю, что даже после поверхностного изучения темы, ваша альтернатива выбора контроллера уложится в два пальца на руке (ну и третий отказаться от задачи), если вы конечно не представитель корпорации типа Боинга.
Ну и до кучи. Безопасность и надежность это не одно и тоже, более того требования там противоположные, понятно, что конечное изделие должно как то и тому другому удовлетворять, вот поиск этого компромисса и есть настоящий вопрос.
-
загляните в примеры для freertos , там есть для cortex-a9 реализация FreeRTOS_IRQ_Handler в файле portASM.s .
стартуете в supervisor , в обработчике снова в него переключаетесь
FreeRTOS_IRQ_Handler
; Return to the interrupted instruction.
SUB lr, lr, #4
; Push the return address and SPSR
PUSH {lr}
MRS lr, SPSR
PUSH {lr}
; Change to supervisor mode to allow reentry.
CPS #SVC_MODE
; Push used registers.
PUSH {r0-r4, r12}
............................
-
возьмите другую плату да проверьте.
у меня есть тоже запиленная до дыр discovery f429 , и подобные же спецэффекты не так давно начали проявляться , проблема судя по всему по питанию , ибо если на 0.1 V подать больше , то все работает.
-
mantech , а как вы сейчас (ну до того как "бутлодырем" занялись) грузите и запускаете приложение?
-
Вам собственный бутлоадер нужно перезапускать? я то понял что он у вас отработал и с запуском приложения проблема?
-
извиняюсь , наврал я вам . это я так хотел сделать , но не получилось . в итоге выходной файл IAR в формате binary , и запуск с адреса загрузки , там reset vector
__vector:
ARM
LDR PC,Reset_Addr ; Reset
DATA
Reset_Addr: DCD __iar_program_start
map
__vector 0x80000000 Code Gb cstartup.o
-
У меня подозрение на 2 вещи: 1) с какого адреса нужно делать запуск и правильность процедуры запуска,
и второе, ИАР компилит бинарник либо со встроенной загрузочной записью (IVT, DCD и т.д.) либо без нее.
Каким образом можно стартовать оба случая, т.е. точки входа - непонятно.
Пытался с 0 адреса(по оффсету, конечно), +4, как в стм, и +20, как в вибриде - ничего.
Потом попробовал просто перейти на 0й адрес, по идее, там должен бутром стартануть, но тоже нет, что за магия такая??? Вот тут бы кто разъяснил...
а к чему эти искания? IAR (если его об ином не просить) сгородит вам в elf формате , при загрузке image прочитали в заголовке адрес точки входа (e_entry) от туда и запускайте. или в чем то другом вопрос?
-
NVIC_InitStructure.NVIC_IRQChannelPriority = configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY + 1;
посмотрите в отладчике какой реально приоритет функция NVIC_Init установит в IP регистр , не знаю как для F072 , но для F407 NVIC_Init это делает не правильно ,в результате вы можете иметь проблемы с вызовом функций freertos из вашего прерывания.
-
Там еще bootloader есть... По Reset именно в него входит процессор, и он что-то там делает согласно режима загрузки. По идее, если сделать Reset CPU через эмулятор, тогда процессор будет "в чистом состоянии", если же просто подключиться после подачи питания, то он прервет нечто, что исполняется в текущий момент, в каком-то неясном состоянии.
для чистоты экспериментов , у bootloader есть режим Emulation Debug если его установить (boot mode pins) то после reset ничего вообще исполняться не будет в ожидании коннекта через jtag
-
не знаю что вам еще посоветовать ,а как это все конструктивно выглядит ? там с питанием ,с проводами все хорошо? :)
connect через раз у меня был на am3359 ,если в настройках эмулятора опция target reset установлена software , при установке в hardware reset все нормализовалось. посмотрите наверное в CCS есть что то подобное.
-
запускаю коннект, вижу, как частота наростает и устанавливается на 10 MHz.
там же есть вариант адаптивного режима по частоте с установленным лимитом , если именно он выбран тогда не будет она подниматься выше того что установили
-
да, действительно не похоже ...
по той ссылке что выше я давал , в коментах к gel файлу:
Note: Make sure the MMU is disabled when you run the scripts in order to properly read the registers. You can disable the ARM’s MMU in CCS by going to Tools -> Advanced ARM Features.
-
Счас ещё раз попробую. Вообще по-умолчанию Target Timeouts - Very Fast, JTAG TCLK 10.368 MHz
ну раз при более медленной clk и длинных timeouts "виснет" , значит при значениях по умолчанию просто по timeout вываливалось - не работает интерфейс эмулятора.
-
С такими настройками CCS вообще висит.
а какие были настройки?
взял и тупо вбил в гугл "ccs data bus not ready" и получил ровно вашу тему ,и ровно то что я посоветовал.
http://e2e.ti.com/support/dsp/omap_applica...860/551153.aspx
-
Data bus is 'not ready'
сдается мне это с эмулятором проблемы. у вас как тактирование установлено ? (jtag tclk) и таймуаты для target .
поставте 1Mhz и самые длинные timeouts .
-
Какую версию поставили?
У меня в этой папке его и нету, есть в папке не eval bord, но что-то с ним не работает.
Прикрепите пожалуйста Ваш GEL.
расширение изменил на txt иначе не дает прикреплять
-
и замечено, что для данного процессора GEL-файл отсутствует. Пытаюсь понять, в нем ли проблема?
странно что нет , я хоть и не пользую CCS , но ставил его как раз чтобы взять gel и на его основе сделать mac для IAR.
вот посмотрел в том что установлено есть \ti\ccsv5\ccs_base\emulation\gel\am1808.gel , оно вам не подходит?
-
Спасибо, счас посмотрю все Ваши ссылки. Насколько понимаю, одна из функций GEL-файла это то, что он описывает карту памяти для дебагера, т.е. на основании его заливается прошивка? Он как бы необходим CCS. Как тогда получается что для остальных процессоров в папке c:\ti\ccsv5\ccs_base\emulation\gel\ присутствуют соответствующие GEL файлы, а для AM1808 нет. В примерах StarterWare на AM1808 нашёл такой файлик и попробовал подключать, но не прокатило, выбрасывает ошибки. Их можно коментить и до какой-то поры всё работает, процессор модключается, могу смотреть, перезаписывать адреса On-Chip RAM, но вот заливка прошивки не проходит. Это баг TI, что в CCS нет нормального файла или подразумевается, что я должен написать его сам?
ситуация следующая , поскольку flash памяти нет ,то ваше приложение для работы должно быть загружено либо во внутренюю sram либо во внешнюю ddr память . обычно порядок загрузки такой , rom-boot (загрузчик в нестираемом пзу процессора) с одного из устройств загрузки считывает код и размещает его во внутренюю sram (ну и управление ему передает) . в задачи этого код (загруженного в sram) стоит инициализация всего и вся - все клоки , power менеджмент , и самое главное инициализирует внешнюю ddr и загружет туда ваше приложение (ну к примеру с sd карты) и передает ему управление.
это все относилось к "рабочему режиму" , при отладке ваш jtag может сразу загручить что угодно и куда угодно (потытаться это сделать) , но если вы собрались использовать внешнюю память , то кто то должен произвести ее иницализацию , для этого пишут скрипт с макросами , который будет в начале исполнен отладчиком ,а потом уже загружено приложение. это и есть этот самый gel . соотвественно нужен он в ,основном , когда то куда вы собираетесь разместить когда приложения требует каких то действий перед самой загрузкой. для приложения которое будет работать из onchip sram макро-файл исполнять не нужно. А вообще очень полезно этот файл написать самостоятельно (взяв что то для примера) , это знания о базовых вещах процессора.
я не знаю , может быть для am1808 нужны какие то предварительные иницаилизационные действия , которые в штатном режиме делает boot-rom , но для более старших моделей TI этого не требуется , и если вы ,скажем попытались загрузить в "пустоту" то просто получите ошибки при верификации.
а вообще поищите gel , есть ведь всякие dev-boards с этим процессором .
-
В мануале на AM1808 прописано, что адреса 0х8000_0000 - 0х8001_FFFF (128K) - On-Chip RAM, туда и пытаюсь залить, или Вы что-то другое увидели?
да , мне показалось там 0xB0000000 , ваша правда во внутреннюю память грузить пытаетесь.
-
при попытке залить прошивку выбрасывает ошибку (см. рисунок).
Связана ли эта ошибка с данным файлом? И как поступить?
судя по картинке "прошивку" вы пытаетесь залить в диапазон адресов внешней памяти (ddr) ,есть она у вас или нет я не знаю , но то что вы не нашли gel говорит о том что она как минимум не инициализирована. Попробуйте для начала загрузить во внутреннюю sram , когда все получится тогда уже разберетесь как в ddr грузить и зачем gel нужен.
-
И что это? Демонстрация умения искать в гугле, и ориентироваться на сайте TI?
это свежая информация по теме BBB.
если лень смотреть то вот резюме:
"Бесплатный комплект для разработки ПО (SDK) Linux от компании TI позволяет быстро и легко оценить программное обеспечение Linux на базе ядра 3.12.10 для процессоров Sitara AM335x и компьютеров BeagleBone Black на базе процессоров AM335x.
Благодаря этому новому предложению стержневой ветви встроенные конструкторы, использующие процессоры Sitara, смогут в полной мере воспользоваться поддержкой новейших устройств, функций и исправлений в новых версиях ядра Linux. Эти улучшения будут предлагаться с регулярным интервалом, так что со временем вы сможете почувствовать пользу от растущей стабильности, надежности и качества стержневой ветви Linux. Новейший Sitara Linux SDK 7.0 для процессоров AM335x "
-
-
То есть при отладке eMMC не портится и можно смело запускать из под иара?
да , для порчи eMMC нужно приложить отдельные усилия.
Салют-ЭЛ24ПМ2
в ARM
Опубликовано · Пожаловаться
Вопрос снят, разобрался. Скачал с git-а u-boot ,и собрал как мне нужно.
Но появился еще один.
Мне к этой отладке дали еще устройство под названием mc-usb-jtag , документации нет , из программного обеспечения одна утилита , которой , как я понял можно spi flash прошить.
Есть ли у вас на него документация? На сколько это полноценный j-tag, и можно ли его с oprnocd по использовать для ядра cortex-a9?