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

 
 
> FatFS + LPC2148 + KEIL
MaxEngee
сообщение Dec 12 2008, 10:39
Сообщение #1


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

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



Добрый день
Хочу освоить работу с FAT16/32 для SD.

Пробовал RTL Flash File System от Keil - показалась полным г...ом
Мучал пример, все вроде как работает, но через раз. С директориями не работает.

Хочу портировать fatFS на SSP1 LPC2148, работаю в KEIL.
Нашел порт fatFS на SSP1 LPC2148 для IAR, думал переделать, но уж очень много гемора и не совместимостей (название регистров, битовый поля, да и с синтаксис не нравиться)

Может у кого есть или где видел порт именно для keil
Прикрепленные файлы
Прикрепленный файл  ff004b_IAR.zip.zip ( 778.51 килобайт ) Кол-во скачиваний: 104
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MaxEngee
сообщение Dec 16 2008, 10:56
Сообщение #2


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

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



Всем спасибо за посильную помощь.

Сделал все сам. В ИАРе конечно намного лучше с битовыми полями работать:
//1 while(!SSPSR_bit.RNE); IAR
while(!(SSPSR & 0x4)); KEYL
или
//1 PINSEL1_bit.P0_17 = PINSEL1_bit.P0_18 = PINSEL1_bit.P0_19 = 2;
PINSEL1 |= 2<<2;
PINSEL1 |= 2<<4;
PINSEL1 |= 2<<6;

Может можно хедеры ИАРа в кейле использовать?

Несколько различий компиляторов:
11111111111111111111111111111
#define KHZ *1000l
int freq=15KHZ; //для иара - 15 000

Кейл воспринимает только через пробел
int freq=15KHZ; //для кейла - 15
int freq=15 KHZ; //для кейла - 15 000

222222222222222222222222222222222
На следующую запись Кейл ругаеться
208 for (Int32U Busy = 0, i = Twr; i && (Busy != 0xFF); --i)

fatFS\mmc.c(208): error: #254: type name is not allowed
fatFS\mmc.c(208): error: #65: expected a ";"
fatFS\mmc.c(208): error: #20: identifier "Busy" is undefined

Переправил на
Int32U Busy;
for (Busy = 0, i = Twr; i && (Busy != 0xFF); --i)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 16 2008, 11:49
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(MaxEngee @ Dec 16 2008, 12:56) *
//1 while(!SSPSR_bit.RNE); IAR
while(!(SSPSR & 0x4)); KEYL
Раскритикую нафиг. "Магические цифры" вроде этой 0x4 - великое зло. Наверняка у кейла в заголовочном файле есть описание бита RNE. Или как #define RNE (1<<4) или как #define RNE 4.
В таком случае эта запись должна выглядить либо while(!(SSPSR & RNE)) либо while(!(SSPSR & (1 < RNE))). Иначе уже через пару дней вы полезете копать user manual чтобы понять, какой же бит эта четверка означает.
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
//1 PINSEL1_bit.P0_17 = PINSEL1_bit.P0_18 = PINSEL1_bit.P0_19 = 2;
PINSEL1 |= 2<<2;
PINSEL1 |= 2<<4;
PINSEL1 |= 2<<6;
PINSEL1 объявлен как volatile. Оба этих варианта приводят к совершенно лишним чтениям PINSEL1, а первая еще и к наложению масок (один из минусов объявления регистров как битовых структур). PINSEL1 |= (2<<1*2) | (2<<2*2) | (2<<3*2); Или сразу вынести в глобальную инициализацию и прописать сразу весь регистр через '=' (в ущерб модульности).
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
Может можно хедеры ИАРа в кейле использовать?
Можно, но полагаю у кейла заголовочные файлы не хуже.
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
#define KHZ *1000l
int freq=15KHZ; //для иара - 15 000

Кейл воспринимает только через пробел
int freq=15KHZ; //для кейла - 15
int freq=15 KHZ; //для кейла - 15 000
Очень, очень странно. 15KHZ - единый токен, подстановки быть не должно. Оба должны были выдать ошибку. gcc поступает правильно:
Цитата
invalid suffix "KHZ" on integer constant
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
На следующую запись Кейл ругаеться
208 for (Int32U Busy = 0, i = Twr; i && (Busy != 0xFF); --i)
Это С99, возможно Кейл поддерживает только С89. Ненаказуемо.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 16 2008, 11:57
Сообщение #4


Гуру
******

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



Цитата(Сергей Борщ @ Dec 16 2008, 14:49) *
Это С99, возможно Кейл поддерживает только С89. Ненаказуемо.

