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

 
 
> Перенос FatFs от Chan'a с GCC на IAR AVR, Проблемы
SZ0
сообщение May 7 2010, 09:37
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Решил перенести с GCC на IAR, т.к. мне не удобно или проще говоря, не нравится писать под GCC. Пример от Chan'a я скомпилировал под gcc, проверил, всё нормально работает. Начал переносить на IAR, там по большей части преобразование типов. Может где и ошибся. В итоге вылез косяк, который обнаружился следующим образом:

Код
Line[0] = '1';
Line[1] = '2';
Line[2] = '3';
Line[3] = '4';
Line[4] = '5';
Line[5] = '6';
Line[6] = '7';
Line[7] = '0';
Line[8] = '.';
Line[9] = 't';
Line[10] = 'x';
Line[11] = 't';
Line[12] = 0;

ptr = Line;

disk_initialize(0);
f_mount(0, &Fatfs[0]);
f_open(&file1, ptr, FA_WRITE | FA_OPEN_ALWAYS);

Buff[0] = '1';
Buff[1] = '2';
Buff[2] = '3';
Buff[3] = '4';
Buff[4] = '5';
Buff[5] = '6';
Buff[6] = '7';
Buff[7] = 0;

f_write(&file1, Buff, 7, &s2);
f_close(&file1);
f_mount(0, 0);

Buff[0] = '1';
Buff[1] = '2';
Buff[2] = '3';
Buff[3] = '4';
Buff[4] = '5';
Buff[5] = '6';
Buff[6] = '7';
Buff[7] = '8';
Buff[8] = 0;
    
ptr = Line;
disk_initialize(0);
f_mount(0, &Fatfs[0]);
f_open(&file1, ptr, FA_WRITE | FA_OPEN_ALWAYS);
f_write(&file1, Buff, 8, &s2);
f_close(&file1);
f_mount(0, 0);


В итоге создаются два одинаковых файла с одинаковыми именами, с записью данных в файле 1234567, а должно быть в 1м файле 1234567, а во 2м 12345678. Но, длина, при просмотре корневого каталога показывается: у 1го файла 7 байт, а у 2го - 8 байт, но данные внутри каждого одинаковые - 1234567. Под gcc же после 2й операции создания файла, просто переписываетс изначальной 1й созданный файл. Частично выяснил, что в функции f_open
Код
res = follow_path(&dj, path);    /* Follow the file path */

возвращает каждый раз FR_NO_FILE. Хотя этот ответ должен возвращаться только при первом создании файла, а при втором создании с тем же именем должен возвращаться FR_OK. В результате чего должен переписываться или открываться файл с этим именем.

Может уже кто переносил и я занимаюсь пустой работой? Или подскажите куда копать, т.к. я в этих глубинах кода уже cranky.gif

P.S. Всех с Днём Радио!!! beer.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
zltigo
сообщение May 7 2010, 09:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Там нечего портировать. Совсем нечего - чистый 'C', но если вдруг Вы чего-то зачем-то поменяли, причем на
таком:
Цитата(SZ0 @ May 7 2010, 12:37) *
[code] Line[0] = '1';
Line[1] = '2';
Line[2] = '3';
Line[3] = '4';
Line[4] = '5';
Line[5] = '6';
Line[6] = '7';
Line[7] = '0';
Line[8] = '.';
Line[9] = 't';
Line[10] = 'x';
Line[11] = 't';
Line[12] = 0;

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SZ0
сообщение May 7 2010, 10:08
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Цитата(zltigo @ May 7 2010, 15:54) *
Там нечего портировать.


Да же почему-то не удивился, что Вы ответили в таком тоне... smile.gif Да, вот такой извращенец, что пишут так простецки biggrin.gif. Раз у Вас всё работает без проблем, то почему бы не привести готовую портированную систему под другой компилятор? Например IAR wink.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 7 2010, 10:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SZ0 @ May 7 2010, 13:08) *
Раз у Вас всё работает без проблем, то почему бы не привести готовую портированную систему под другой компилятор? Например IAR wink.gif

Не хочу, там есть мои интимные дополнения и естественное портирование на платформы отличные от 8bit. Но явных претензий в FAT совсем нет. Повторяю еще раз собственно FAT компилися любым компилятором.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Арк К
сообщение May 7 2010, 10:19
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 8-05-08
Пользователь №: 37 363



Там действительно нечего портировать. В файле ff.c мой IAR выдал ошибки на присвоение разных типов в двух местах. Было

Код
void mem_cpy (void* dst, const void* src, int cnt) {
    char *d = dst;

я сделал char *d = (char*)dst;

и всё.
Остальные файлы - да, потребовали некоторой работы, но там работа с железом.
Go to the top of the page
 
+Quote Post

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

 


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


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