Перейти к содержанию
    

Несколько вопросов по lpc176x

А загрузка происходит так - бутлоадер...

Если речь идет не о неком неведомом бутлоадере, а о штатном загрузчике LPC, то все происходит не так, ибо начинается с того, что имеется аппаратная поддержка ремапа 256 байт векторов бутового загрузчика. Как работают вторичные загрузчики типа рекламируемого USB, лучше разбирать по исходным текстам, даже если они "бангалорские".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если речь идет не о неком неведомом бутлоадере, а о штатном загрузчике LPC, то все происходит не так, ибо начинается с того, что имеется аппаратная поддержка ремапа 256 байт векторов бутового загрузчика. Как работают вторичные загрузчики типа рекламируемого USB, лучше разбирать по исходным текстам, даже если они "бангалорские".

 

В штатном конечно не так.

Штатный честно запускает пользовательскую прогу передавая управление по значению второго слова в флеше.

И, если стартап слинкован в ОЗУ ( против чего линкер Кейла не возражает ) прога естественно вешается.

Так как идет обращение к коду в ОЗУ, который появится только после того, как будет выполнен тот кусочек кода в ОЗУ, куда идет обращение.

Кривой бангалорский загрузчик эту проблему успешно разрешает, запуская программу по адресу начала таблицы прерываний.

( вопрос только в том, это случайность или сознательный ход ).

 

По частоте тактового генератора USB пока ответов нет, придется похоже самому проверять.

Но это будет не скоро.

 

Ну ладно, ответ на вопрос о тактовой частоте USB может быть малоизвестен, но почему нет ответов на вопрос о

времени записи/чтения файла в флешь контроллера через JTAG?

Ни у кого нет такого заливщика? Или цыфры стыдно обнародовать?

 

Еще вопрос.

Озаботился я тут дизассемблером кода Thumb-2.

Поиск привел:

1. К заявлению "крутых перцев" - мол код там очень простой и дизассемблер пишеься за пару часов.

2. К двум дизассемблерам ( ~1 Мбайт ), которые по описанию очень крутые но у меня работать с ними не получилось, не нашел, как в них

свой бинарник загрузить.

3. К супердизассемблеру ( ~30 Мбайт ) который после скачивания радосно сообщил, что работает только с электронным ключем.

4. Ну и небезизвестная IDA, плагин которой под именем HexRays умеет работать с Thumb-2 начиная с версий, датированных июнем 2010 года,

то есть выпущенных вчера. И стоит этот плагин всего навсего 1600 евро.

 

Вот такая вот веселая история.

Остается дизассемблер от Кейла, с которым пока не разобрался, как в него свой бинарник загрузить и заставить симулятор

шагать по этому бинарнику.

Порка получается только - в стартапе забить нужный код в область с абсолютным адресом ( в моем случае - 0x2000 ).

Забил 4 слова, посмотрел, работает. Но забивать таким образом 500 слов как то не вдохновляет.

Изменено пользователем vallav

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня получилось - читается около секунды, пишется около 5 секунд.

Сильно сомневаюсь, что в LPC1000 зачем-то сильно ускорили запись во Flash и скрыли сей факт, но для LPC2000 времена записи во Flash нормировались и в режиме посектороного, т.е. неполного стирания только записть во Flash дожна занимать ~20*400ms + 400000/256*1ms что уже много больше намерянных "5 секунд". Сначала научитесь корректно делать оценки, а потом уже спрашивайте как там с JTAG, который, кстати, тоже работает очень на разных, в том числе и мегабитных скоростях.

 

 

По частоте тактового генератора USB пока ответов нет, придется похоже самому проверять.

Хотите маяться дурью вместо соблюдений рассчетных требований спецификаций - майтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сильно сомневаюсь, что в LPC1000 зачем-то сильно ускорили запись во Flash и скрыли сей факт, но для LPC2000 времена записи во Flash нормировались и в режиме посектороного, т.е. неполного стирания только записть во Flash дожна занимать ~20*400ms + 400000/256*1ms что уже много больше намерянных "5 секунд". Сначала научитесь корректно делать оценки, а потом уже спрашивайте как там с JTAG, который, кстати, тоже работает очень на разных, в том числе и мегабитных скоростях.

