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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> 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
Vladimir_T
сообщение Dec 12 2008, 13:08
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



uCOS-FS может подойти...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 13 2008, 12:14
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(MaxEngee @ Dec 12 2008, 17:39) *
Хочу портировать fatFS на SSP1 LPC2148, работаю в KEIL. Нашел порт fatFS на SSP1 LPC2148 для IAR, думал переделать, но уж очень много гемора и не совместимостей (название регистров, битовый поля, да и с синтаксис не нравиться)
Может у кого есть или где видел порт именно для keil
Какой порт??? FatFS, если имеется ввиду файловая система от ChaN, написана на чистейшем Си. Ни какого порта не надо. Единственное, нужно написать операции записи-чтения секторов для используемого носителя... Задача относительно простая.


--------------------
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 13 2008, 14:56
Сообщение #4


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

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



А хоть одна из доступных файловых систем поддерживает длинные имена?
А то что-то стрёмно наблюдать список файлов в формате 8.3...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 13 2008, 15:09
Сообщение #5


Гуру
******

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



Цитата(sonycman @ Dec 13 2008, 16:56) *
А хоть одна из доступных файловых систем поддерживает длинные имена?
Там какая-то борьбическая борьба с микрософтом. Вроде как длинные имена поверх FAT запатентованы и микрософт хочет за них денюжку. Но это обрывки моих воспоминаний - где-то читал в интернете. Может у того же Чана.

P.S. Ага, точно у него:
Цитата
Long file name
There is an extended feature to handle long file name (LFN) up to 255 characters in addition to 8.3 format file name on the FAT file system. To support this feature, 512 byte string buffer for file name and Unicode - Local code mutual conversion table which occupies 256KB is required. Therefore memory consumption of code and work area will be increased drastically. The FatFs module currently does not support this feature. The LFN on the FAT file system is a patent of Microsoft. When use it on the commercial products, you have to be licensed.


--------------------
На любой вопрос даю любой ответ
"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
sonycman
сообщение Dec 13 2008, 20:34
Сообщение #6


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

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



Цитата
and Unicode - Local code mutual conversion table which occupies 256KB is required.

А-а-а! angry.gif
Держите меня семеро - 256 килобайт только для поддержки длинных имён???
OMFG!
Без ARM9 соваться нечего... придётся пока распрощаться с этой затеей sad.gif
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 14 2008, 01:39
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(sonycman @ Dec 13 2008, 23:34) *
А-а-а! angry.gif
Держите меня семеро - 256 килобайт только для поддержки длинных имён???
OMFG!
Без ARM9 соваться нечего... придётся пока распрощаться с этой затеей sad.gif

Зачем 256 килобайт знает только сам Чан. А остальные пользуются LFN даже на мегах с 2Кб ОЗУ и 32 флеши. Правда Read only.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2008, 08:30
Сообщение #8


Гуру
******

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



Цитата(Qwertty @ Dec 14 2008, 04:39) *
А остальные пользуются LFN даже на мегах с 2Кб ОЗУ и 32 флеши.

Прелестно, только вот как у них там, например, с такими именами "文件系统描述"


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 14 2008, 10:28
Сообщение #9


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

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



Цитата(Qwertty @ Dec 14 2008, 05:39) *
Зачем 256 килобайт знает только сам Чан. А остальные пользуются LFN даже на мегах с 2Кб ОЗУ и 32 флеши. Правда Read only.

В смысле, это с поддержкой только кириллицы и латиницы?
А можно пример подобной реализации?
Go to the top of the page
 
+Quote Post
bigarmer
сообщение Dec 14 2008, 14:48
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 52
Регистрация: 5-12-08
Пользователь №: 42 221



You can try the uC/FS from Micruim, it supports IAR and Keil MDK compiler!
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 14 2008, 15:35
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(sonycman @ Dec 14 2008, 13:28) *
В смысле, это с поддержкой только кириллицы и латиницы?
А можно пример подобной реализации?

http://delanet.ru/content/view/438/46/
Исходники внизу страницы. Я глубоко не вникал, но там однозначно обрабатываются цепочки LFN.
Вот тут - http://www.robs-projects.com/filelib.html еще библиотека. Эта вроде даже писать умеет.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 14 2008, 16:51
Сообщение #12


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

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