Keil частично поддерживает C99. Впрочем, все документировано.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MaxEngee   FatFS + LPC2148 + KEIL   Dec 12 2008, 10:39
- - Vladimir_T   uCOS-FS может подойти...   Dec 12 2008, 13:08
- - prottoss   Цитата(MaxEngee @ Dec 12 2008, 17:39) Хоч...   Dec 13 2008, 12:14
- - sonycman   А хоть одна из доступных файловых систем поддержив...   Dec 13 2008, 14:56
|- - Сергей Борщ   Цитата(sonycman @ Dec 13 2008, 16:56) А х...   Dec 13 2008, 15:09
- - sonycman   Цитатаand Unicode - Local code mutual conversion t...   Dec 13 2008, 20:34
|- - Qwertty   Цитата(sonycman @ Dec 13 2008, 23:34) А-а...   Dec 14 2008, 01:39
|- - zltigo   Цитата(Qwertty @ Dec 14 2008, 04:39) А ос...   Dec 14 2008, 08:30
|- - sonycman   Цитата(Qwertty @ Dec 14 2008, 05:39) Заче...   Dec 14 2008, 10:28
|- - Qwertty   Цитата(sonycman @ Dec 14 2008, 13:28) В с...   Dec 14 2008, 15:35
|- - sonycman   Цитата(bigarmer @ Dec 14 2008, 18:48) You...   Dec 14 2008, 16:51
|- - Kompot   Цитата(sonycman @ Dec 14 2008, 20:51) But...   Dec 15 2008, 10:05
|- - sonycman   Цитата(Kompot @ Dec 15 2008, 14:05) Дык в...   Dec 15 2008, 13:18
- - bigarmer   You can try the uC/FS from Micruim, it supports IA...   Dec 14 2008, 14:48
- - bigarmer   to sonycman, Please refer to, http://www.micrium....   Dec 15 2008, 08:20
- - MaxEngee   Всем большое спасибо за ценные советы Цитата(...   Dec 15 2008, 09:34
- - bigarmer   You need to register for downloading the source co...   Dec 15 2008, 10:05
- - MaxEngee   Может кто скажет почему кейл ругаеться на определе...   Dec 15 2008, 10:06
|- - aaarrr   Цитата(MaxEngee @ Dec 15 2008, 13:06) Мож...   Dec 15 2008, 10:10
- - MaxEngee   на счет TRUE и/или FALSE #define - точно!...   Dec 15 2008, 10:26
|- - Сергей Борщ   Цитата(MaxEngee @ Dec 15 2008, 12:26) Мож...   Dec 15 2008, 11:24
- - MaxEngee   Блин точно, извеняюсь, поспешил с вопросом. Дейст...   Dec 15 2008, 12:18
- - Hermes   А это сможет работать в IAR на lpc2478 ???   Dec 16 2008, 11:41
- - Hermes   Меня походу проигнорировали... это сможет работать...   Dec 16 2008, 17:58
|- - Сергей Борщ   Цитата(Hermes @ Dec 16 2008, 19:58) Меня ...   Dec 16 2008, 21:07
|- - Hermes   Цитата(Сергей Борщ @ Dec 17 2008, 00:07) ...   Dec 17 2008, 13:25
|- - sonycman   Цитата(Hermes @ Dec 17 2008, 17:25) Т.е. ...   Dec 17 2008, 13:51
|- - Сергей Борщ   Цитата(Hermes @ Dec 17 2008, 15:25) Т.е. ...   Dec 17 2008, 14:14
- - MaxEngee   Цитата(Hermes @ Dec 16 2008, 15:41) А это...   Dec 17 2008, 10:08
- - Hermes   сегодня вечером попробую переопределить регистры.....   Dec 17 2008, 13:57
- - Ivan Kuznetzov   Всем привет! Нашел тут проект с ФатФс для Keil...   Jul 27 2009, 12:10
|- - Сергей Борщ   Цитата(Ivan Kuznetzov @ Jul 27 2009, 15:1...   Jul 27 2009, 12:59
- - Ivan Kuznetzov   Походу дело в функции IrqEnable(); коорая в случае...   Jul 27 2009, 13:55
|- - aaarrr   Цитата(Ivan Kuznetzov @ Jul 27 2009, 17:5...   Jul 27 2009, 14:24
- - Ivan Kuznetzov   Все равно не робит... видимо есть еще какие-то раз...   Jul 27 2009, 15:24
|- - aaarrr   Цитата(Ivan Kuznetzov @ Jul 27 2009, 19:2...   Jul 27 2009, 15:39
|- - Ivan Kuznetzov   Цитата(aaarrr @ Jul 27 2009, 20:39) Дык а...   Jul 27 2009, 16:10
- - SPACUM   Переделываю для LPC2478 на Кроссстудии, похоже все...   Aug 4 2009, 17:54


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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 03:52
Рейтинг@Mail.ru


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