Дык просто все было.

В тотал-коммандере - стер исходный файл с USB-диска.

Нашел файл размером в 400 килобайт, выбрал копи на USB-диск, нажал - поехали - и засек, сколько времени ехали.

Получилось - 5 секунд.

Вы забыли привести цифры - сколько времени пишется и сколько стирается по JTAG.

Или просто не знаете?

А тогда вся эта Ваша философия "крутого перца с горячими ушами" - зачем?

Я знаю, что Вы - крутой перец, и что уши у Вас не холодные...

 

 

 

Хотите маяться дурью вместо соблюдений рассчетных требований спецификаций - майтесь.

 

Так я же пояснил = зачем.

Если USB спокойно пашет при отклонении тактовой на +-10%, то в приборах, которые для себя - использовать IRC.

В приборах, которые для Вас - естественно все строго по спецификации...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы забыли привести цифры - сколько времени пишется и сколько стирается по JTAG.

Или просто не знаете?

Нет, просто опять не дооценил степень Вашей некометентности :(. Для тех, кто не способен к самостоятельному восприятию и анализу информации, сообщаю, что любой LPC загрузчик, в том числе и JTAG, использует открытый IAP интерфес штатного загрузчика для работы с Flash и в части записи-стирания все равны. Отличия имеют место быть в тактовой частоте контроллера, качестве самого загрузчика и размерах блоков которыми он оперирует, ну и только один из факторов, который при многомегабитных (12..25Mbit частоты интерфейсов JTAG/SWD у Cortex-ов ) скоростях передачи уже далеко не самый определяющий, это скорость интерфейса передачи этой самой информации загрузчику.

При 12Mhz тактовой данные по JTAG загружаются со скоростью 720Kbytes/s

В тотал-коммандере...

Вот я и говорю - учитесь сначала корректно делать оценки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При 12Mhz тактовой данные по JTAG загружаются со скоростью 720Kbytes/s

 

Вот я и говорю - учитесь сначала корректно делать оценки.

 

Да... просто привести - у меня 400 Кбайтный файл заливается в контроллер по JTAG xx секунд, читается из контроллера yy секунд -

жаба душит?

Изменено пользователем rezident
Нарушение п.3.4 Правил форума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

жаба душит?

Нет, просто характер не позволяет давать глупые ответы, даже на глупейше-пустейшие вопросы. Ну а нормальные развернутые ответы, Вы воспринимать хронически не способны. В общем мне так "общаться" окончательно надоело. Ответов больше не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, просто характер не позволяет давать глупые ответы, даже на глупейше-пустейшие вопросы. Ну а нормальные развернутые ответы, Вы воспринимать хронически не способны. В общем мне так "общаться" окончательно надоело. Ответов больше не будет.

 

Понятно. Значит Вы - fabless, железа у Вас нет а все - только теоретически...

Бывает...

Неужели эту ветку не читает кто либо, у кого есть lpc1768 подключенная к JTAG_у?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неужели эту ветку не читает кто либо, у кого есть lpc1768 подключенная к JTAG_у?
Ну у меня есть. На работе лежит starterkit-овская плата SK-MLPC1768 и MT-Link. Только после перечитывания ветки особого желания делать что-либо специально для вас я не испытываю. Вдруг полученные циферки не подойдут к вашим убеждениям и я же еще и виноват останусь :laughing: ИМХО документации от производителя нужно можно чаще всего верить. А если вы не умеете ее читать и понимать, то нужно учится этому. "Терпение и труд все перетрут" ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4. Ну и небезизвестная IDA, плагин которой под именем HexRays умеет работать с Thumb-2 начиная с версий, датированных июнем 2010 года,

то есть выпущенных вчера. И стоит этот плагин всего навсего 1600 евро.

Плагин нужен только для декомпиляции кода в C. Для простого дизассемблирования достаточно самой иды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну у меня есть. На работе лежит starterkit-овская плата SK-MLPC1768 и MT-Link. Только после перечитывания ветки особого желания делать что-либо специально для вас я не испытываю. Вдруг полученные циферки не подойдут к вашим убеждениям и я же еще и виноват останусь :laughing: ИМХО документации от производителя нужно можно чаще всего верить. А если вы не умеете ее читать и понимать, то нужно учится этому. "Терпение и труд все перетрут" ;)

 

