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

 
 
10 страниц V  « < 7 8 9 10 >  
Reply to this topicStart new topic
> Несколько вопросов по lpc176x
mrKirill
сообщение Jun 7 2010, 13:09
Сообщение #121


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(zltigo @ Jun 7 2010, 16:47) *
Ну по этой причине я и начал продолжать тему в виде "вопросника" с простыми наводящими вопросами.


Жаль только "виновник торжества" как всегда игнорирует всех и вся...

Upd: Получил от него сообщение в личку, он просил передать, что его забанили (Read Only).
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 7 2010, 15:09
Сообщение #122


Гуру
******

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



Цитата(mrKirill @ Jun 7 2010, 15:09) *
Жаль только "виновник торжества"....

На "виновника" все посты последних дней особо уже и не рассчитывалась. Теперь беседу про Cortex-M3 можно некоторое время продолжать и в конструктивном русле. Штука ведь явно mainstream на сегодняшний день.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Jun 7 2010, 16:52
Сообщение #123


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(zltigo @ Jun 7 2010, 21:09) *
Штука ведь явно mainstream на сегодняшний день.

Это точно.

Жду свою starterkit'овскую SK-MLPC1768 чтобы приступить к освоению. А пока "чукча читатель" smile.gif И впитыватель полезного smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 7 2010, 17:06
Сообщение #124


Гуру
******

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



Цитата(mrKirill @ Jun 7 2010, 18:52) *
Жду свою starterkit'овскую SK-MLPC1768 чтобы приступить к освоению. А пока "чукча читатель" smile.gif И впитыватель полезного smile.gif

Работаю сейчас с Сortex-M3 от Luminary/TI. Первый из Corteх был STM32. Из Cortex-M0 через дней десять заберу в Питере железку на LPC1114.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Jun 7 2010, 17:32
Сообщение #125


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Насчет LPC11xx думал-думал брать или нет.
Думал на замену ATmega в изделия запланировать, но что-то насчет объемов памяти не очень как-то, линейка до 32кБ всего. А нужно менять ATmega128...которые сейчас уже дороже LPC1114.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 7 2010, 18:14
Сообщение #126


Гуру
******

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



Цитата(mrKirill @ Jun 7 2010, 20:32) *
Насчет LPC11xx думал-думал брать или нет.

Нормальные малыши, главное для меня 2 SPI. Хороший мелкий периферийный контроллер. LPC17xx уже не интересны - в текущих просто менять массовые LPC2138/48 не особо смысл имеет. А замены чего либо класса LPC23xx/24xx вообще пока ничего нет.
Цитата
менять ATmega128...которые сейчас уже дороже LPC1114.

Ну 128 настолько дороги, что менять их можно хоть LPC13XX, LPC17XX, LPC21XX, LPC23XX.....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Jun 8 2010, 02:31
Сообщение #127


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(zltigo @ Jun 8 2010, 00:14) *
Ну 128 настолько дороги, что менять их можно хоть LPC13XX, LPC17XX, LPC21XX, LPC23XX.....

Пока прикидываю LPC17xx ставить на замену. Жду железку...
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jun 8 2010, 13:15
Сообщение #128


Местный
***

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



vallav попросил тут, меня терроризирует smile.gif
Цитата(vallav)
Надеюсь Вы прочли, что меня забанили на месяц.
Если прочтете это, то опубликуйте в той ветке, где вопрос задали.
Ответы:

Цитата(vallav)
Цитата(student pupkin)

1) Регистр MEMMAP вы ни разу не упомянули. Эксперименты с учетом него проводили? Вообще про него в "LPC17xx User Manual" читали? И про сопутствующие вещи?

А зачем он мне нужен? Мельком в UM на него глянул. Что им делается такого, что может понадобиться в проге?

Затем, что, по-моему, вы плохо понимаете как происходит старт штатного загрузчика.
Цитата(vallav)
Цитата(student pupkin)

2) Вы листали документ "ARMv7-M Architecture Reference Manual"? Он хотя бы у вас имеется, в дополнение к "LPC17xx User Manual"?

Не, нету. Но есть DDI0337G_cortex_m3_r2p0_trm.pdf

Вообще я говорил о названии документа (пишется на первой странице), а не о названии файла. smile.gif. У вас "Cortex-M3 Technical Reference Manual". Наверное и этого достаточно. Самое главное - вы достаточно хорошо пробежались по нему, регулярно тудя заглядываете?
Цитата(vallav)
Цитата(student pupkin)

3) У вас есть JTAG-эмулятор? Потому как Keil вряд ли будет вам иммитировать запуск штатного загрузчика...

Нету. Но JTAG тоже не может отследить запуск загрузчика, так как после сброса отключен и именно бутлоадер решает - включать
JTAG или не включать.

