|
|
  |
АЦП LPC1758 (недопустимое значение регистра ADTRIM) |
|
|
|
Jun 29 2016, 04:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(jcxz @ Jun 28 2016, 18:40)  Происходит сброс и что? После сброса должен выполниться bootcode, который должен проинитить этот ADTRIM. Управление на AppStart само не попадает, его передаёт туда bootcode. Вторичный загрузчик есть? WDT используется? И да, заводской загрузчик ничего не знает о вашем APP_START. Он всего лишь подменяет адресное пространство с 0-го адреса на пользовательску флешь и выполняет сброс ядра (или его программную эмуляцию). И запускается загрузчик _только_ при аппаратном сбросе. Сброс по JTAG сбросом не считатся, так как адресное пространство уже настроено на пользовательскую флешь.
|
|
|
|
|
Jun 29 2016, 06:07
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(jcxz @ Jun 29 2016, 07:04)  И по какой-то причине, в новом ПО, при проверке валидности прошивки происходит сбой (из-за содержимого таблицы векторов прерываний???), Так пройдите бутлоадер по шагам - он прекрасно проходится... (возможно пару инструкций придется обойти, где JTAG отключается/подключается если это есть в LPC17xx, я только LPC21xx исследовал) Или в IDA залейте... Там небольшой кусочек исполняется, если контрольная сумма верная... Цитата(Alechek @ Jun 29 2016, 07:40)  И запускается загрузчик _только_ при аппаратном сбросе. Сброс по JTAG сбросом не считатся, так как адресное пространство уже настроено на пользовательскую флешь. Поэтому, например у JLINK куча методов сброса для LPC, и например для LPC40xx лучше всего работает HALT after bootloader - потому что там еще настройки ROM прописываются иначе глючить IAP например начинает...
|
|
|
|
|
Jun 29 2016, 07:02
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Alechek @ Jun 29 2016, 10:40)  Вторичный загрузчик есть? WDT используется? Нет и нет. Цитата(Alechek @ Jun 29 2016, 10:40)  Он всего лишь подменяет адресное пространство с 0-го адреса на пользовательску флешь и выполняет сброс ядра (или его программную эмуляцию). Думаю он не выполняет сброс ядра, так как на его входе ядро уже сброшено. Цитата(Alechek @ Jun 29 2016, 10:40)  И запускается загрузчик _только_ при аппаратном сбросе. Сброс по JTAG сбросом не считатся, так как адресное пространство уже настроено на пользовательскую флешь. Да ну?! А зачем тогда среди сигналов JTAG есть сигнал nTRST? Для красоты что-ль? Он у нас разведён. И в свойствах подключения JTAG указываю стратегию сброса "core and peripheral" или "Reset PIN". Цитата(KRS @ Jun 29 2016, 12:07)  Поэтому, например у JLINK куча методов сброса для LPC, и например для LPC40xx лучше всего работает HALT after bootloader - потому что там еще настройки ROM прописываются иначе глючить IAP например начинает... После множества проб, у меня сложилось впечатление что самое правильное подключение с типом сброса "core and peripheral". Иногда использую "Reset PIN". Имхо - другие методы могут не задействовать сигнал nTRST JTAG-коннектора.
|
|
|
|
|
Jun 29 2016, 08:55
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(jcxz @ Jun 29 2016, 12:17)  И...? Ну… " А зачем тогда среди сигналов JTAG есть сигнал nTRST? Для красоты что-ль? " Разницу и подчеркнул и выделил
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Jun 29 2016, 09:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
И Цитата("UM10360") The flash boot loader code is executed every time the part is powered on or reset. \TRST сбрасывает только тестовую логику. ПЕРИФЕРИЯ НЕ СБРАСЫВАЕТСЯ! По поводу сбросов все расписано тут. Для сброса всей системы есть Application Interrupt and Reset Control Register. А как оно отрабытывает (влияет ли на Memory Mapping Control register (MEMMAP - 0x400F C040)) - неизвестно.
|
|
|
|
|
Jun 29 2016, 09:36
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Alechek @ Jun 29 2016, 15:06)  \TRST сбрасывает только тестовую логику. ПЕРИФЕРИЯ НЕ СБРАСЫВАЕТСЯ! Для сброса всей системы есть Application Interrupt and Reset Control Register. А как оно отрабытывает (влияет ли на Memory Mapping Control register (MEMMAP - 0x400F C040)) - неизвестно. Нашёл вроде причину: при изменении типа сброса в свойствах подключения JTAG с "Core and peripheral" на "Reset PIN" всё начинает работать (в ADTRIM появляется 0xF00). Получается что при "Core and peripheral" после сброса не выполняется bootcode, а при "Reset PIN" или при "Normal" bootcode выполняется после сброса. У нас nTRST с JTAG подключен к TRST МК. Если "ПЕРИФЕРИЯ НЕ СБРАСЫВАЕТСЯ" почему такая разница между разными типами сброса подключения JTAG? PS: Старый и новый мои проекты различались типом сброса при подключении JTAG.
|
|
|
|
|
Jun 30 2016, 08:34
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(jcxz @ Jun 29 2016, 13:37)  Наверное при выборе "Reset PIN"-варианта сигнал сброса JTAG подаёт на него с проходом bootcode и инитом ADTRIM.... IMHO лучше ставить HALT after bootloader, тогда и reset используется и бутлоадер гарантировано запускается! Цитата(jcxz @ Jun 30 2016, 06:07)  Использую эту установку на нескольких разных МК: LPC1758, LPC1778, LPC1788, Tiva TM4C129 - нигде до сих пор проблем не возникало. Правда нигде в них кроме этого проекта АЦП не используется. Везде используется куча разной периферии как через DMA так и прерывания. Вот я тоже использовал, обычно правда, SWD connect under reset чтобы вообще чип чисты был! но вот на LPC40xx функции из boot rom стали глючить пришлось ставить halt after bootloader В общем чем дальше - тем печальнее! документации все меньше - непонятного и закрытого кода от производителя - больше!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|