Цитата(bigarmer @ Dec 14 2008, 18:48) *
You can try the uC/FS from Micruim, it supports IAR and Keil MDK compiler!

But where to get it`s sources?

Цитата(Qwertty @ Dec 14 2008, 19:35) *
http://delanet.ru/content/view/438/46/
Исходники внизу страницы. Я глубоко не вникал, но там однозначно обрабатываются цепочки LFN.
Вот тут - http://www.robs-projects.com/filelib.html еще библиотека. Эта вроде даже писать умеет.

Ого, спасибо. Интересные странички. Буду изучать smile.gif

ЗЫ:Вообще хотелось бы сделать так: ARM с MMC картой, при подключении к ПК - mass storage device (или свой софт на HID) для записи на диск. Всё остальное время - самостоятельное устройство с произвольным доступом к диску...
Go to the top of the page
 
+Quote Post
bigarmer
сообщение Dec 15 2008, 08:20
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 52
Регистрация: 5-12-08
Пользователь №: 42 221



to sonycman,

Please refer to,
http://www.micrium.com/nxp/LPC21xx.html#fsports
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 15 2008, 09:34
Сообщение #14


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

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



Всем большое спасибо за ценные советы smile.gif


Цитата(prottoss @ Dec 13 2008, 16:14) *
Какой порт??? FatFS, если имеется ввиду файловая система от ChaN, написана на чистейшем Си. Ни какого порта не надо. Единственное, нужно написать операции записи-чтения секторов для используемого носителя... Задача относительно простая.


На сколько я знаю портирование чего либо - переписывание низкоуровневых функций, работающих с конкретным железом + переопределние типов (если надо) + мелкие исправления синтаксиса

В FAtFS требуется переписать:
disk_ioctl
disk_write
disk_read
disk_status
disk_initialize

В ff004b IAR.zip - mmc.c и mmc_ll_SPI1.c - не считаю что это просто.

К тому же я обратился сюда в надежде что есть готовый порт и мне не потребуется несколько дней тратить (как повезет) на переработку
Все спасибо за внимание


Да особое спасибо bigarmer-у за пустую ссылку http://www.micrium.com/nxp/LPC21xx.html#fsports

Сообщение отредактировал MaxEngee - Dec 15 2008, 09:58
Go to the top of the page
 
+Quote Post
Kompot
сообщение Dec 15 2008, 10:05
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 10-06-08
Из: Хочу в пампасы...
Пользователь №: 38 192



Цитата(sonycman @ Dec 14 2008, 20:51) *
But where to get it`s sources?
Ого, спасибо. Интересные странички. Буду изучать smile.gif

ЗЫ:Вообще хотелось бы сделать так: ARM с MMC картой, при подключении к ПК - mass storage device (или свой софт на HID) для записи на диск. Всё остальное время - самостоятельное устройство с произвольным доступом к диску...



Дык все уже украдено до нас...

http://www.sparkfun.com/commerce/product_i...roducts_id=8627

Как раз то, что Вам хотелось. Работает. С исходниками.
Go to the top of the page
 
+Quote Post
bigarmer
сообщение Dec 15 2008, 10:05
Сообщение #16


Участник
*

Группа: Новичок
Сообщений: 52
Регистрация: 5-12-08
Пользователь №: 42 221



You need to register for downloading the source code.
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 15 2008, 10:06
Сообщение #17


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

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



Может кто скажет почему кейл ругаеться на определение типа (iar - ok):

/* Boolean type */
typedef enum { FALSE = 0, TRUE } BOOL;


fatFS\integer.h(27): error: #40: expected an identifier
fatFS\integer.h(27): error: #40: expected an identifier
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 15 2008, 10:10
Сообщение #18


Гуру
******

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



Цитата(MaxEngee @ Dec 15 2008, 13:06) *
Может кто скажет почему кейл ругаеться на определение типа (iar - ok):

Потому что TRUE и/или FALSE где-то уже заданы через #define.
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 15 2008, 10:26
Сообщение #19


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

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



на счет TRUE и/или FALSE #define - точно!!! Спасибо

Может знаете что за функция в IAR - SYS_GetFpclk()??? И что она возвращает?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 15 2008, 11:24
Сообщение #20


Гуру
******

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