Bootloader включает JTAG первым делом (есесно после проверки на отсутствие CRP1/2/3).
Далее вот вам забавная приписка из мануала на LPC17xx (стр.15):
Following a hardware reset, the Boot ROM is temporarily mapped to address 0. This is
normally transparent to the user. However, if execution is halted immediately after reset by
a debugger, it should correct the mapping for the user.

Цитата(vallav)
Цитата(student pupkin)

4) Пробовали, скажем, делать дамп памяти при MEMMAP.MAP=0 и при MEMMAP.MAP=1?

Не, не пробовал.

Ну и пес с ним, с этим дампом smile.gif
JTAG-ом все же обзаведитесь. Сейчас это не дорого smile.gif. Пригодится.


Цитата(vallav)
Теперь к Вам несколько вопросов.
Можно выделить три характерные точки после сброса - вход в бутлоадер, выход из бутлоадера, вход в main.

Уточняйте, о каком бутлоадере идет речь - о штатном или о вторичном (USB)?
Скорее две - выход из бутлоадера есть одновременно переход на пользовательскую программу. Не пишите main - хотя я понял, что вы имели ввиду пользовательскую программу (например ваш blink-led), такая функция есть и у вторичного бутлоадера.
Цитата(vallav)
Чему равны sp и ip в точке входа в бутлоадер, как и откуда они взялись?

Смотря о каком бутлоадере вы говорите.
1) После снятия сигнала RESET в соответсвии с моделью обработки исключений, заложенной в архитектуре Cortex-M3, ЦПУ считывает с адреса 0х00 константу и помещает ее в main_SP, затем считывает константу с адреса 0x04 и помещает ее в IP, что является просто безусловным переходм по адресу. Однако за счет внешнего ремапа, управляемого регистром MEMMAP, который после RESET-а содержит 1 (Boot Mode), первые 256 байт адресного пространства, начиная с 0х0, переотображаются на область BOOTROM. Поэтому ЦПУ, считывая первые два слова с адреса 0х0, на самом деле считывает слова с адреса 0х1FFF 0000.
2) Для проверки наличия пользовательского ПО (в данном случае это будет вторичный USB-бутлоадер) штатный бутлоадер устанавливает MEMMAP в 0 (User Mode) и проверяет вычисляет сумму первых 8 слов начиная с адреса 0х0 (если оставить MEMMAP в 1, то бутлоадер будет считывать слова с адреса 0х1FFF 0000).
The reserved Cortex-M3 exception vector location 7 (offset 0x 001C in the vector table) should contain the 2’s complement of the check-sum of table entries 0 through 6. This causes the checksum of the first 8 table entries to be 0.
3) Запуск вторичного бутлоадера - как уже говорилось много постов выше, наиболее логичный способ такой:
- считать с адреса 0х00 константу (по логике вещей там должно лежать значение SP для пользовательской программы) в main_SP (программно - командой LDR);
- считать с адреса 0х04 константу (по логике вещей там должен лежать адрес начала пользовательской программы) в IP (тоже программно - честно говоря не знаю, это LDR в PC или сначала LDR в РОН а потом установить младший бит и BX через этот РОН smile.gif).
Чтобы быть абсолютно в этом уверенным, необходимо раздобыть исходник первичного бутлоадера.
Цитата(vallav)
Чему равны sp и ip в точке выхода из бутлоадера, как и откуда они взялись?

Не понял вопроса smile.gif. Особенно про IP...
Цитата(vallav)
Чему равны sp и ip в точке входа в main, как и откуда они взялись?

Вопрос именно о входе в main, или о входе в пользовательскую программу? В общем случае до main еще выполняется _main - инициализация глобальных и локальных статических переменных нулем/инициализаторами... smile.gif
Честно скажу - не знаю где и как инициалицируется SP перед переходом на пользовательськую программу. Заметьте, что это ни в коей мере не "допиливание ЦПУ инженерами NXP" и архитектуре COrtex-M3 никак не противоречит. Смотрите исходники. Найдите JTAG и запустите вторичный бутлоадер под ним. Флаг в руки smile.gif
Насчет значения IP - посмотрите исходники вторичного бутлоадера:
1) в функции main() (memory.c) есть вызов ф-ции execute_user_code() (sbl_iap.c)
Код
void execute_user_code(void)
{
    void (*user_code_entry)(void);
    
    /* Change the Vector Table to the USER_FLASH_START
    in case the user application uses interrupts */
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, USER_FLASH_START);

      user_code_entry = (void (*)(void))((USER_FLASH_START)+1);
    user_code_entry();
}

Дабы вы не потерялись, вот еще скопипастил из заголовочных файлов:
Код
/* из sbl_config.h*/
#define USER_FLASH_START (sector_start_map[USER_START_SECTOR])

/* в конечном счете вместо USER_FLASH_START получиться вот это: */
#define SECTOR_2_START      0x00002000

