|
Flash override, Поделитесь примером на spansion |
|
|
|
 |
Ответов
|
Jul 22 2011, 14:32
|

Гуру
     
Группа: Свой
Сообщений: 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) для диагностики. я доберусь до железа, проверю высокоуровневые функции. так трудно гадать
|
|
|
|
|
Jul 22 2011, 16:21
|
Профессионал
    
Группа: Свой
Сообщений: 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); похоже подходит, софт даже переписывать не придется.
|
|
|
|
|
Jul 23 2011, 00:02
|

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

|
Цитата(alexPec @ Jul 22 2011, 23:21)  Глубоко пока не копал, может у кого было подобное при переходе с epcs на Numonix (в первом посте ошибся, написал Spansion)? ну вы даете! чип хоть скажите какой, может у него регистры по-другому расположены. тогда надо будет в override добавить upd: извиняюсь, я забыл про маленький нюанс  чтобы пользоваться командой 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 они работают
|
|
|
|
|
Jul 23 2011, 22:19
|
Профессионал
    
Группа: Свой
Сообщений: 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, благо только читать из флешки и надо. Еще раз СПАСИБО!!!
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|