Цитата(MaxEngee @ Dec 15 2008, 12:26) *
Может знаете что за функция в IAR - SYS_GetFpclk()??? И что она возвращает?
Даю 99.99%, что в ИАРе такой функции нет. Скорее всего что-то из сторонних библиотек для LPC. А поиск по файлам исходников ничего не дает? Судя по названию - возвращает частоту, на которую настроен pclk в LPC.


--------------------
На любой вопрос даю любой ответ
"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
MaxEngee
сообщение Dec 15 2008, 12:18
Сообщение #21


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

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



07.gif
Блин
точно, извеняюсь, поспешил с вопросом.
Действительно есть еще одна библиотечка с общими определениями и настройками.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 15 2008, 13:18
Сообщение #22


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

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



Цитата(Kompot @ Dec 15 2008, 14:05) *
Дык все уже украдено до нас...

http://www.sparkfun.com/commerce/product_i...roducts_id=8627

Как раз то, что Вам хотелось. Работает. С исходниками.

Спасибо! beer.gif

Цитата(bigarmer @ Dec 15 2008, 14:05) *
You need to register for downloading the source code.

There are no downloads under "µC/FS ports" available... even if logged in... crying.gif
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 16 2008, 10:56
Сообщение #23


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

Группа: Свой
Сообщений: 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
Hermes
сообщение Dec 16 2008, 11:41
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-08
Пользователь №: 41 692



А это сможет работать в IAR на lpc2478 ???
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 16 2008, 11:49
Сообщение #25


Гуру
******

Группа: Модераторы
Сообщений: 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
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 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
Hermes
сообщение Dec 16 2008, 17:58
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-08
Пользователь №: 41 692



Меня походу проигнорировали...
это сможет работать на lpc-2478 ?
кто-нить может поделиться исходниками ? - буду очень признателен!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 16 2008, 21:07
Сообщение #28


Гуру
******

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



Цитата(Hermes @ Dec 16 2008, 19:58) *
Меня походу проигнорировали...
Или просто не знают ответ.
Цитата(Hermes @ Dec 16 2008, 19:58) *
это сможет работать на lpc-2478 ?
За это время можно было просмотреть исходник на предмет используемой периферии, открыть два юзер мануала и сравнить описание этой периферии.


--------------------
На любой вопрос даю любой ответ
"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
MaxEngee
сообщение Dec 17 2008, 10:08
Сообщение #29


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

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



Цитата(Hermes @ Dec 16 2008, 15:41) *
А это сможет работать в IAR на lpc2478 ???


Слабо понятно что значит "это".
Если вы имеете ввиду портированный FatFS - ff004b IAR.zip, и сможет ли он работать на lpc2478 --> Ответ НЕТ, Так как в ff004b IAR.zip низкоуровневые функции написаны для модуля SSP LPC2148.

Цитата(Сергей Борщ @ Dec 16 2008, 15:49) *
Можно, но полагаю у кейла заголовочные файлы не хуже.

По поводу хедеров в Кейле. Там только определенны адреса регистров(что очень не удобно):
/***********************************************************************/
/* This file is part of the uVision/ARM development tools */
/* Copyright KEIL ELEKTRONIK GmbH 2002-2005 */
/***********************************************************************/
/* */
/* LPC214X.H: Header file for Philips LPC2141/42/44/46/48 */
/* */
/***********************************************************************/

#ifndef __LPC214x_H
#define __LPC214x_H

/* Vectored Interrupt Controller (VIC) */
#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000))
#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004))
#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008))
#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C))
#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010))
#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014))
Go to the top of the page
 
+Quote Post
Hermes
сообщение Dec 17 2008, 13:25
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-08
Пользователь №: 41 692



Цитата(Сергей Борщ @ Dec 17 2008, 00:07) *
Или просто не знают ответ. За это время можно было просмотреть исходник на предмет используемой периферии, открыть два юзер мануала и сравнить описание этой периферии.

Т.е. просто переопределить адреса регистров?
простите за возможно глупые вопросы...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 17 2008, 13:51
Сообщение #31


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

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



Цитата(Hermes @ Dec 17 2008, 17:25) *
Т.е. просто переопределить адреса регистров?
простите за возможно глупые вопросы...

Переписать функции по работе с периферией. Возможно, просто переопределить регистры, а может и полностью переписать - зависит от отличий в железе...
Go to the top of the page
 
+Quote Post
Hermes
сообщение Dec 17 2008, 13:57
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-08
Пользователь №: 41 692



