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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Ищу функции работы с SD картой, написанные для KEIL и SAM7
-=Женек=-
сообщение Jun 6 2010, 18:02
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Господа, а что нужно делать по окончании работы с картой при использовании этой библиотеки?
Не получается использовать эту библиотеку и что либо еще с SPI. Начал разбираться - у меня при вызове команды disk_initialize(0) появляется высокий уровень на MOSI и MISO. Причем наличие карты не обязательно. На CS низкий уровень и командой AT91C_BASE_PIOA->PIO_SODR=(1<<11); он не становится высоким.
Шайтан какой-то...

А ведь мне предстоит читать блок из файла и передавать его по SPI не отключая карту...
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 9 2010, 16:15
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(igorenja @ May 21 2010, 13:24) *
1. #define __ramfunc /* Ничего, поживет и во флеши, нам проект пока собрать надо */
2. Перед timer0_c_irq_handler написать: #pragma arm section code = "ramfunc", после - #pragma arm section code
В области RAM scatter-файла добавить запись * (ramfunc)

попробовал. Все компилится, функции в IRAM не размещаются...
Go to the top of the page
 
+Quote Post
Wano
сообщение Jun 17 2010, 09:52
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Цитата(toweroff @ Jun 9 2010, 19:15) *
попробовал. Все компилится, функции в IRAM не размещаются...


Короче вывод такой(в кейле): сколько десятков раз на форуме про это спрашивали, так ничего путёвого и не сказали.
Походу выход один : Alt+F7 на файле, Code/Const в IRAM. Осилить премудрости scatter-а может и можно,но .... smile3046.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 17 2010, 10:03
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Неправильный вывод. Много раз на форуме разъясняли, как пользоваться scatter'ом. Если что-то не получается, задайте конкретный вопрос и приложите свой скрипт и выдержки из кода.
А галочки оставьте халтурщикам.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Jun 28 2010, 11:12
Сообщение #20


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



To zheka: я "портировал" FatFs на at91sam7s256 месяца 3 назад. Это был экспериментальный проект. Со скачанным кодом я не разбирался, просто почитал описание основных процедур ну и добавил низкоуровневые ф-ции чтения-записи на SDшку. С 2Гб Kingston'ом все работало. Скорость там была, конечно, не ахти, но работало. Если хотите, могу скинуть Вам проектик в Keil'е. Там, конечно, неопрятно все, но при желании разобраться можно. Если, это интересно еще кому-нибудь, могу выложить архивчиком.

Сообщение отредактировал Nikitoc - Jun 28 2010, 11:12
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 29 2010, 04:13
Сообщение #21


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Nikitoc @ Jun 28 2010, 15:12) *
Скорость там была, конечно, не ахти, но работало.

А почему скорость "не ахти"?
В районе скольки КБ/сек?
FatFs вполне быстрая система, тем более на АРМе.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Jun 29 2010, 07:46
Сообщение #22


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(sonycman @ Jun 29 2010, 07:13) *
А почему скорость "не ахти"?
В районе скольки КБ/сек?

Честно скажу - скорость не помню. Возможно, конечно, тестирование было не слишком объективным: я записывал через картридер файл, а во время тестирования ARM создавал на карточке еще один и копировал в него содержимое первого файла. Дело занимало несколько секунд, но я не помню размера файла-источника, чтобы даже примерно ответить, какая была скорость. Честно говоря, самому досадно. Когда понадобится применить это в каком-нибудь проекте придется заново разбираться cranky.gif
Помню, правда, что в значительной мере, скорость работы ограничивалась SD-картой (в частности, процессом чтения).
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 29 2010, 10:05
Сообщение #23


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Хм, скорость чтения у SD карточек исчисляется мегабайтами в секунду.
Может быть, узким местом был интерфейс - например, SPI?
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Jun 29 2010, 10:41
Сообщение #24


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(sonycman @ Jun 29 2010, 13:05) *
Может быть, узким местом был интерфейс - например, SPI?

Возможно. Тактовая частота 25Мгц. Резисторы согласования (33 Ом) я не ставил. Наблюдалась такая странность: при потоковом чтении между считыванием секторов приходилось делать задержку ~100us (и это не ожидание 0xFE, а именно пауза без тактирования !). Иначе не читалось. Возможно это была особенность той карточки. При потоковой записи такого не наблюдалось.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 29 2010, 12:10
Сообщение #25


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Nikitoc @ Jun 29 2010, 14:41) *
Возможно. Тактовая частота 25Мгц. Резисторы согласования (33 Ом) я не ставил. Наблюдалась такая странность: при потоковом чтении между считыванием секторов приходилось делать задержку ~100us (и это не ожидание 0xFE, а именно пауза без тактирования !). Иначе не читалось. Возможно это была особенность той карточки. При потоковой записи такого не наблюдалось.

Вполне возможно, что это нормально.
Карте надо время, чтобы подготовить данные.
Зато потом они идут практически сплошным потоком.

А в Вашем случае токен начала передачи 0xfe что, совсем отсутствовал без снятия клока?
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Jun 29 2010, 13:26
Сообщение #26


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(sonycman @ Jun 29 2010, 15:10) *
А в Вашем случае токен начала передачи 0xfe что, совсем отсутствовал без снятия клока?

Ну, точно не помню, конечно, но чтение зависало на первом же буфере (2048 байт) после первого или второго сектора, если не было паузы.
Цитата
Вполне возможно, что это нормально.
Карте надо время, чтобы подготовить данные.
Зато потом они идут практически сплошным потоком.

Это было бы классно, если бы можно было предугадать - когда нужна пауза, а когда нет.

Сообщение отредактировал Nikitoc - Jun 29 2010, 13:26
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 29 2010, 18:00
Сообщение #27


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Nikitoc @ Jun 29 2010, 17:26) *
Это было бы классно, если бы можно было предугадать - когда нужна пауза, а когда нет.

Согласно документации: Block Read Access Time 0.5 ms - 100 ms (max).

Алгоритм мультисекторного чтения простой:
1. Даём команду CMD18, через NCR (максимум 64 клока) получаем ответ.
2. Ждём токен 0xfe (он появится через 0.5 ms - 100 ms).
3. Читаем 512 байтный сектор.
4. переходим на п.2 пока не прочтём все сектора.
5. Прекращаем чтение командой CMD12.

Мне пришлось поработать всего с несколькими карточками, но проблем с тормозами не было - прямое мультисекторное чтение давало скорость в 1.4 мегабайта в сек. на 12 МГц (или 18 МГц - уже не помню) SPI.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Jun 29 2010, 19:26
Сообщение #28


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(sonycman @ Jun 29 2010, 21:00) *
Согласно документации: Block Read Access Time 0.5 ms - 100 ms (max).
Алгоритм мультисекторного чтения простой:
1. Даём команду CMD18, через NCR (максимум 64 клока) получаем ответ.
2. Ждём токен 0xfe (он появится через 0.5 ms - 100 ms).
3. Читаем 512 байтный сектор.
4. переходим на п.2 пока не прочтём все сектора.
5. Прекращаем чтение командой CMD12.

Да я в общем-то так и делал, доходил до 4-го пункта без проблем, но если после него не прекращал тактирование на 100 мкс - дальше чтение не шло.
Go to the top of the page
 
+Quote Post

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

 


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


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