реклама на сайте
подробности

 
 
10 страниц V  « < 5 6 7 8 9 > »   
Reply to this topicStart new topic
> Несколько вопросов по lpc176x
vallav
сообщение Jun 6 2010, 12:42
Сообщение #91


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(zltigo @ Jun 6 2010, 16:26) *
Ответы на все вопросы, кроме первого и частично третьего, данные vallav не верные,


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

Сообщение отредактировал rezident - Jun 6 2010, 21:36
Причина редактирования: Излишнее цитирование.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 6 2010, 13:12
Сообщение #92


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(vallav @ Jun 6 2010, 16:12) *
2. Какой из них инициализируется аппаратно?

Ни какой. Но один из них инициализируется в коде инициализации.
Щас гляну, как он называется - во - MSP.

Почему до Вас никак не дойдёт, что один из указателей SP инициализируется аппаратно?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
vallav
сообщение Jun 6 2010, 13:43
Сообщение #93


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(sonycman @ Jun 6 2010, 17:12) *
Почему до Вас никак не дойдёт, что один из указателей SP инициализируется аппаратно?


Так я разве спорю.
Конечно, core reads the start sp...

Только как?
Мое мнение, в NXP не идиоты делать это аппаратно, когда это можно с тем же успехом сделать программно в коде инициализации.
Что там и делается.
Полагаете - просто на всякий случай? Код инициализации игнорирует значение sp при входе в него и записывает в sp ( программно )
значение, равное __initial_sp.
Кстати, задумайтесь - после сброса начинает работать бутлоадер.
У него sp откуда берется? Аппаратно устанавливается на 0xffffffff, если чип не целованный?
А если прога уже загружалась, то на то, что в первом слове флеша. Так?
И что бутлоадер с этим делает? Выкидывает и ставит свое значение?
А перед запуском проги читает значение из первого слова флеша и заносит его в sp?
Иде в этом логика?
Кстати - кривой бангладорский при запуски проги про sp даже не вспоминает. Что у него было, то и оставляет.
Как с этим у родного бутлоадера - пока не знаю.
Не надо свято верить тому, что напечатоно. И в печатных текстах бывают ошибки и казусы...

Кстати надо попробовать. Засунуть в первое слово флеша что нибудь отличное от __initial_sp и посмотреть, с какмим
sp прога в main вывалится. Если со значением __initial_sp - что делать будем?

И про ip. Полагаете, после сброса он загружается значением из второго слова флеша и бутлоадер стартует с этого адреса?
Или бутлоадер умеет игнорировать значение ip и стартует со своего адреса?
Попробуйте над этим задуматься.

Сообщение отредактировал rezident - Jun 6 2010, 21:37
Причина редактирования: Излишнее цитирование.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 6 2010, 13:56
Сообщение #94


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



В связи с предыдущим постом продолжаю вопросник:
1. Как называется фирма-разработчик ядра Corteх-M3 используемого фирмой NXP в контроллерах LPC17xx?
2. Какой блок памяти отображается на адрес 0x00000000 в LPC17xx после аппаратного ресета?
3. Что находится в этом блоке памяти?
4. Может-ли в качестве вектора Reset указан адрес функции написанный на языке высокого уровня, например, 'C'?
5. Использует-ли функция написанная на языке 'C' стек и для чего?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
vallav
сообщение Jun 6 2010, 14:03
Сообщение #95


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(zltigo @ Jun 6 2010, 17:56) *
В связи с предыдущим постом продолжаю вопросник:


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

Сообщение отредактировал rezident - Jun 6 2010, 21:38
Причина редактирования: Излишнее цитирование.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 6 2010, 14:07
Сообщение #96


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(vallav @ Jun 6 2010, 17:03) *
Увы, пока их не будет...

"Студент"! Вы не поняли - семестр кончился - началась сессия. smile.gif. Но вопросы пока доброжелательно-наводящие, а не на засыпку.
Цитата
Я сейчас другим занят

Пока не страшно. Сдача и пересдача экзаменов до осени. Потом отчисление smile.gif sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
vallav
сообщение Jun 6 2010, 14:23
Сообщение #97


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(zltigo @ Jun 6 2010, 18:07) *
"Студент"! Вы не поняли - семестр кончился - началась сессия. smile.gif.

Пока не страшно. Сдача и пересдача экзаменов до осени. Потом отчисление.


Кстати, Вы наверно будите удивлены, но в качестве адреса ресета может быть указана функция, написанная на C.
Если модуль с ней слинкован в флешь.
Не верите - а попробуйте.
Хотя - Вы же fabless...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 6 2010, 14:26
Сообщение #98


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(vallav @ Jun 6 2010, 17:23) *
Кстати, Вы наверно будите удивлены, но в качестве адреса ресета может быть указана функция, написанная на C.