сегодня вечером попробую переопределить регистры... будем надеяться прокатит... если что буду еще спрашивать.... я пока что новичок....
Спасибо за ваши ответы!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 17 2008, 14:14
Сообщение #33


Гуру
******

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



Цитата(Hermes @ Dec 17 2008, 15:25) *
Т.е. просто переопределить адреса регистров?
Адреса прописаны в заголовочном файле. Если модуль периферии один и тот же, то адреса переопределятся автоматически. А вот если модули разные, то надо будет переписать все функции, использующие эти модули. Поскольку в FatFS все функции работы с периферией отделены от собственно файловой системы в отдельные файлы, найти их несложно после чтения документации.


--------------------
На любой вопрос даю любой ответ
"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
Ivan Kuznetzov
сообщение Jul 27 2009, 12:10
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Всем привет! Нашел тут проект с ФатФс для Keil + GNU компилятор (проект под LPC2148). Попробывал его переделать под родной кейловский компилятор, инлайны заменил на __inline, вроде все скомпилилось, в дебаггере смотрю (окно VIC) - прерывания от Таймера0 и УАРТ регистрируются, но в уарт ничего не пишет. Стартап файл создал новый с помощью граф. редактора (все по Тревору) - вроде все норм, но в терминале прога ничего не пишет...
Прикрепленные файлы
Прикрепленный файл  lpc213x_chanfat_keil3.rar ( 966.47 килобайт ) Кол-во скачиваний: 52
 


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 27 2009, 12:59
Сообщение #35


Гуру
******

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



Цитата(Ivan Kuznetzov @ Jul 27 2009, 15:10) *
в дебаггере смотрю (окно VIC)
Закройте это окно. Чтение регистров VIC дебаггером с точки зрения ядра - то же самое, что и чтение процессором. А чтение некоторых регистров VIC приводит к изменению их содержимого (например, VICVectAddr). Подробнее - в описании VIC.


--------------------
На любой вопрос даю любой ответ
"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
Ivan Kuznetzov
сообщение Jul 27 2009, 13:55
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Походу дело в функции IrqEnable(); коорая в случае GCC компилятора объявлена в asmfunc.s файле как:
Код
.equ SWI_IRQ_EN,    1

IrqEnable:
    SWI    SWI_IRQ_EN
    BX    LR


Вставляю это в свой проект - не пашет ... crying.gif


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 27 2009, 14:24
Сообщение #37


Гуру
******

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



Цитата(Ivan Kuznetzov @ Jul 27 2009, 17:55) *
Вставляю это в свой проект - не пашет ... crying.gif

Теперь задайте себе вопрос, есть ли в проекте обработка SWI, и если есть, обрабатывается ли должным образом такой запрос на включение прерываний.

P.S. Если процессор находится в привилегированном режиме, можно просто воспользоваться intrinsic-функцией __enable_irq().
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Jul 27 2009, 15:24
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Все равно не робит... видимо есть еще какие-то различия в asmfunc.s и startup.s у проекта с кейловским компилятором... Прилагаю рабочий проект для связки Keil + GNU компилятор (Sourcery G++) Мож кто посмотрит разницу, пожалуйста, а? crying.gif
Прикрепленные файлы
Прикрепленный файл  lpc213x_chanfat_ws.rar ( 960.82 килобайт ) Кол-во скачиваний: 52
 


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 27 2009, 15:39
Сообщение #39


Гуру
******

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



Цитата(Ivan Kuznetzov @ Jul 27 2009, 19:24) *
Все равно не робит...

Дык а сделали то что? Или нужно угадать по рабочему проекту для GCC, почему он не работает у Вас под RV?
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Jul 27 2009, 16:10
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(aaarrr @ Jul 27 2009, 20:39) *
Дык а сделали то что? Или нужно угадать по рабочему проекту для GCC, почему он не работает у Вас под RV?

Прпробывал вместо IrqEnable() вписать __enable_irq(). Прерывания от Uart0 и Timer0 в VIC регистрируются - а в терминале по-прежнему ничего нету...


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Aug 4 2009, 17:54
Сообщение #41


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

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Переделываю для LPC2478 на Кроссстудии, похоже все ассемблерные программы работают криво. Надо их полностью переписывать.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
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 Текстовая версия Сейчас: 20th July 2025 - 01:15
Рейтинг@Mail.ru


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