Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

flash_api

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем sharikov, 1 фев 2017.

  1. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Смотрю на flash_api.c кое чего не понимаю.

    В конце функций вызывается SpicDisableRtl8195A которая отключает маппинг пинов SPIC. А как же отображение флэш в адресное пространство процессора, оно же сломается.
    Получается 1 вызов flash_api и все, прощай магия ?
    Вообще непонятно зачем при каждом обращении порт включают и выключают, кроме тормозов от этого пользы никакой.
     
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Оно отключается, чтобы случайно, при слете и прочих делах не было записи.
    Но можно было отключить функцию записи в конг.регистрах SPIC. Писатели SDK пошли по другому пути - отключают полностью.
    Для обращения к Flash необходимо взять семафор (или как там его), а по отключению - отдать.
    evice_mutex_lock(RT_DEV_LOCK_FLASH);
    device_mutex_unlock(RT_DEV_LOCK_FLASH);
    Они уже созданы в SDK (device_lock.h) для:
    Код (C):
    1. typedef enum _RT_DEV_LOCK_E
    2. {
    3.     RT_DEV_LOCK_EFUSE = 0,
    4.     RT_DEV_LOCK_FLASH = 1,
    5.     RT_DEV_LOCK_CRYPTO = 2,
    6.     RT_DEV_LOCK_MAX = 3
    7. }RT_DEV_LOCK_E;
    Так-же не желательно использовать свою flash_t flash; если она в системе одна. Есть и ошибки в SDK с Flash, но вроде исправил... При инициализации SPIC создается массив структур для нескольких Flash на разных CS и разных режимах SIO, DIO, QIO и для разных CLK проца(!) (в процедуре калибровки выбирается и тестируется максимальная производительность). Эти данные для обращения к Flash копируются в структуру flash_t flash; но только для данного CS, режима и CLK CPU при инициализации. А инициализация происходит не всегда - там путанно всё и не поддерживается до конца. Исправил как смог - писатели SDK не дописали эту часть - забыли наверно... Я тоже забыл синхронизовать это с версией в git.
    Скинул:
    RTL00MP3/flash_api.c at master · pvvx/RTL00MP3 · GitHub
    Иначе SPIC работал в SIO режиме. Что-то ещё правил в начальной инициализации, чтобы Flash работала в DIO и процедуре калибровки на максимальную скорость (параметры SPIC после неё сохраняются в Flash, если были не записаны ранее). Возможно и не отсинхронизовал в git. Потом гляну... работать всё равно будет, хоть и тормознее :)
    Калибровки SPIC, SDRAM контроллеров сохраняются в Flash. Если они уже записаны, то процедуры калибровок не вызываются. Т.е. калибровки отрабатывают при первом старте с чистой Flash.
    С ними ещё много проблем - нет исходников стартового модуля и на RTL871xAF при каждом старте делается тест SDRAM и прочие глупости, когда там её нет. Кто это будет доделывать для всех - пока не знаю. Всем пофиг.
    Мой кусок "реверса" загрузчиков пока не работает - не доделан. Он замещается бинарником от базового SDK. В Arduino - другой бинаник.
     
    Последнее редактирование: 1 фев 2017
  3. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Код (Text):
    1. /mnt/w2/rtl8710/RTL00MP3/RTL00_SDKV35a/component/common/mbed/targets/hal/rtl8195a/flash_api.c: In function 'flash_otp_read':
    2. /mnt/w2/rtl8710/RTL00MP3/RTL00_SDKV35a/component/common/mbed/targets/hal/rtl8195a/flash_api.c:617:29: error: 'FLASH_CMD_EOTPM' undeclared (first use in this function)
    3.    SpicTxCmdWithDataRtl8195A(FLASH_CMD_EOTPM, 0, 0, flashobj.SpicInitPara); // enter secured OTP
    наверно hal_spi_flash.h не обновили
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Сейчас проверю и синхронизну...
    ----
    Вроде всё. Скопировал из рабочей версии всё в куче и проверил (скачал в zip, экспортнул, странслировал, загрузил в модуль - пашет)
     
    Последнее редактирование: 1 фев 2017
  5. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Компилируется.

    Еще вопрос:
    В чем разница между SpicUserReadRtl8195A и SpicUserReadFourByteRtl8195A ?
    Вторая на 1 такт/байт быстрее. Видимо у нее что-то должно быть выровнено на 4 байта, вопрос что именно.
     
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    IDA в помощь. Obj очень хорошо переводятся в CИ, который можно читать.
    Вообще данные функции написаны без оптимизации. Там можно сильно оптимизнуть. Видно, что вставляли поспешно - по тому с исходниками постеснялись(?) :) ...
    Так и не понял зачем там выравнивание на границу четности в 4 байта - доступ к памяти в RTL побайтный...
    Из IDA без всяких предустановок - попробуйте сделать исходник, как это сделал из таки-же в других случаях:
     

    Вложения:

    Последнее редактирование: 1 фев 2017
  7. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Для SpicUserReadFourByteRtl8195A length и * data обязательно должны быть кратны 4 байтам. Адрес флэш памяти не обязательно должен быть выровнен.

    SpicUserReadRtl8195A при невыровенном адресе буфера работает медленнее на 1 такт.
    SpicUserReadFourByteRtl8195A выровеннный - 10 такт/байт
    SpicUserReadRtl8195A выровенный - 11 такт/байт
    SpicUserReadRtl8195A невыровенный - 12 такт/байт

    Функции в rom писали без оптимизации возможно чтобы снизить количество багов.

    Доступ к памяти побайтный а к фифо spic - нет. Также невыровенный доступ медленнее.
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Замеры надо производить с "откалиброванным" SPIC. Начальные значения всех регистров, до старта многих инициализаций, можно посмотреть в Jtag или прямо во встроенном мониторе в ROM, если чип flash стерт. Можно и в AT прошивке, т.е. уже после инициализации SPIC на DIO:

    # ATSV (Версия AT):
    DeviceID: FC, Flash Size: 1048576 bytes, FlashID: C22014/1, SpicMode: DIO
    v2.2.1,v3.5(2017/02/02-09:48:00)

    Сам SPIC:
    ATSD=40006000,256 (раскрыть)
    Код (Text):
    1.  
    2. 40006000:    01040300    00000000    00000000    00000000
    3. 40006010:    00000001    00000001    00000000    0000001F
    4. 40006020:    00000000    00000000    00000006    000001FF
    5. 40006030:    0000000C    0000000C    00000000    00000000
    6. 40006040:    00000000    00000000    00000000    00000000
    7. 40006050:    00000000    00000000    00010001    40470603
    8. 40006060:    40470603    40470603    40470603    40470603
    9. 40006070:    40470603    40470603    40470603    40470603
    10. 40006080:    40470603    40470603    40470603    40470603
    11. 40006090:    40470603    40470603    40470603    40470603
    12. 400060A0:    40470603    40470603    40470603    40470603
    13. 400060B0:    40470603    40470603    40470603    40470603
    14. 400060C0:    40470603    40470603    40470603    40470603
    15. 400060D0:    40470603    40470603    40470603    40470603
    16. 400060E0:    0000000B    0000003B    0000003B    0000006B
    17. 400060F0:    000000EB    00000002    000000A2    000000A2
    18. 40006100:    00000032    00000038    00000006    00000005
    19. 40006110:    00000051    00000001    00000003    20030012
    20. 40006120:    00000202    0000000E    00000000    00000000
    21. 40006130:    00000000    00000000    00000000    00000000
    22. 40006140:    00000000    00000000    00000000    00000000
    23. 40006150:    00000000    00000000    00000000    00000000
    24. 40006160:    00000000    00000000    00000000    00000000
    25. 40006170:    00000000    00000000    00000000    00000000
    26. 40006180:    00000000    00000000    00000000    00000000
    27. 40006190:    00000000    00000000    00000000    00000000
    28. 400061A0:    00000000    00000000    00000000    00000000
    29. 400061B0:    00000000    00000000    00000000    00000000
    30. 400061C0:    00000000    00000000    00000000    00000000
    31. 400061D0:    00000000    00000000    00000000    00000000
    32. 400061E0:    00000000    00000000    00000000    00000000
    33. 400061F0:    00000000    00000000    00000000    00000000
    34. 40006200:    01040300    00000000    00000000    00000000
    35. 40006210:    00000001    00000001    00000000    0000001F
    36. 40006220:    00000000    00000000    00000006    000001FF
    37. 40006230:    00000004    00000004    00000000    00000000
    38. 40006240:    00000000    00000000    00000000    00000000
    39. 40006250:    00000000    00000000    00010001    40470603
    40. 40006260:    40470603    40470603    40470603    40470603
    41. 40006270:    40470603    40470603    40470603    40470603
    42. 40006280:    40470603    40470603    40470603    40470603
    43. 40006290:    40470603    40470603    40470603    40470603
    44. 400062A0:    40470603    40470603    40470603    40470603
    45. 400062B0:    40470603    40470603    40470603    40470603
    46. 400062C0:    40470603    40470603    40470603    40470603
    47. 400062D0:    40470603    40470603    40470603    40470603
    48. 400062E0:    0000000B    0000003B    0000003B    0000006B
    49. 400062F0:    000000EB    00000002    000000A2    000000A2
    50. 40006300:    00000032    00000038    00000006    00000005
    51. 40006310:    00000051    00000001    00000003    20030012
    52. 40006320:    00000202    0000000E    00000000    00000000
    53. 40006330:    00000000    00000000    00000000    00000000
    54. 40006340:    00000000    00000000    00000000    00000000
    55. 40006350:    00000000    00000000    00000000    00000000
    56. 40006360:    00000000    00000000    00000000    00000000
    57. 40006370:    00000000    00000000    00000000    00000000
    58. 40006380:    00000000    00000000    00000000    00000000
    59. 40006390:    00000000    00000000    00000000    00000000
    60. 400063A0:    00000000    00000000    00000000    00000000
    61. 400063B0:    00000000    00000000    00000000    00000000
    62. 400063C0:    00000000    00000000    00000000    00000000
    63. 400063D0:    00000000    00000000    00000000    00000000
    64. 400063E0:    00000000    00000000    00000000    00000000
    65. 400063F0:    00000000    00000000    00000000    00000000
    66.  

    Конфиг SoC
    ATSD=40000000,256 (раскрыть)
    Код (Text):
    1.  
    2. 40000000:    FF780007    00000000    C0000011    00000000
    3. 40000010:    00000017    00000001    00000000    00000000
    4. 40000020:    16628195    004959D5    4A814000    0000E404
    5. 40000030:    00000001    00000000    02000000    00000000
    6. 40000040:    003CC700    00000000    AABB4003    00003C02
    7. 40000050:    00000000    00000000    00000000    0000009F
    8. 40000060:    2083FF03    900049EE    00000000    00000000
    9. 40000070:    00780003    00A85800    00800028    00000000
    10. 40000080:    00000000    00000000    00000000    00000000
    11. 40000090:    003F0000    00000000    00000000    00000000
    12. 400000A0:    00000000    00000000    00000000    00000000
    13. 400000B0:    00000000    00000000    00000000    EAEAEAEA
    14. 400000C0:    00000000    00000000    00000000    00000000
    15. 400000D0:    00000000    00000000    00000000    00000000
    16. 400000E0:    00000020    00000000    D030F8FC    04000000
    17. 400000F0:    00000000    00000000    00000000    00000000
    18. 40000100:    00000000    EAEAEAEA    00000000    EAEAEAEA
    19. 40000110:    00000000    00000000    00000000    EAEAEAEA
    20. 40000120:    FF000000    00000000    EAEAEAEA    EAEAEAEA
    21. 40000130:    00000000    00000001    EAEAEAEA    EAEAEAEA
    22. 40000140:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    23. 40000150:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    24. 40000160:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    25. 40000170:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    26. 40000180:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    27. 40000190:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    28. 400001A0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    29. 400001B0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    30. 400001C0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    31. 400001D0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    32. 400001E0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    33. 400001F0:    41000220    00010301    00000003    00000000
    34. 40000200:    00000000    FFFFFFEF    EAEAEAEA    EAEAEAEA
    35. 40000210:    00211117    00010000    00000004    00000101
    36. 40000220:    00000004    EAEAEAEA    EAEAEAEA    EAEAEAEA
    37. 40000230:    0300DFC4    00000030    01000000    00000000
    38. 40000240:    00000000    00000003    00000000    EAEAEAEA
    39. 40000250:    00000400    EAEAEAEA    EAEAEAEA    EAEAEAEA
    40. 40000260:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    41. 40000270:    00000001    00110000    00003046    00000000
    42. 40000280:    00000100    00000000    00000000    00000000
    43. 40000290:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    44. 400002A0:    00000000    00000000    00000000    00000000
    45. 400002B0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    46. 400002C0:    00110010    EAEAEAEA    EAEAEAEA    EAEAEAEA
    47. 400002D0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    48. 400002E0:    00000000    00000000    EAEAEAEA    EAEAEAEA
    49. 400002F0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    50. 40000300:    00000029    1FC00002    00000000    EAEAEAEA
    51. 40000310:    EAEAEAEA    EAEAEAEA    00000000    EAEAEAEA
    52. 40000320:    000000FF    000000FF    EAEAEAEA    EAEAEAEA
    53. 40000330:    AA882AAA    AAAAA000    00AAAAAA    AAAAAAAA
    54. 40000340:    00000000    AAAAAAAA    000A000A    EAEAEAEA
    55. 40000350:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    56. 40000360:    00000000    00000000    00000000    00000000
    57. 40000370:    00000000    00002400    EAEAEAEA    EAEAEAEA
    58. 40000380:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    59. 40000390:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    60. 400003A0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    61. 400003B0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    62. 400003C0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    63. 400003D0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    64. 400003E0:    EAEAEAEA    EAEAEAEA    EAEAEAEA    EAEAEAEA
    65. 400003F0:    EAEAEAEA    00000001    EAEAEAEA    EAEAEAEA

    OTP Flash RTL8710AF:
    # ATFO=0,64
    Код (Text):
    1. 00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    2. 00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 32 85 01 45 4c 55
    Как уже писал, первый код для программатора от Rebane не конфигурирует SPIC.
    Процедура конфигурации есть в ROM-BIOS. Включение клоков и CS - стандартное.
    В DAPLinkDevBoard Ameba SPIC дополнительно присутствуют команды:
    REG REG_SPIC_SSIENR (0x40006008) = 0;
    REG REG_SPIC_WRITE_QUAD_ADDR_DATA (0x40006104) = BIT_WR_QUAD_II_CMD(0x38);
    REG REG_SPIC_READ_QUAD_ADDR_DATA (0x400060F0) = BIT_CTRL_RD_QUAD_IO_CMD(0xEB);
    REG REG_SPIC_VALID_CMD (0x40006120) |= 0xFFFFFE01; // ~(BIT_RD_DUAL_I | BIT_RD_DUAL_IO | BIT_RD_QUAD_O | BIT_RD_QUAD_IO | BIT_WR_DUAL_I | BIT_WR_DUAL_II | BIT_WR_QUAD_I | BIT_WR_QUAD_II)


    Далее там идет работа со SPIC через SWD. Коды = полная копия имеющегося на сегодня устаревшего исходника в файле hal_spi_flash_ram.c (лежит на гит, но в проект SDK не транслируется - используется бинарная либа)
    С данным Spic у нас беда - не нашел подробного описания регистров или аналогов. Это вроде единственный (не включая специфические конфигурационные регистры SoC) контроллер, не имеющий подробного отдельного даташита (PDF)
     
    Последнее редактирование: 2 фев 2017
  9. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    flash_burst_read(flash_t *obj, uint32_t address, uint32_t Length, uint8_t * data) при невыровенном address выдает неправильный последний байт. При выровненном адресе читает правильно. Где-то там баг.
    flash_stream_read читает правильно независимо от выравнивания.
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Это не баг вроде. Такое происходит, если у чипа Flash стартовать по невыровненному адресу. Аналогично даже в Spic ESP. Байты меняются местами очень хитро...
     
  11. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Код rebane конфигурирует достаточный минимум чтобы работало в однобитном режиме. И оно работает. Для флэшера навороты ни к чему, там нужен простой и понятный код. Скорость ограничивает стирание и заливка по swd. Обмен с флэшкой даже в однобитном режиме на порядок быстрее по сравнению со скоростью swd, т.е ускорять его не имеет практического смысла.
     
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Он снят с кусков загрузчика и имеет беды с записью. Так-же не годится для CMSIS DAP Link -ов - в них для ARM другая концепция и алгоритм. + Не поддерживает заявленные для RTL чипы Flash именно по работе с регистрами Spic. Только время с им потерял встраивая в программаторы...
    Т.е. он никуда не годиться. :) Надо было сразу самому писать совместимый хоть с чем-то. Теперь опять надо время на это тратить - Делаю тут помалеху к CMSIS DAP Link -у флешер...
     
    Последнее редактирование: 2 фев 2017
  13. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Читаю за вас даташиты. Дорого.
    MX25L8006E:
    Read Data Bytes (READ)
    The read instruction is for reading data out. The address is latched on rising edge of SCLK, and data shifts out on
    the falling edge of SCLK at a maximum frequency fR. The first address byte can be at any location. The address
    is automatically increased to the next higher address after each byte data is shifted out, so the whole memory can
    be read out at a single READ instruction. The address counter rolls over to 0 when the highest address has been
    reached.


    Для всех команд чтения аналогично - читать можно с любой позиции.

    Неправильно читается последний байт.
     
  14. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Беды с записью давно исправлены, снимитесь с ручника.
     
  15. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Именно - подумаете и поймете почему :) Flash к данному делу не относиться.
    Ещё не глядел - есть ли у данного Spic оптимизация для блочного специального чтения с SPI flash (?)...
    Угу - накрученными обходными маневрами в сотни лишних кругов :) Там главное в том, что теперь весь буржуйский опен-софт будет с ним мучаться. :p Только это в нем меня радует :p

    Какую область охватывает отображение на карту памяти с flash?
     
    Последнее редактирование: 2 фев 2017
  16. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    # ATFD=0,16
    00000000 99 99 96 96 3f cc 66 fc c0 33 cc 03 e5 dc 31 62
    #ATFD=100000,16
    00100000 99 99 96 96 3f cc 66 fc c0 33 cc 03 e5 dc 31 62
    # ATFD=200000,16
    00200000 99 99 96 96 3f cc 66 fc c0 33 cc 03 e5 dc 31 62
    # ATFD=400000,16
    00400000 99 99 96 96 3f cc 66 fc c0 33 cc 03 e5 dc 31 62
    # ATFD=800000,16
    00800000 99 99 96 96 3f cc 66 fc c0 33 cc 03 e5 dc 31 62
    # ATFD=1000000,16
    01000000 99 99 96 96 3f cc 66 fc c0 33 cc 03 e5 dc 31 62
    # ATFD=2000000,16
    02000000 99 99 96 96 3f cc 66 fc c0 33 cc 03 e5 dc 31 62
    # ATFD=4000000,16
    04000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    Ку.
    # ATFD=8000000,16
    RTL8195A[HAL]: Hard Fault Error!!!!
    Три раза ку :)

    # ATFD=3fffff0,32
    03FFFFF0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    0x4000000/1024/1024 = 64MБ ?
    Снимок1269.gif

    Или в api функциях режется? Но от куда тогда обрыв? Старший бит заезжает в какой управляющий бит? ...
    Походу 0x98000000..0x9C00000 - это первая flash.
    Далее 0x9C00000..0xA0000000 - это вторая?
    # ATSD=0x9FFFFFF0,32
    9FFFFFF0: 00000000 00000000 00000000 00000000
    RTL8195A[HAL]: Hard Fault Error!!!!
    Т.е. 0x9C00000..0xA0000000 - полностью заполнено нулями. Хто там должен жить?
     
    Последнее редактирование: 2 фев 2017
  17. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    579
    Симпатии:
    52
    Это 0x98000000 + 0x8000000 = 0xA0000000
    Пространство не замаплено, поэтому возникает Hard fault. openocd тоже не читает:
    > mdw 0xa0000000 1
    Failed to read memory at 0xa0000004


    хз. надо переключать spic pinmux на внешние пины и смотреть логическим анализатором что он передает в адресе флэшки. Если 4-х байтные адреса поддерживает то может и 64м.
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Первый раздел в 64МБ флеша дублируется. Далее 64МБ нулей. Возможно что-то-там читается, но выводы дают нуль.
    Вроде все 92 (но вроде их там ещё больше :)) GPIO входа-выхода у чипа имеют управляемые подтяжки - можно подергать за них любым входом на чипе - я так прилепил недостающие 2 провода прерываний от контактов "SD вставлена" и "защиты записи" к SDIOH. :)
    Подтяжками к нулю или к "1" переключаются... можно транслировать с другого пина...
     
  19. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    0x4000000_CLK_Flash.gif
    CLK Flash при чтении области второго банка 64МБ (0x9C00000..0xA0000000) на RTL8711AM. Тоже читается нулями - наверно CS нет или чего другого...
    Выходит окошко для flash в 128МБ. Но что-то со второй частью...
     
    Последнее редактирование: 2 фев 2017
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.749
    Симпатии:
    1.284
    Кручу бесплатно:
    У нас 32-х битный регистр (или 16-ти). Задвигаются биты со старшего к младшим. Переключение адреса по чету сбрасывает регистр (т.е. выбирает следующий адрес или регистр - оно-же spic - в памяти отображаться должно, да по адресам).
    Начали читать с нечетного... получили к примеру 3 старших байта - записали.
    Далее всё хорошо - по прет по четыре. Теперь пятый - последний.
    Залез он в старшие 8 бит и сидит там. Вы его ищите в младших битах, как положено (только кем?)
    Вот он вам и последний неверный :p Так што курить даташит на flash - не при делах.
     
    Последнее редактирование: 2 фев 2017

Поделиться этой страницей