То есть, если по описанию одно а в натуре другое, то сомневаться в правильности описания - не стоит?

Вот пробовал в симуляторе Кейла - по ресет CPU он ставит sp - значение первого слова из флеша, ip - значение второго слова из флеша.

Меняю значение sp на большее. Запускаю, в main приходит с sp, близким к значению из флеша.

Так где на самом деле инициализируется стек? Аппаратно при сбросе? Или все же кодом инициализации?

Я исходно верю описанию. Но когда в железе получается по другому, я начинаю верить железу.

 

Или вот эта ахинея с проверкой наличия пользовательской программы.

Генератор пользовательских программ - Кейл - на эту проверку откровенно забил.

А вот изготовители заливщиков этим озаботились и тупо меняют 8 слово флеша независимо от того, что во флеш заливается.

Я вначале в это просто не поверил, думал - разигрывают...

Получается, если я заливаю работающую прогу от Кейла но не правильным заливщиком - она проверку не пройдет и не запустится.

Если я заливаю любую хню, но правильным заливщиком, она проверку пройдет и запустится.

А если я в Кейле слинковал прогу так, что у меня в флеше всего 4 вектора в таблице ( что необходимо для запуска ) а вся таблица слинкована в ОЗУ,

заливщик прогу испортит ( так как в 8 слове флеша - код загрузки ) и прога запустится и повесится.

Полагаете это - нормально?

 

Или с тактовой USB.

Почему то UART, у которого установки фазы клока по синхроимпульсу ( старту ) должно хватать на 10 тактов - от IRC работает, точности хватает.

А USB, у которой синхроимпульсы максимум через 5 тактов и есть преамбула для настройки тактового генератора ( а не просто установка

фазы клока ) точности IRC не хватает... Все равно - должен верить описанию - USB с IRC - низзя.

Кстати, FTDI - можно а вот мне все равно - низзя...

 

С цифрами по скорости заливки/чтения флеши через JTAG.

Я на самом деле не знаю, какие они.

Я знаю только, что заливать 32 Килобайта настолько долго, что выгоднее перегнать прогу в ОЗУ и ставить точки остановки там, чем ставить

их перезаливкой проги в флешь. Или это делается из экономии - чтобы не использовать ненароком отведенный лимит в 100 000 заливок...

Если стыдно их приводить - то зачем эта вся философия по поводу температуры моих ушей?

 

 

 

 

Плагин нужен только для декомпиляции кода в C. Для простого дизассемблирования достаточно самой иды.

 

Как то не хочется ставить 100 мегабайтную прогу только для того, чтобы она делала простое дизассемблирование кода.

Да и встречал в инете, что IDA старых версий не все Thumb-2 кода берет.

Но когда дизассемблер Кейла меня достанет, придется ставить IDA.

 

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

Если он до main не добрался а вылетел по дороге ( ну проги у меня такие ) то он как то странно работает.

Ресетишь CPU, ставищь IP на начало кода инициализации - код выполняется а IP остается неизменным.

Пришлось ставить по дороге ловушку, покрутившись в которой симулятор выподает в меню. И вот тогда по коду ходит.

И с загрузкой своего бинарника в дизассемблер. Неужели низзя?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я знаю только, что заливать 32 Килобайта настолько долго, что выгоднее перегнать прогу в ОЗУ и ставить точки остановки там, чем ставить

их перезаливкой проги в флешь.

32 килобайта заливаются за несколько секунд. Откуда бредни про "настолько долго"?

 

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

Загляните наконец в настройки проекта "Options for target..." и на вкладке Debug на стороне симулятора (левая половина) уберите галку с "Run to Main()".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Контрольные вопросы для Принца Флоризеля, который, как известно, знал все заранее и любое решение находил

несколько ранее собеседников:

1. Сколько указателей стека у LPC176x (Cortex-M3)?

2. Какой из них инициализируется аппаратно?

3. Есть-ли какие либо ограничения на софтовую инициализацию указателей стека?

