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

 
 
> Flash override, Поделитесь примером на spansion
alexPec
сообщение Jul 20 2011, 21:26
Сообщение #1


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Кому не жалко, нужен для образца оверайд файл на флешку spansion (на контролллере epcs)
Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vadimuzzz
сообщение Jul 22 2011, 14:32
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



попробуйте использовать функции из epcs_commands.h
понадобятся только эти, если тип памяти менять не будете:
void epcs_sector_erase(alt_u32 base, alt_u32 offset);
alt_32 epcs_read_buffer(alt_u32 base, int offset, alt_u8 *dest_addr, int length);
void epcs_write_enable(alt_u32 base);
alt_32 epcs_write_buffer(alt_u32 base, int offset, const alt_u8 *src_addr, int length);

ну м.б. alt_u8 epcs_read_device_id(alt_u32 base) для диагностики. я доберусь до железа, проверю высокоуровневые функции. так трудно гадать
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 22 2011, 16:21
Сообщение #3


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(vadimuzzz @ Jul 22 2011, 18:32) *
попробуйте использовать функции из epcs_commands.h
понадобятся только эти, если тип памяти менять не будете:
void epcs_sector_erase(alt_u32 base, alt_u32 offset);
alt_32 epcs_read_buffer(alt_u32 base, int offset, alt_u8 *dest_addr, int length);
void epcs_write_enable(alt_u32 base);
alt_32 epcs_write_buffer(alt_u32 base, int offset, const alt_u8 *src_addr, int length);

ну м.б. alt_u8 epcs_read_device_id(alt_u32 base) для диагностики. я доберусь до железа, проверю высокоуровневые функции. так трудно гадать


Пробую epcs_read_device_id, в качестве base даю константу EPCS_BASE из system.h. Виснет в функции alt_avalon_spi_command вот здесь:

Код

IORD_ALTERA_AVALON_SPI_RXDATA(base);
    
  /* Keep clocking until all the data has been processed. */
  for (;; )
  {
    
    do
    {
      status = IORD_ALTERA_AVALON_SPI_STATUS(base);
    }
    while (((status & ALTERA_AVALON_SPI_STATUS_TRDY_MSK) == 0 || credits == 0) &&
            (status & ALTERA_AVALON_SPI_STATUS_RRDY_MSK) == 0);


Постоянно крутится do..while. Глубоко пока не копал, может у кого было подобное при переходе с epcs на Numonix (в первом посте ошибся, написал Spansion)?

А функция alt_32 epcs_read_buffer(alt_u32 base, int offset, alt_u8 *dest_addr, int length); похоже подходит, софт даже переписывать не придется.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 23 2011, 00:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(alexPec @ Jul 22 2011, 23:21) *
Глубоко пока не копал, может у кого было подобное при переходе с epcs на Numonix (в первом посте ошибся, написал Spansion)?

ну вы даете! чип хоть скажите какой, может у него регистры по-другому расположены. тогда надо будет в override добавить

upd: извиняюсь, я забыл про маленький нюанс sm.gif
чтобы пользоваться командой epcs_read_device_id и другими, адрес надо брать со смещением. например (кусок system.h):
Код
#define ALT_MODULE_CLASS_epcs_flash_controller_0 altera_avalon_epcs_flash_controller
#define EPCS_FLASH_CONTROLLER_0_BASE 0x1001800
#define EPCS_FLASH_CONTROLLER_0_IRQ 3
#define EPCS_FLASH_CONTROLLER_0_IRQ_INTERRUPT_CONTROLLER_ID 0
#define EPCS_FLASH_CONTROLLER_0_NAME "/dev/epcs_flash_controller_0"
#define EPCS_FLASH_CONTROLLER_0_REGISTER_OFFSET 1024
#define EPCS_FLASH_CONTROLLER_0_SPAN 2048
#define EPCS_FLASH_CONTROLLER_0_TYPE "altera_avalon_epcs_flash_controller"

тогда функцию вызываем так:
Код
alt_printf("EPCS ID:0x%x",epcs_read_device_id(EPCS_FLASH_CONTROLLER_0_BASE+EPCS_FLASH_CONTROLLER_0_REGISTER_OFFSET));


upd2:
alt_find_dev и alt_find_dev будут работать только если не включена опция Small device drivers

у меня на Spansion они работают
Go to the top of the page
 
+Quote Post
alexPec
сообщение Jul 23 2011, 22:19
Сообщение #5


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(vadimuzzz @ Jul 23 2011, 04:02) *
Код
alt_printf("EPCS ID:0x%x",epcs_read_device_id(EPCS_FLASH_CONTROLLER_0_BASE+EPCS_FLASH_CONTROLLER_0_REGISTER_OFFSET));



Спасибо! Вот так все работает.

Цитата(vadimuzzz @ Jul 23 2011, 04:02) *
alt_find_dev и alt_find_dev будут работать только если не включена опция Small device drivers

у меня на Spansion они работают


Чип M25P32, но дело то не в чипе похоже, почему то лист флешей пустой. Указатель next и prev указывают оба на начало листа.

Эта опция выключена, да и с epcs все ведь работало...
Вобщем то и все равно. Посмотрел драйверы "высокоуровневые" - используется таже epcs_read_flash, а она у меня уже работает. Так что задвину все это "высокоуровневое", заменю на epcs_read_flash, благо только читать из флешки и надо.

Еще раз СПАСИБО!!!
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 24 2011, 02:20
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(alexPec @ Jul 24 2011, 05:19) *
Чип M25P32, но дело то не в чипе похоже, почему то лист флешей пустой. Указатель next и prev указывают оба на начало листа.

список заполняется в функции alt_sys_init. первым делом процедура вызывает alt_epcs_flash_query, информацию дает она. запустите в режиме отладки, поставив breakpoint на начало alt_sys_init. посмотрите, заходит ли он в процедуру инициализации и чего он там делает. просто интересно sm.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alexPec   Flash override   Jul 20 2011, 21:26
- - vadimuzzz   вот, например: Код[EPCS-012017] #S25FL128P...   Jul 21 2011, 00:02
|- - alexPec   Цитата(vadimuzzz @ Jul 21 2011, 04:02) во...   Jul 21 2011, 09:47
|- - vadimuzzz   Цитата(alexPec @ Jul 21 2011, 16:47) А эт...   Jul 21 2011, 10:47
|- - alexPec   Цитата(vadimuzzz @ Jul 21 2011, 14:47) эт...   Jul 21 2011, 11:16
|- - vadimuzzz   Цитата(alexPec @ Jul 21 2011, 18:16) спас...   Jul 21 2011, 11:38
|- - alexPec   Цитата(vadimuzzz @ Jul 21 2011, 15:38) эт...   Jul 21 2011, 12:48
|- - vadimuzzz   Цитата(alexPec @ Jul 21 2011, 19:48) Так ...   Jul 21 2011, 14:08
|- - alexPec   Цитата(vadimuzzz @ Jul 21 2011, 18:08) я ...   Jul 22 2011, 10:22
|- - vadimuzzz   а имена устройств проверяли? м.б. после очередной ...   Jul 22 2011, 12:29
|- - alexPec   Цитата(vadimuzzz @ Jul 22 2011, 16:29) а ...   Jul 22 2011, 13:37
- - gosu-art   А это нужно новый файл создавать или править где т...   Jul 21 2011, 03:53
- - vadimuzzz   либо создать файлы вида nios2-flash-override* в ка...   Jul 21 2011, 08:22
- - alexPec   Цитата(vadimuzzz @ Jul 24 2011, 06:20) сп...   Jul 25 2011, 06:39


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 02:26
Рейтинг@Mail.ru


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