Ответ правильный. Угадали? Но процент угадывания много ниже статистических 50% sad.gif. Не везет smile.gif.
Теперь ответ на вопрос номер 5. И после подробнее насчет "идиотов":
Цитата
Мое мнение, в NXP не идиоты делать это аппаратно, когда это можно с тем же успехом сделать программно в коде инициализации.
Что там и делается.
Не надо свято верить тому, что напечатоно. И в печатных текстах бывают ошибки и казусы...

и соответственно того, когда и кем указатель стека иницализируется до момента вызова этой самой первой функции.
Кстати, на вопросы надо отвечать на все - Вы слишком много вопросов пропускаете. Незачет будет!
Цитата
Хотя - Вы же fabless...

С чего это Вы так тешите себя этой иллюзией smile.gif. Придется и с этой иллюзией Вас обломать. В На фото в приложении Cortex-M3 в двух экземпярах. Есть и третий.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
vallav
сообщение Jun 6 2010, 14:33
Сообщение #99


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(zltigo @ Jun 6 2010, 18:26) *
Ответ правильный. Угадали?
Теперь ответ на вопрос номер 5. И после подробнее насчет "идиотов":

Неужели проверить успели?
Вот это скорость...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 6 2010, 15:16
Сообщение #100


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(vallav @ Jun 6 2010, 17:33) *
Неужели проверить успели?

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

Офигительная. Настоящая машина времени - на майские праздники пришли борды и тогда-же я портировал операционку, консольку, Ethernet, загрузчик и прочее. До этого, урывками почитывал первоисточники - ну думаю в сумме не менее 40 часов. Месяц тому назад еще сутки усиленного чтения и за 3 дня вышеупомянутое было поднято. Сейчас занимаюсь другим. Дней через 10 дней продолжу.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jun 6 2010, 15:29
Сообщение #101


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Извините что вторгаюсь smile.gif . Но у меня попкорн уже кончился lol.gif
Цитата(vallav @ Jun 6 2010, 17:43) *
Так я разве спорю.
Конечно, core reads the start sp...
Только как?
Мое мнение, в NXP не идиоты делать это аппаратно, когда это можно с тем же успехом сделать программно в коде инициализации.
Что там и делается.

Я тоже думал, что бутлоадер переписывает из 0x0 константу в SP, а затем использует 0x4 как адрес перехода на пользовательскую программу. Правильно? Если не прав - поправьте меня.
Цитата(vallav @ Jun 6 2010, 17:43) *
Полагаете - просто на всякий случай? Код инициализации игнорирует значение sp при входе в него и записывает в sp ( программно )
значение, равное __initial_sp.
Кстати, задумайтесь - после сброса начинает работать бутлоадер.
У него sp откуда берется? Аппаратно устанавливается на 0xffffffff, если чип не целованный?

  1. Область памяти BOOTROM - 0x1FFF 0000 - 0x1FFF 1FFF 8 kB Boot ROM with flash services
  2. В общем случае положение таблицы векторов для ЦПУ Cortex-M3 (разработчик - ОАО "Advanced RISC Machine") определяется в том числе регистром VTOR (Vector Table Offset Register - принадлежность ЦПУ Cortex-M3). Этот регистр включает:
    - бит TLBBASE (0: Table base is in CODE, base address 0x00000000; 1: Table base is in RAM, base address 0x20000000)
    - поле TBLOFF[28:7] - смещение, которое прибавляется к base address (правдя я не понял как вычисляется адрес smile.gif)
    Далее в документе "ARMv7-M Architecture Reference Manual" есть приписка "An implementation can include configuration input signals that determine the reset value of the TBLOFF bit field". Просто опция при покупке ЦПУ Cortex-M3. В случае LPC17xx - TLBOFF после сброса содержит не нули, а значение (какое - не знаю smile.gif), благодаря которому таблицей веторов для ЦПУ Cortex-M3 будет являться начало области памяти BOOTROM.
  3. В дополнение - приписка из "LPC17xx User manual" (стр.745):
    Цитата
    Privileged software can write to the VTOR to relocate the vector table start address to a different memory location,
    in the range 0x00000080 to 0x3FFFFF80

    Таким образом - запуск программы бутлоадера выполняется согласно тому, как это заложено в архитектуре ЦПУ Cortex-M3 - SP и IP загружаются аппаратно. Константы для загрузки беруться из BOOTROM (полагаю, что таблица векторов размещена в ее начале).

