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

Кто доделает Flasher для RTL00 c JlinkARM.dll?

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем pvvx, 30 сен 2016.

  1. sharikov

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

    Сообщения:
    564
    Симпатии:
    51
    Команду даете неправильно
    ctrlr0 = 0x00000100
    SSIENR = 1
    DR = 0xb1
    ..wait ready..
    SSIENR = 0
    Делаю сброс и получаю:
    Код (Text):
    1. =========================================================
    2.  
    3. ROM Version: 0.3
    4.  
    5. Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)
    6.  
    7. =========================================================
    8. Check boot type form eFuse
    9. SPI Initial
    10. Image1 length: 0xf, Image Addr: 0xf
    11. Image1 Validation Incorrect !!!
    12. Please Re-boot and try again, or re-burn the flash image
    13. <RTL8195A>
    14. <RTL8195A>?
    15. ----------------- COMMAND MODE HELP ------------------
    16.         HELP (?)   : Print this help messag
    17.  
    18.         DB <Address, Hex> <Len, Dec>:
    19.                                  Dump memory byte or Read Hw byte register
    20.         DHW <Address, Hex> <Len, Dec>:
    21.                                  Dump memory helf-word or Read Hw helf-word register
    22.         DW <Address, Hex> <Len, Dec>:
    23.                                  Dump memory word or Read Hw word register
    24.         EW <Address, Hex> <Value, Hex>:
    25.                                  Write memory word or Write Hw word register
    26.                                  Can write more word at the same time
    27.                                  Ex: EW Address Value0 Value1
    28.         SPICTOOL <Mode, Dec> <BitMode, Dec>:
    29.                                  Mode = 1: Init SPIC;  BitMode: 0(One)/1(Dual)/2(Quad)
    30.                                  Mode = 2: Erase Chip
    31.  
    32. ----------------- COMMAND MODE END  ------------------
    33. <RTL8195A>
     
  2. pvvx

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

    Сообщения:
    8.687
    Симпатии:
    1.282
    Не вижу различий:
    JLINKARM_WriteU32($40006000, $100);
    JLINKARM_WriteU32($40006008, 1);
    JLINKARM_WriteU32($40006060, cmd);
    repeat
    JLINKARM_ReadMemU32($40006028, 1, @w, 0)
    until (w and 1) = 0;
    JLINKARM_WriteU32($40006008, 0);
    Далее, через паузу, даю Jlink-у reset и грузится прошивка. К модулю подключил Jlink-STLink (SWD только).
    Другой вариант:
    Код (Text):
    1. <RTL8710AF>SPICTOOL 1 2
    2. Initial Spi Flash Controller
    3. Initial Spic Four bit mode
    4. <RTL8710AF>EW 40006000 100 0 1
    5. addr: 0x40006000; value:0x100
    6. addr: 0x40006004; value:0x0
    7. addr: 0x40006008; value:0x1
    8. <RTL8710AF>EW 40006060 B1
    9. addr: 0x40006060; value:0xb1
    10. <пауза>
    11. <Jlink сброс...>
    12. =========================================================
    13.  
    14. ROM Version: 0.3
    15.  
    16. Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)
    17.  
    18. =========================================================
    19. Check boot type form eFuse
    20. SPI Initial
    21. Image1 length: 0x3a94, Image Addr: 0x10000bc8
    22. Image1 Validate OK, Going jump to Image1
    23. BOOT from Flash:YES
    24. ===== Enter Image 1 ====
    25. SDR Controller Init
    26. ....
    Ещё - там была ошибка (Initial Spic Four bit mode):
    Код (Text):
    1. <RTL8710AF>SPICTOOL 1 1
    2. Initial Spi Flash Controller
    3. Initial Spic Two bit mode
    4. <RTL8710AF>EW 40006000 100 0 1
    5. addr: 0x40006000; value:0x100
    6. addr: 0x40006004; value:0x0
    7. addr: 0x40006008; value:0x1
    8. <RTL8710AF>EW 40006060 B1
    9. addr: 0x40006060; value:0xb1
    10. <RTL8710AF>DW 98000000
    11. 98000000:    96969999    FC66CC3F    03CC33C0    6231DCE5
    12. <RTL8710AF>
     
    Последнее редактирование: 29 дек 2016
  3. sharikov

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

    Сообщения:
    564
    Симпатии:
    51
    Ограничение 16мег есть и в rtl, причем не факт что его получится обойти не порушив магию отображения в озу.
    Обращаться к области выше первых 16 метров можно вручную. Думаю будет работать вариант когда 16метров работают как обычно а выше "врукопашную". Для фс сойдет.
    С прошивкой проблем нет потому что во флэшере навороты не используются и выдача команды и адреса производится по 1 байту. Сейчас выдается 3 байта адреса, выдать 4 - это 1 строчка кода.

    spic на порту c работает ?
    по таблице он туда маппится.
    у меня есть в наличии флэшки MX66L51235 на 512мбит
     
  4. pvvx

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

    Сообщения:
    8.687
    Симпатии:
    1.282
    Не пробовал. Сча специально тестирую на RTL8711AM - там торчит.
    Это не проблема...
    В общем не работает по командам от reabane ни с каким модулем у меня. Его инициализация двух регистров для отсылки команды или неверна или ещё что-то.
    Смотрите SDK - там есть команды для больших SPI Flash. Всё давно сделано.
     
    Последнее редактирование: 29 дек 2016
  5. sharikov

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

    Сообщения:
    564
    Симпатии:
    51
    Там не два регистра инициализируется а намного больше. Два - только при отправке команды. Берите в моей репе работающий код и проверьте его в начале на RTL00
     
  6. pvvx

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

    Сообщения:
    8.687
    Симпатии:
    1.282
    Вы же сказали - достаточно записи одного байта - вот и изучаю. А теперь надо специальную прошивку делать? Всё управление flash есть в SDK и там для большинства типов уже всё описано. Надо всего собрать вызовы процедур и странслировать, а не бегать по помойкам :) или дублировать нерабочий код.
    Да, последних исходников hal_spi_flash_ram.c нет. Есть только прошлогодние, без быстрой записи и правок align (нечетных обращений Flash/ram и т.д.). Т.е. не хватает 4-х процедур вроде... Они добавлены после SDK 3.4. и находятся в либе. Заголовки даны.
    Чтение и запись через функции в них быстрее чем через spic (тестировал по счетчику тактов CPU - делал все сравнения от memcpy до одиночных чтений байта/слов/блоков). Но можно ещё ускорить - код там достаточно кривоватый - много лишнего.
    В mbed\targets\hal\rtl8195a\flash_api.c множественные недочеты. Надо доделывать. Часть уже исправил... Главный там - flash у вас в SDK от PINE работает на 1 бит, параметры калибровки на максимум скорости или из записи установок в flash не сохраняются в flash_t flashobj;, а место в структуре выделено. Когда доделаю - куну в свою кучу, если не забуду...
     
    Последнее редактирование: 29 дек 2016
  7. pvvx

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

    Сообщения:
    8.687
    Симпатии:
    1.282
    У меня пустая OTP на RTL8711AM
    Код (Text):
    1. # ATFO=0,64
    2. 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
    3. 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 ff ff ff ff ff ff
    На RTL8710AF:
    Код (Text):
    1. # ATFO=0,64
    2. 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
    3. 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 5e 4e 55
    Пока написал чтение OTP для трех типов flash: MXIC, EON, MICRON
    Для MXIC это примерно так:
    SpicTxCmdWithDataRtl8195A(FLASH_CMD_ENSO, 0, 0, flashobj.SpicInitPara); // enter secured OTP
    SpicUserReadRtl8195A(Length, address, data, flashobj.SpicInitPara.Mode.BitMode);
    SpicTxCmdWithDataRtl8195A(FLASH_CMD_EXSO, 0, 0, flashobj.SpicInitPara); // exit secured OTP
     
    Последнее редактирование: 30 дек 2016

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