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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> tiny fatfs портирую на SAM7, вылетает в дата аборт
cebotor
сообщение Apr 28 2007, 10:38
Сообщение #1


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

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



решил портировать FatFS (tiny FatFS) на SAM7
прожект в ИАРе.
SPI настроил, с флэшкой проц говорить научил.
но при выполнении внутренней команды auto_mount на строке

basesect = LD_DWORD(&fs->win[MBR_Table+8]); /* Partition offset in LBA */

LD_DWORD определен (если упрощать) как разименование указателя , приведенного к типу указатель на беззнаковое длинное.

в дебаггере в асме выглядит как четыре строки :
MOV R0,#245
LSL R0,R0,#1
LDR R0,[R4,R0] // ПРИ ВЫПОЛНЕНИИ ЭТОЙ КОМАНДЫ ПРЫГАЕТ НА DATA ABORT
LSL R7,R0,0#

в чем может быть дело?


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Apr 28 2007, 11:19
Сообщение #2


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

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



В невыровненых указателях. Обращение к слову должно быть выровнено на границу 2 байт, к двойному слову на 4. Вы же обращаетесь (похоже) к нечетному элементу массива char'ов, как к слову. Соответственно по нечетному адрессу.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
DASM
сообщение Apr 28 2007, 11:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



А помоему в R4 (&fs) лежит мура какая-то. Неприпоминаю, чтобы простенькие 7-ые армы генерировали abort при data missalign
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 28 2007, 11:24
Сообщение #4


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

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



Цитата(Dron_Gus @ Apr 28 2007, 12:19) *
В невыровненых указателях. Обращение к слову должно быть выровнено на границу 2 байт, к двойному слову на 4. Вы же обращаетесь (похоже) к нечетному элементу массива char'ов, как к слову. Соответственно по нечетному адрессу.

спасибо огромное ! разобрался! все было именно так, а указатели не былии выровнены изза того что
я фату не правильно указал какой у меня ендиан . все заработало!


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Apr 28 2007, 11:25
Сообщение #5


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(DASM @ Apr 28 2007, 12:23) *
Неприпоминаю, чтобы простенькие 7-ые армы генерировали abort при data missalign

blink.gif А что еще они должны делать? И причем здесь простенькие-непростенькие?


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
DASM
сообщение Apr 28 2007, 11:26
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



А ничего - просто обрезают младшие биты. NXP так делает.
Автор - подробнее про endian - что у Вас было в R4 при этом ?
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 28 2007, 11:28
Сообщение #7


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

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



Цитата(DASM @ Apr 28 2007, 12:23) *
А помоему в R4 (&fs) лежит мура какая-то. Неприпоминаю, чтобы простенькие 7-ые армы генерировали abort при data missalign

генерят , и какая бы там мура не лежала ,если она попадает на кратную позицию - то аборта нет


Цитата(DASM @ Apr 28 2007, 12:26) *
А ничего - просто обрезают младшие биты. NXP так делает.
Автор - подробнее про endian - что у Вас было в R4 при этом ?

нечетное число


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
DASM
сообщение Apr 28 2007, 11:28
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



значит это SAM7 такое делает. LPC - не делали, если мне склероз не изменяет.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Apr 28 2007, 11:28
Сообщение #9


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Гы.
Ну могу сказать что на sam data abort при невыровненности вполне себе работает. Недавно возился со упакованной структурой на асме. smile.gif


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
DASM
сообщение Apr 28 2007, 11:29
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Торможу короче - SAM дает аборт при ЧТЕНИИ по невыровненному указателю ? Крута.
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 28 2007, 12:49
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



ARM7 дает data abort при любом доступе к памяти при невыровненом указателе.
SAM7 и LPC2xxx включительно.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
DASM
сообщение Apr 28 2007, 13:01
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(amw @ Apr 28 2007, 13:49) *
ARM7 дает data abort при любом доступе к памяти при невыровненом указателе.
SAM7 и LPC2xxx включительно.

Зачем фантазировать ? LPC2148

volatile int testVar;
int *ptestVar;
ptestVar = (int*)0x1;
testVar = *ptestVar; // проходит без вопросов. Результат как если бы указатель был равен 0
Это проверено реально. А у Вас реальная инфрмация или процесс творческого переосмысления даташитов на ядро ?
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 28 2007, 13:09
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(DASM @ Apr 28 2007, 13:01) *
Зачем фантазировать ? LPC2148

volatile int testVar;
int *ptestVar;
ptestVar = (int*)0x1;
testVar = *ptestVar; // проходит без вопросов. Результат как если бы указатель был равен 0
Это проверено реально. А у Вас реальная инфрмация или процесс творческого переосмысления даташитов на ядро ?

На LPC2214 у меня не проходило.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
DASM
сообщение Apr 28 2007, 13:12
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Тогда это очень интересная тема, которую надо развить - столь серъеное различие в ядрах 2214 и 2148
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Apr 28 2007, 13:15
Сообщение #15


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата
LPC2148 Это проверено реально

Цитата
На LPC2214 у меня не проходило.

Жжоте! smile.gif хотите сказать у них ядра по-разному работать ухитряются?
Вообще abort при messaligment относится ко всей архитектуре arm, на сколько я понимаю. И то что lpc при каких-то обстоятельсявах работает не может не радовать. smile.gif


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post

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

 


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


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