4. Какие действия выполняются в startup до запуска main()?

5. Функция __main() в default startup KEIL это то-же самое, что и main()?

6. Сколько записей в таблице векторов Cortex-M3 жестко отведено под нужды ядра?

7. Какие утилиты входят в классический набор утилит binutils, каковы их аналоги в пакете от KEIL?

8. Что умеет делать утилита fromelf из комплекта поставки KEIL?

 

Ну и вообще начинающим будет на мой взгляд небесполезно ответить для себы на вопросы в контексте последних постов.

Флоризель, само собой, все и так знает, ну а с другими форумчанами можно продолжить, если потребуются уточнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 килобайта заливаются за несколько секунд. Откуда бредни про "настолько долго"?

 

Дык я же объяснил.

Существует такая правктика - для отладки кусок проги переносить в ОЗУ.

Чтобы отладка шла быстрее. Вроде ограничение в скорости там одно - время перезаливки проги с новыми точками останова.

Или причина переноса отладки в ОЗУ - другая?

И почему сразу - бредни?

Может лучше использовать - заблуждения?

 

Загляните наконец в настройки проекта "Options for target..." и на вкладке Debug на стороне симулятора (левая половина) уберите галку с "Run to Main()".

 

Спасибо.

А как по поводу заливки своего бинарника и внесение исправления в дизассемблируемый код?

inline asstmbly у меня все время серая.

И как отключить перескок полоски скроллинга на панели дизассемблера - больно хлопотно ставить адресс конкретный адресс когда шаг установки в 300 байт.

 

 

 

Контрольные вопросы для Принца Флоризеля, который, как известно, знал все заранее и любое решение находил

несколько ранее собеседников:

1. Сколько указателей стека у LPC176x (Cortex-M3)?

 

Два.

 

2. Какой из них инициализируется аппаратно?

 

Ни какой. Но один из них инициализируется в коде инициализации.

Щас гляну, как он называется - во - MSP.

 

3. Есть-ли какие либо ограничения на софтовую инициализацию указателей стека?

 

Ага. Его нелзя ставить на начало ОЗУ. И туда, где нет ОЗУ.

И выравнивать надо.

 

4. Какие действия выполняются в startup до запуска main()?

 

Ой, много. Толко вот попасть на код инициализации не всегда получается.

Вы про линкер уже прочли? Умеете модули линковать в ОЗУ?

 

5. Функция __main() в default startup KEIL это то-же самое, что и main()?

 

Не а. Это и есть начало кода инициализации.

В стартапе на нее только ссылка. Сама она от линкера.

 

6. Сколько записей в таблице векторов Cortex-M3 жестко отведено под нужды ядра?

 

Четыре первых. Реально используется два первых при запуске проги.

 

7. Какие утилиты входят в классический набор утилит binutils, каковы их аналоги в пакете от KEIL?

 

Без понятия.

 

8. Что умеет делать утилита fromelf из комплекта поставки KEIL?

 

Бинарник для заливки посторонними заливщиками.

 

Ну и вообще начинающим будет на мой взгляд небесполезно ответить для себы на вопросы в контексте последних постов.

Флоризель, само собой, все и так знает, ну а с другими форумчанами можно продолжить, если потребуются уточнения.

 

Надеюсь Вас не затруднит дать на свои вопросы правильные ответы?

Или как всегда - характер не позволяет давать глупые ответы, даже на глупейше-пустейшие вопросы...

Изменено пользователем rezident
Удалено дублировние текста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ответы на все вопросы, кроме первого и частично третьего, данные vallav не верные, если не считать "Ой много" и "Без понятия", которые вообще не ответы. Особенно заслуживает внимания шедевр "Сама она от линкера" :). Примерно так-же объясняли множество вещей первобытные люди - "она от бога", и точка. Остальное соответственно домысливали, как умели, измышляя легенды и мифы.

Продолжаем опрос:

1. Сколько в ядре Corteх-M3 поддерживается Breakpoint и Watchpoint.

2. Что такое за Flash Patch механизм?

3. Зачем при наличии 1 и 2 пунктов нужна "перезаливка проги с новыми точками останова"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...