Итого:
1) SP и IP инициализируются аппаратно после сброса процессора - старт штатного загрузчика.
2) В дальнейшем SP изменяется программно, IP тоже (команды перехода)
3) Естественно за исключением случаев обработки прерываний или иных (аварийных) исключений - там тоже все аппаратно (надеюсь тут сомнения вас не гложут smile.gif)
Что касается остального - каюсь, на все вопросы ответить не смогу. Покопайтесь в исходниках, поразбирайтесь.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 8 2010, 14:40
Сообщение #129


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Student Pupkin @ Jun 8 2010, 16:15) *
1) SP и IP инициализируются аппаратно после сброса процессора - старт штатного загрузчика.

Цитирую мануал:
Цитата
P2[10]/EINT0/NMI 53[6] I/O P2[10] — General purpose digital input/output pin.
Note: LOW on this pin while RESET is LOW forces on-chip bootloader to take
over control of the part after a reset.

Т.е. загрузчик - это если указанную ножку держать в нуле при сбросе. Без этого - обычный старт - startup, main...
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jun 8 2010, 15:23
Сообщение #130


Местный
***

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



Во-первых пардон - я там выше кажется перепутал значение бита в MEMMAP - 0 это BootMode (по сбросу), а 1 - это UserMode
ViKo, тоже процитирую мануал:
1) Following a hardware reset, the Boot ROM is temporarily mapped to address 0. - стр.15
2) The flash boot loader code is executed every time the part is powered on or reset. The loader can execute the ISP command handler or the user application code.
A LOW level after reset at pin P2.10 is considered an external hardware request to start the ISP command handler.
- стр.612 (3.Description)
3) См. Boot Process Flowсhart (стр.616)
Цитата(ViKo @ Jun 8 2010, 18:40) *
Цитирую мануал:
Т.е. загрузчик - это если указанную ножку держать в нуле при сбросе. Без этого - обычный старт - startup, main...

Из доки выходит, что если указанная ножка в нуле - загрузчик может перейти в к выполнению ISP, разумеется с учетом дополнительных условий - наличие/отсутсвие User Code (точнее соответсвия Criterion for Valid User Code) и наличие specific pattern in flash location at 0x000002FC (CRP1/CRP2/CRP3) smile.gif
Другое дело, что, как я понял, в случае рассматриваемого вторичного USB-бутлоадера при его прошивке устанавливается CRP3 - чип становиться "нечувствительным" к состоянию Р2.10 smile.gif
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Jun 8 2010, 18:36
Сообщение #131


Местный
***

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



Наш Ленин в ссылке передал мне привет smile.gif
Цитата(vallav)
Что же Вы сразу не сказали, что у Вас были не вопросы, на которые Вас интересует ответ, а экзаменационные вопросы ко мне.
Я бы не пыхтел на них отвечать, тем более в лычку.
А Ваше - после реset_а производится аппаратная загрузка sp значением с адреса 0x1fff0000 и ip с адреса 0x1fff0004 - сильно...
Хотя правильно написали - все последующие загрузки sp и ip - программные...
Долго думали? И главное, зачем это делать - если проще сбросить ip на заранее заданное значение а в ПЗУ по этому адресу занести
нужный код? Очень хочется строчкам из UM придать хоть какой то смысл?
Этот ответ можете ( и желательно ) не публиковать на форуме.

Особенно фраза про поиск смысла в строчках UserManual-а - lol.gif


Извините - вы говорили, что это желательно на форуме не публиковать, но я посчитал нужным еще раз показать всем ваше неумение вести разговор нормально.
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Jun 9 2010, 04:48
Сообщение #132


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Student Pupkin, оставьте цитирование слов vallav. Он получил наказание заслуженно. Пусть подумает и сделает выводы (что вряд ли, но надежда есть). Или Вам заняться нечем?
Смотрите...и Вас прикроют за пособничество smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 9 2010, 05:02
Сообщение #133


Гуру
******

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



Цитата(ViKo @ Jun 8 2010, 17:40) *
Цитирую мануал:

Не правильное токование sad.gif. Загрузчик у LPC запускается всегда - занимается разборками с защитой, и считыванием той самой ножки.
Это все софтовые действия. Процесс запуска этого загрузчика ядром Corteх ничем не отличается от запуска любого другого кода, в том числе и в контроллерах не имеющих загрузчиков.

Цитата(Student Pupkin @ Jun 8 2010, 21:36) *
Наш Ленин...

Admin:
Заканчиваем с приветами. У него "до осени" самостоятельная работа над ошибками.
Цитата
но я посчитал нужным еще раз показать всем ваше неумение вести разговор нормально.

Вот если считаете, что для Вас это "все нормально", то можете продолжать с ним личную переписку.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 9 2010, 08:08
Сообщение #134


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Т.е., загрузчик по данной ножке определяет, что ему делать - работать самому или перейти на пользовательскую программу?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 9 2010, 08:48
Сообщение #135


Гуру
******

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



Цитата(ViKo @ Jun 9 2010, 11:08) *
Т.е., загрузчик по данной ножке определяет, что ему делать - работать самому или перейти на пользовательскую программу?

Да, именно так.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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