vallav, тут даже мне понятно smile.gif.
В конечном счете - NXP нигде никак не допиливают ЦПУ Cortex-M3. Они просто покупают его, возможно с какими-то опциями (которые все в доке от ARM описаны), и вставляют (грубо smile.gif) в свой микроконтроллер (в книгах 20-30 летней давности был термин однокристальная микроЭВМ - может этот термин понятнее, прото ощущение, что вы не очень понимаете, где заканчивается творчество инженеров ARM и начинается творчество инженеров NXP). Возможно что и "опция" - это притяни вот эту ногу у себя в кристалле к нулю - будет это, а притяни к единице - будет то-то... Ну и прошивают в BOOTROM свою программу-загрузчик.
По-моему простая аналогия между производителем материнской платы и процессором от Intel, который в эту плату вставляется - получается ЭВМ smile.gif. Хочешь знать как работает процессор - читай доки от Intel. Хочешь знать, что есть на материнской плате и как с эим работать процессору - читай доки от производителя материнской платы.
Без обид smile.gif

Сообщение отредактировал Student Pupkin - Jun 6 2010, 15:49
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jun 6 2010, 20:28
Сообщение #102


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Каюсь smile.gif . Оказывается регистр VTOR к переотображению таблицы векторов (по умолчанию с 0х0) на область BOOTROM отношения не имеет smile.gif. Имеет отношение регистр MEMMAP. Но суть не меняется smile.gif
Following a hardware reset, the Boot ROM is temporarily mapped to address 0. (LPC17xx User Manual, стр.15)
Интересно теперь, как bootloader запускает пользовательскую программу после того, как устанавливает MEMMAP в 1 - програмно (переписывая константу из 0x0 в SP и выполняя переход по адресу, лежащему в 0х4) или есть возможность сформировать reset только для ядра (т.е. чтобы MEMMAP остался с установленным в 1 битом MAP)? laughing.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 6 2010, 20:51
Сообщение #103


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Student Pupkin @ Jun 6 2010, 23:28) *
програмно (переписывая константу из 0x0 в SP и выполняя переход по адресу, лежащему в 0х4)...

Не вижу нималейших причин делать иначе - отмапирована только таблица векторов сам bootloader исполняется всегда на своем месте, посему просто убирает свою таблицу векторов, считывает, устанавливает и запускает. Никаких ограничений на софтовую инициализацию MSP нет. У меня точно также мой загрузчик отрабатывает, только,естественно сам целиком находясь на нулевых адресах он еще и положение таблицы векторов основной программы устанавливает.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jun 6 2010, 21:22
Сообщение #104


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



А еще вопросик smile.gif - MEMMAP делает переотображение на таблицу в BOOTROM. Т.е. в том числе и чтение первых 256 байт начиная с адреса 0х0000 на самом деле будет являться чтением первых 256 байт области BOOTROM? Значит загрузчику, прежде чем начать проверку пользовательской таблицы векторов (первых 6 слов) на "валидность", необходимо сначала установить MEMMAP в 1 (User Mode)? Ведь в ином случае она недоступна?
Правильно? (вопрос, чтобы просто кое-что себе в голове устаканить smile.gif)
А остальные производители микроконтроллеров на ядре Cortex-M3 тоже вместо Vector Table Offset Register используют "внешний" (по отношению к Cortex-M3) ремап?
Go to the top of the page
 
+Quote Post
vallav
сообщение Jun 7 2010, 04:31
Сообщение #105


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(Student Pupkin @ Jun 7 2010, 01:22) *
А еще вопросик smile.gif - MEMMAP делает переотображение на таблицу в BOOTROM. Т.е. в том числе и чтение первых 256 байт начиная с адреса 0х0000 на самом деле будет являться чтением первых 256 байт области BOOTROM? Значит загрузчику, прежде чем начать проверку пользовательской таблицы векторов (первых 6 слов) на "валидность", необходимо сначала установить MEMMAP в 1 (User Mode)? Ведь в ином случае она недоступна?
Правильно? (вопрос, чтобы просто кое-что себе в голове устаканить smile.gif)
А остальные производители микроконтроллеров на ядре Cortex-M3 тоже вместо Vector Table Offset Register используют "внешний" (по отношению к Cortex-M3) ремап?



Проверено на железе - плата mbed c lpc1768.
Значение нулевого слова в флеше 0x0, 0xffff, 0xffffffff.
Два бутлоадера - родной и кривой бангалорский.
Прога - мигалка светодиодами грузится иработает.
То есть, чему равно нулевое слово в флеше - глубоко фиолетово.
Можно использовать в своих целях.
Первое слово в флеше - используется бутлоадером для запуска пользовательской проги.
При сбросе - ip вероятней всего имеет значение 0x1fff1ff1 - адрес начала последней строки ПЗУ ( ассоциации с x86 навевает ).
Есть такая IAP комманада - выход в ISP. Именно она после сброса и выполняется.
Go to the top of the page
 
+Quote Post

10 страниц V  « < 5 6 7 8 9 > » 
Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 11:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016