|
TI AM1808 Program Reset, Как реализовать программный сброс процессора? |
|
|
|
Nov 18 2014, 13:31
|
Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
Nov 18 2014, 14:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(jcxz @ Nov 18 2014, 06:39)  Используйте встроенный сторожевик для сброса. Затестил, всё просто, работает без очистки и установки регистров в начальное состояние. Но, всё равно ещё интересно, что надо обнулять для нормального перезапуска и это: Цитата(SM @ Nov 18 2014, 14:33)  А вообще, я бы покопал на тему захода в SwRstDisable ARM-а (PSC0/LPSC14) - это было бы пожестче, если реализуемо.
|
|
|
|
|
Nov 18 2014, 14:33
|
Гуру
     
Группа: Свой
Сообщений: 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", по сути, обресетить периферию.
|
|
|
|
|
Nov 18 2014, 15:04
|
Профессионал
    
Группа: Свой
Сообщений: 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, работает, но иногда, при нескольких последовательных ресетах может повиснуть.
|
|
|
|
|
Nov 19 2014, 07:59
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(doom13 @ Nov 19 2014, 00:23)  Ну не совсем все, SPI1 оставил - с него прошивка грузится и при его состоянии SwRstDisable загрузчик перестаёт работать, хотя должен был бы сам настроить его в нужное состояние (Enable). Проверю ещё кто должен быть по дефолту в состоянии сброса, спасибо. Логично, но почему-то до бутописателей это не доходит....  Сам сталкивался на OMAP L137 с подобной проблемой: Загрузка идёт с внешней SPI-Flash микросхемы, после старта firmware и чтения конфига с той-же flash, перевожу её командой в Power Down (вроде ведь логично если такая функция есть в микросхеме и она больше не нужна ?). Но после этого, если подать HW RESET на OMAP, он больше не грузится с flash (грузится только после выкл./вкл. питания). Если не подавать Power Down, то всё ок (а если она в Power Down, то она не отвечает ни на какие команды до команды Power Up). Значит писатели встроенного бутлоадера не додумались, что флешка может быть в Power Down.  ((((( А вроде такая очевидная вещь....
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|