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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> TI AM1808 Program Reset, Как реализовать программный сброс процессора?
doom13
сообщение Nov 18 2014, 13:31
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SM @ Nov 18 2014, 16:16) *

Счас понял, о чём Вы говорите. Я пытался сделать
Код
   B 0xFFFD0000
,
но это неправильный синтаксис и оно ругалось. Можно сделать правильно:
Код
BootRom:    .long 0xFFFD0000
B        BootRom

, скомпилится, попробует перейти, но т.к. куда-то очень далеко - вылетит. Получается в коде из BootRoma и есть такой код, но там короткий переход, а отображается просто адрес. Спасибо.

Цитата(SM @ Nov 18 2014, 16:16) *
А LDR можно еще написать как

LDR PC, =0xFFFD0000

А вот это я пробовал и ещё раз проверил, не компилится оно у меня!?
CODE

"../source/sys/progrst.asm", ERROR! at line 15: [E0200] Bad term in expression
3 Assembly Errors, No Assembly Warnings
LDR pc, =0xFFFD0000


>> Compilation failure
"../source/sys/progrst.asm", ERROR! at line 15: [E0001] Illegal symbol
LDR pc, =0xFFFD0000

"../source/sys/progrst.asm", ERROR! at line 15: [E0003] Unexpected trailing operand(s)
LDR pc, =0xFFFD0000
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 18 2014, 13:37
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(doom13 @ Nov 18 2014, 19:08) *
Тут что-то не понимаю, как оно может скомпилить код B 0xFFFD0000? Или это только то что я вижу в CCS Disassembly, на самом деле было что-то типа:

Да, скорей всего именно так. Он просто Вам показывает целевой адрес. Если-бы он показывал смещения (как в коде команды) было-бы очень неудобно высчитывать куда направлен переход.
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 18 2014, 14:13
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



BootRom: .long.set 0xFFFD0000
B BootRom

а что с "=" не компилируется, это уже компиляторозависимо. Не каждый транслятор это поймет.


UPD
или, вот так (GNU-тый as):
.set BootRom, 0xFFFD0000
я путаю разные синтаксисы от разных ассемблеров...
Go to the top of the page
 
+Quote Post
doom13
сообщение Nov 18 2014, 14:18
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(jcxz @ Nov 18 2014, 06:39) *
Используйте встроенный сторожевик для сброса.

Затестил, всё просто, работает без очистки и установки регистров в начальное состояние.
Но, всё равно ещё интересно, что надо обнулять для нормального перезапуска и это:
Цитата(SM @ Nov 18 2014, 14:33) *
А вообще, я бы покопал на тему захода в SwRstDisable ARM-а (PSC0/LPSC14) - это было бы пожестче, если реализуемо.

Go to the top of the page
 
+Quote Post
SM
сообщение Nov 18 2014, 14:33
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



проверил - компилируется (компилятор gcc 4.7.7, ассемблер из него)....

LDR PC, =0xFFFD0000

листинг:

Код
  20                  .globl _start
  21                  _start:
  22:/home/s-markov/Linux_psp/sau-load/preload/start.S ****     ldr    r3, _start_armboot
  23:/home/s-markov/Linux_psp/sau-load/preload/start.S ****     bx    r3
  24                  
  25:/home/s-markov/Linux_psp/sau-load/preload/start.S ****     ldr    pc, =0xFFFD0000
  26                  
  27 000c 00000000     _start_armboot:        .word start_armboot
  28                  
  29                              .globl    _end
  30 0010 00000000     _end:            .word    __end
  31                              .globl    _code_len
  32 0014 18000000     _code_len:        .word    __end - _start + 4
  32      0000FDFF


отлично видно, что число 0xFFFD0000 он сам разместил в конце как слово данных. Кодов операции нету, что тоже понятно, их линкер только сформирует.

Цитата(doom13 @ Nov 18 2014, 17:18) *
что надо обнулять для нормального перезапуска

Надо, как минимум, перевести все LPSC в состояния "power-on", по сути, обресетить периферию.
Go to the top of the page
 
+Quote Post
doom13
сообщение Nov 18 2014, 15:04
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SM @ Nov 18 2014, 17:33) *

У меня компилер TI v5.1.1 в настройках пректа стоит, наверное, поэтому и не компилится данная инструкция.

Цитата(SM @ Nov 18 2014, 17:33) *
Надо, как минимум, перевести все LPSC в состояния "power-on", по сути, обресетить периферию.

Попробовал перед переходом на BOOTROM загнать все PSC модули в состояние SwRstDisable state, работает, но иногда, при нескольких последовательных ресетах может повиснуть.
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 18 2014, 15:32
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(doom13 @ Nov 18 2014, 18:04) *
загнать все PSC модули в состояние SwRstDisable

Ну надо не все, а по списку из TRM, только те, которые по дефолту в этом состоянии.
Go to the top of the page
 
+Quote Post
doom13
сообщение Nov 18 2014, 18:23
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SM @ Nov 18 2014, 18:32) *
Ну надо не все, а по списку из TRM, только те, которые по дефолту в этом состоянии.

Ну не совсем все, SPI1 оставил - с него прошивка грузится и при его состоянии SwRstDisable загрузчик перестаёт работать, хотя должен был бы сам настроить его в нужное состояние (Enable). Проверю ещё кто должен быть по дефолту в состоянии сброса, спасибо.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 19 2014, 07:59
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(doom13 @ Nov 19 2014, 00:23) *
Ну не совсем все, SPI1 оставил - с него прошивка грузится и при его состоянии SwRstDisable загрузчик перестаёт работать, хотя должен был бы сам настроить его в нужное состояние (Enable). Проверю ещё кто должен быть по дефолту в состоянии сброса, спасибо.

Логично, но почему-то до бутописателей это не доходит.... sad.gif
Сам сталкивался на OMAP L137 с подобной проблемой:
Загрузка идёт с внешней SPI-Flash микросхемы, после старта firmware и чтения конфига с той-же flash, перевожу её командой в Power Down (вроде ведь логично если такая функция есть в микросхеме и она больше не нужна ?). Но после этого, если подать HW RESET на OMAP, он больше не грузится с flash (грузится только после выкл./вкл. питания).
Если не подавать Power Down, то всё ок (а если она в Power Down, то она не отвечает ни на какие команды до команды Power Up).
Значит писатели встроенного бутлоадера не додумались, что флешка может быть в Power Down. sad.gif(((((
А вроде такая очевидная вещь....
Go to the top of the page
 
+Quote Post
doom13
сообщение Nov 19 2014, 09:45
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(jcxz @ Nov 19 2014, 10:59) *

Согласно даташиту на мой процессор, его SPI1 по дефолту находится в состоянии SwRstDisable. Вот тут-то и вопрос - кто его загнал в это состояние? Если это ROM загрузчик до передачи управления моей программе (т.е. для ROM загрузчика дефолтное состояние - включено), тогда всё понятно, если я его выключаю и передаю управление ROM загрузчику, то он и дохнет. Но если дефолтное состояние SwRstDisable - это для загрузчика, то он должен включать данный модуль и моё выключение на него влиять не должно.
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 19 2014, 09:57
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(doom13 @ Nov 19 2014, 12:45) *
Но если дефолтное состояние SwRstDisable - это для загрузчика, то он должен включать данный модуль и моё выключение на него влиять не должно.

Скорее всего, загрузчик считывает, что за резет был, и если это не POR, то делает значительно меньше инициализаций. Однако, без дизассемблера это не понять.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:05
Рейтинг@Mail.ru


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